This is the mail archive of the java-patches@gcc.gnu.org mailing list for the Java project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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 ();
 }


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]