This is the mail archive of the
java-patches@gcc.gnu.org
mailing list for the Java project.
fixup for gnu_java_awt_peer_gtk_GtkScrollBarPeer.c
- From: graydon hoare <graydon at redhat dot com>
- To: java-patches at gcc dot gnu dot org
- Date: 16 Jul 2003 16:10:24 -0400
- Subject: fixup for gnu_java_awt_peer_gtk_GtkScrollBarPeer.c
hi,
the following patch makes the GTK 2.0 scrollbar peer come to life. the
problems with it previously were:
- missed event-code cases
- use of a signal called "move_slider" instead of "move-slider"
- use of the "move-slider" signal altogether; it's emitted by (or
perhaps for?) keyboard navigation only, according to the GTK docs.
the "value-changed" signal is emitted by mousey activity
-graydon
--- gnu_java_awt_peer_gtk_GtkScrollBarPeer.c.~1.3.~ 2003-06-30 19:53:29.000000000 -0400
+++ gnu_java_awt_peer_gtk_GtkScrollBarPeer.c 2003-07-16 15:59:57.000000000 -0400
@@ -46,6 +46,17 @@
};
static void
+post_change_event (GtkRange *range,
+ struct range_scrollbar *rs)
+{
+ GtkAdjustment *adj;
+ adj = gtk_range_get_adjustment (range);
+ (*gdk_env)->CallVoidMethod (gdk_env, *(rs->scrollbar), postAdjustmentEventID,
+ AWT_ADJUSTMENT_TRACK, (jint) adj->value);
+
+}
+
+static void
post_adjustment_event (GtkRange *range, GtkScrollType scroll,
struct range_scrollbar *rs)
{
@@ -56,15 +67,23 @@
switch (scroll)
{
+ case GTK_SCROLL_STEP_UP:
+ case GTK_SCROLL_STEP_RIGHT:
case GTK_SCROLL_STEP_FORWARD:
type = AWT_ADJUSTMENT_UNIT_INCREMENT;
break;
+ case GTK_SCROLL_STEP_DOWN:
+ case GTK_SCROLL_STEP_LEFT:
case GTK_SCROLL_STEP_BACKWARD:
type = AWT_ADJUSTMENT_UNIT_DECREMENT;
break;
+ case GTK_SCROLL_PAGE_UP:
+ case GTK_SCROLL_PAGE_RIGHT:
case GTK_SCROLL_PAGE_FORWARD:
type = AWT_ADJUSTMENT_BLOCK_INCREMENT;
break;
+ case GTK_SCROLL_PAGE_DOWN:
+ case GTK_SCROLL_PAGE_LEFT:
case GTK_SCROLL_PAGE_BACKWARD:
type = AWT_ADJUSTMENT_BLOCK_DECREMENT;
break;
@@ -118,9 +137,14 @@
rs->scrollbar = (jobject *) malloc (sizeof (jobject));
*(rs->scrollbar) = (*env)->NewGlobalRef (env, obj);
gtk_signal_connect (GTK_OBJECT (GTK_RANGE (ptr)),
- "move_slider",
+ "move-slider",
GTK_SIGNAL_FUNC (post_adjustment_event), rs);
+ gtk_signal_connect (GTK_OBJECT (GTK_RANGE (ptr)),
+ "value-changed",
+ GTK_SIGNAL_FUNC (post_change_event), rs);
+
+
connect_awt_hook (env, obj, 1, GTK_SCROLLBAR (ptr)->range);
gdk_threads_leave ();
}