Hi,

gtk_range_set_range doesn't allow setting min == max. But Scrollbar does
allow that. The following patch makes sure that we set max to be bigger
than min and make sure that the page_size is at least max - min so to
the user it just looks like a scrollbar that cannot be adjusted (this
works because the actual max value of the scrollbar is max - page_size).

2006-02-09  Mark Wielaard  <[EMAIL PROTECTED]>

    * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkScrollbarPeer.c
    (Java_gnu_java_awt_peer_gtk_GtkScrollbarPeer_create): Make sure max is
    creater than min, adjusting page_size if necessary.
    (Java_gnu_java_awt_peer_gtk_GtkScrollbarPeer_setValues): Likewise.

Does this look sane?

Cheers,

Mark
? native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkPixbufDecoder.c.unlocked
Index: native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkScrollbarPeer.c
===================================================================
RCS file: /cvsroot/classpath/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkScrollbarPeer.c,v
retrieving revision 1.2
diff -u -r1.2 gnu_java_awt_peer_gtk_GtkScrollbarPeer.c
--- native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkScrollbarPeer.c	14 Jul 2005 22:07:02 -0000	1.2
+++ native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkScrollbarPeer.c	9 Feb 2006 12:37:22 -0000
@@ -86,6 +86,14 @@
 
   gdk_threads_enter ();
 
+  /* A little hack because gtk_range_set_range() doesn't allow min == max. */
+  if (min == max)
+    {
+      if (visible_amount == 0)
+	visible_amount = 1;
+      max++;
+    }
+
   adj = gtk_adjustment_new ((gdouble) value,
                             (gdouble) min,
                             (gdouble) max,
@@ -181,6 +189,14 @@
 
   gdk_threads_enter ();
 
+  /* A little hack because gtk_range_set_range() doesn't allow min == max. */
+  if (min == max)
+    {
+      if (visible == 0)
+	visible = 1;
+      max++;
+    }
+
   adj = gtk_range_get_adjustment (GTK_RANGE (ptr));
   adj->page_size = (gdouble) visible;
 

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to