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;
signature.asc
Description: This is a digitally signed message part
