blob: 1608616f25e87a9ff72cbaa949c677f9c1930739 [file] [log] [blame]
// Native Gtk AWT button code
#include <config.h>
#include <gcj/cni.h>
#include "gtkcommon.h"
#include <gnu/awt/gtk/GtkButtonPeer.h>
#include <java/awt/Button.h>
void
gnu::awt::gtk::GtkButtonPeer::setLabel (java::lang::String *label)
{
_Jv_GdkThreadLock sync;
jsize len = 0;
if (label)
len = JvGetStringUTFLength (label);
char buf[len + 1];
// FIXME: this can allocate an unbounded amount. Should use heap
// even though it is slower.
if (label)
JvGetStringUTFRegion (label, 0, len, buf);
buf[len] = '\0';
// The button child is a label.
GtkBin *bin = GTK_BIN (ptr);
gtk_label_set_text (GTK_LABEL (bin->child), buf);
}
void
gnu::awt::gtk::GtkButtonPeer::create ()
{
if (! ptr)
{
_Jv_GdkThreadLock sync;
// This is a little inefficient.
ptr = (gnu::gcj::RawData *) gtk_button_new_with_label ("");
using namespace ::java::awt;
Button *button = reinterpret_cast<Button *> (awtComponent);
setLabel (button->getLabel ());
}
gnu::awt::gtk::GtkComponentPeer::create ();
}
// void
// gnu::awt::gtk::GtkButtonPeer::clicked (::gnu::gcj::RawData *button_wrap,
// ::gnu::gcj::RawData *peer_wrap)
// {
// GtkButtonPeer *button = reinterpret_cast<GtkButtonPeer *> (peer_wrap);
// }