FSF GCC merge 02/23/03
[official-gcc.git] / libjava / gnu / awt / gtk / natGtkButtonPeer.cc
blob1608616f25e87a9ff72cbaa949c677f9c1930739
1 // Native Gtk AWT button code
3 #include <config.h>
5 #include <gcj/cni.h>
7 #include "gtkcommon.h"
8 #include <gnu/awt/gtk/GtkButtonPeer.h>
9 #include <java/awt/Button.h>
11 void
12 gnu::awt::gtk::GtkButtonPeer::setLabel (java::lang::String *label)
14 _Jv_GdkThreadLock sync;
15 jsize len = 0;
16 if (label)
17 len = JvGetStringUTFLength (label);
18 char buf[len + 1];
19 // FIXME: this can allocate an unbounded amount. Should use heap
20 // even though it is slower.
21 if (label)
22 JvGetStringUTFRegion (label, 0, len, buf);
23 buf[len] = '\0';
24 // The button child is a label.
25 GtkBin *bin = GTK_BIN (ptr);
26 gtk_label_set_text (GTK_LABEL (bin->child), buf);
29 void
30 gnu::awt::gtk::GtkButtonPeer::create ()
32 if (! ptr)
34 _Jv_GdkThreadLock sync;
35 // This is a little inefficient.
36 ptr = (gnu::gcj::RawData *) gtk_button_new_with_label ("");
38 using namespace ::java::awt;
39 Button *button = reinterpret_cast<Button *> (awtComponent);
40 setLabel (button->getLabel ());
43 gnu::awt::gtk::GtkComponentPeer::create ();
46 // void
47 // gnu::awt::gtk::GtkButtonPeer::clicked (::gnu::gcj::RawData *button_wrap,
48 // ::gnu::gcj::RawData *peer_wrap)
49 // {
50 // GtkButtonPeer *button = reinterpret_cast<GtkButtonPeer *> (peer_wrap);
52 // }