[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[cp-patches] GTK button peer clicked
From: |
Thomas Fitzsimmons |
Subject: |
[cp-patches] GTK button peer clicked |
Date: |
Mon, 15 Aug 2005 00:18:00 -0400 |
Hi,
I committed this to mainline. It changes how a button click is handled
by the GTK peers. Now an ActionEvent is posted in response to a
GtkButton's "clicked" signal.
Tom
2005-08-15 Thomas Fitzsimmons <address@hidden>
* gnu/java/awt/peer/gtk/GtkButtonPeer.java (handleEvent): Remove
method.
(postActionEvent): New method.
* native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c:
Rename state_to_awt_mods cp_gtk_state_to_awt_mods.
* native/jni/gtk-peer/gtkpeer.h: Declare cp_gtk_state_to_awt_mods.
* native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkButtonPeer.c
(clicked_cb): New function.
(connectSignals): Connect clicked_cb callback to "clicked" signal.
Index: gnu/java/awt/peer/gtk/GtkButtonPeer.java
===================================================================
RCS file:
/cvsroot/classpath/classpath/gnu/java/awt/peer/gtk/GtkButtonPeer.java,v
retrieving revision 1.38
diff -u -u -r1.38 GtkButtonPeer.java
--- gnu/java/awt/peer/gtk/GtkButtonPeer.java 12 Aug 2005 22:49:41 -0000
1.38
+++ gnu/java/awt/peer/gtk/GtkButtonPeer.java 15 Aug 2005 04:07:30 -0000
@@ -42,6 +42,7 @@
import java.awt.Button;
import java.awt.Component;
import java.awt.Point;
+import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.awt.peer.ButtonPeer;
@@ -84,32 +85,11 @@
gtkSetLabel(label);
}
- public void handleEvent (AWTEvent e)
+ void postActionEvent (int mods)
{
- if (e.getID () == MouseEvent.MOUSE_RELEASED && isEnabled ())
- {
- MouseEvent me = (MouseEvent) e;
- Point p = me.getPoint();
- p.translate(((Component) me.getSource()).getX(),
- ((Component) me.getSource()).getY());
- if (!me.isConsumed ()
- && (me.getModifiersEx () & MouseEvent.BUTTON1_DOWN_MASK) != 0
- && awtComponent.getBounds().contains(p))
- postActionEvent (((Button) awtComponent).getActionCommand (),
- me.getModifiersEx ());
- }
-
- if (e.getID () == KeyEvent.KEY_PRESSED)
- {
- KeyEvent ke = (KeyEvent) e;
- if (!ke.isConsumed () && ke.getKeyCode () == KeyEvent.VK_SPACE)
- {
- postActionEvent (((Button) awtComponent).getActionCommand (),
- ke.getModifiersEx ());
- gtkActivate ();
- }
- }
-
- super.handleEvent (e);
+ q().postEvent (new ActionEvent (awtWidget,
+ ActionEvent.ACTION_PERFORMED,
+ ((Button) awtComponent).getActionCommand (),
+ mods));
}
}
Index: native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c
===================================================================
RCS file:
/cvsroot/classpath/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c,v
retrieving revision 1.48
diff -u -u -r1.48 gnu_java_awt_peer_gtk_GtkComponentPeer.c
--- native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c 14 Jul
2005 22:07:02 -0000 1.48
+++ native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c 15 Aug
2005 04:07:30 -0000
@@ -145,8 +145,8 @@
return 0;
}
-static jint
-state_to_awt_mods (guint state)
+jint
+cp_gtk_state_to_awt_mods (guint state)
{
jint result = 0;
@@ -946,7 +946,7 @@
postMouseEventID,
AWT_MOUSE_PRESSED,
(jlong)event->time,
- state_to_awt_mods (event->state)
+ cp_gtk_state_to_awt_mods (event->state)
| button_to_awt_mods (event->button),
(jint)event->x,
(jint)event->y,
@@ -974,7 +974,7 @@
postMouseEventID,
AWT_MOUSE_RELEASED,
(jlong)event->time,
- state_to_awt_mods (event->state)
+ cp_gtk_state_to_awt_mods (event->state)
| button_to_awt_mods (event->button),
(jint)event->x,
(jint)event->y,
@@ -999,7 +999,7 @@
postMouseEventID,
AWT_MOUSE_CLICKED,
(jlong)event->time,
- state_to_awt_mods (event->state)
+ cp_gtk_state_to_awt_mods (event->state)
| button_to_awt_mods (event->button),
(jint)event->x,
(jint)event->y,
@@ -1045,7 +1045,7 @@
(*cp_gtk_gdk_env())->CallVoidMethod (cp_gtk_gdk_env(), peer,
postMouseEventID,
AWT_MOUSE_MOVED,
(jlong)event->time,
- state_to_awt_mods (event->state),
+ cp_gtk_state_to_awt_mods (event->state),
(jint)event->x,
(jint)event->y,
0,
Index: native/jni/gtk-peer/gtkpeer.h
===================================================================
RCS file: /cvsroot/classpath/classpath/native/jni/gtk-peer/gtkpeer.h,v
retrieving revision 1.36
diff -u -u -r1.36 gtkpeer.h
--- native/jni/gtk-peer/gtkpeer.h 26 Jul 2005 20:25:13 -0000 1.36
+++ native/jni/gtk-peer/gtkpeer.h 15 Aug 2005 04:07:30 -0000
@@ -163,8 +163,9 @@
GtkWidget **widget;
};
-/* Keycode helpers */
+/* Constant conversion helpers */
guint cp_gtk_awt_keycode_to_keysym (jint keyCode, jint keyLocation);
+jint cp_gtk_state_to_awt_mods (guint state);
/* Image helpers */
GdkPixbuf *cp_gtk_image_get_pixbuf (JNIEnv *env, jobject obj);
Index: native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkButtonPeer.c
===================================================================
RCS file:
/cvsroot/classpath/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkButtonPeer.c,v
retrieving revision 1.27
diff -u -u -r1.27 gnu_java_awt_peer_gtk_GtkButtonPeer.c
--- native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkButtonPeer.c 12 Aug 2005
22:49:42 -0000 1.27
+++ native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkButtonPeer.c 15 Aug 2005
04:07:30 -0000
@@ -41,7 +41,8 @@
static jmethodID beginNativeRepaintID;
static jmethodID endNativeRepaintID;
-
+static jmethodID postActionEventID;
+
void
cp_gtk_button_init_jni (void)
{
@@ -56,11 +57,18 @@
endNativeRepaintID = (*cp_gtk_gdk_env())->GetMethodID (cp_gtk_gdk_env(),
gtkbuttonpeer,
"endNativeRepaint", "()V");
+
+ postActionEventID = (*cp_gtk_gdk_env())->GetMethodID (cp_gtk_gdk_env(),
+ gtkbuttonpeer,
+ "postActionEvent", "(I)V");
}
static void block_expose_event_cb (GtkWidget *widget,
jobject peer);
+static void clicked_cb (GtkButton *button,
+ jobject peer);
+
JNIEXPORT void JNICALL
Java_gnu_java_awt_peer_gtk_GtkButtonPeer_create
(JNIEnv *env, jobject obj, jstring label)
@@ -158,6 +166,9 @@
g_signal_connect_after (G_OBJECT (button), "released",
G_CALLBACK (block_expose_event_cb), *gref);
+ g_signal_connect (G_OBJECT (button), "clicked",
+ G_CALLBACK (clicked_cb), *gref);
+
/* Component signals */
cp_gtk_component_connect_signals (G_OBJECT (button), gref);
@@ -385,4 +396,20 @@
endNativeRepaintID);
gdk_threads_enter ();
+}
+
+static void
+clicked_cb (GtkButton* button __attribute__((unused)),
+ jobject peer)
+{
+ GdkEventButton* event;
+
+ event = (GdkEventButton*) gtk_get_current_event ();
+ g_assert (event);
+
+ (*cp_gtk_gdk_env())->CallVoidMethod (cp_gtk_gdk_env(), peer,
+ postActionEventID,
+ cp_gtk_state_to_awt_mods (event->state));
+
+ gdk_event_free ((GdkEvent*) event);
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [cp-patches] GTK button peer clicked,
Thomas Fitzsimmons <=