Do not require a resizee for make-fix-resizer.
authorMatt Birkholz <matt@birkholz.chandler.az.us>
Fri, 30 Sep 2011 01:29:04 +0000 (18:29 -0700)
committerMatt Birkholz <matt@birkholz.chandler.az.us>
Fri, 30 Sep 2011 01:29:04 +0000 (18:29 -0700)
Allow the resizee slot to be #f, at least initially, for easier
"reverse" packing as in a <gtk-screen>'s hboxes.

src/gtk/fix-demo.scm
src/gtk/fix-layout.scm
src/gtk/gtk.pkg

index e17d3b3725e00f15df4ba2e62c53ee60f1d8167e..28676cdbfcbfa3fd3e2c8b36edf0409b01c5f5b3 100644 (file)
@@ -34,7 +34,7 @@ USA.
         (scroller2 (gtk-scrolled-window-new))
         (layout1 (make-demo-layout 200 200))
         (layout2 (make-demo-layout 200 200))
-        (resizer (make-fix-resizer layout1 -1 10)))
+        (resizer (make-fix-resizer -1 10)))
     (gtk-window-set-opacity window 0.90)
     (gtk-window-set-title window "fix-layout-demo")
     (gtk-window-set-geometry-hints window window 'min-width 10 'min-height 10)
@@ -43,6 +43,7 @@ USA.
     (gtk-container-set-border-width window 10)
     (gtk-container-add scroller1 layout1)
     (gtk-box-pack-start vbox scroller1 #t #t 0)
+    (set-fix-resizer-resizee! resizer layout1)
     (gtk-box-pack-start vbox resizer #f #f 0)
     (gtk-container-add scroller2 layout2)
     (gtk-box-pack-start vbox scroller2 #t #t 0)
index 9196a8e4813de04be5f3b896128c2b7e337d3c44..fb867ccf1328e03c21d3591a558c588affcbe8dd 100644 (file)
@@ -716,14 +716,14 @@ USA.
 ;;; This is a simple <fix-widget> that handles expose events by
 ;;; calling gtk_paint_handle().
 
-(define-class (<fix-resizer> (constructor (resizee) (width height)))
+(define-class (<fix-resizer> (constructor () (width height)))
     (<fix-widget>)
 
   ;; Inferred from aspect ratio (for now?).
   (stack-vertical? define standard)
 
   ;; The widget that is above or left of this widget.
-  (resizee define accessor)
+  (resizee define standard initial-value #f)
 
   ;; While a gtk_grab_add is in effect, this is the starting position
   ;; of the pointer (in parent coords!) and the starting size of the
@@ -789,17 +789,18 @@ USA.
 (define (resizer-press-handler resizer type button modifiers x y)
 ;;;  (declare (ignore type)) ;; 'press
   (%trace ";resizer-press-handler "type" "button" "modifiers" "x","y"\n")
-  (if (eq? button 1)
-      (let* ((geom (fix-widget-geometry resizer))
-            (x-parent (fix:+ x (fix-rect-x geom)))
-            (y-parent (fix:+ y (fix-rect-y geom)))
-            (width.height (gtk-widget-get-size resizee)))
-       (%trace ";  drag start"
-               " at "x-parent","y-parent
-               " with "(car width.height)"x"(cdr width.height)"!\n")
-       (set-fix-resizer-drag-start! resizer (cons (cons x-parent y-parent)
-                                                  width.height))
-       (C-call "gtk_grab_add" (gobject-alien resizer)))))
+  (let ((resizee (fix-resizer-resizee resizer)))
+    (if (and resizee (eq? button 1))
+       (let* ((geom (fix-widget-geometry resizer))
+              (x-parent (fix:+ x (fix-rect-x geom)))
+              (y-parent (fix:+ y (fix-rect-y geom)))
+              (width.height (gtk-widget-get-size resizee)))
+         (%trace ";  drag start"
+                 " at "x-parent","y-parent
+                 " with "(car width.height)"x"(cdr width.height)"!\n")
+         (set-fix-resizer-drag-start! resizer (cons (cons x-parent y-parent)
+                                                    width.height))
+         (C-call "gtk_grab_add" (gobject-alien resizer))))))
 
 (define (resizer-release-handler resizer type button modifiers x y)
 ;;;  (declare (ignore type)) ;; 'release
index 24b3031443f0e559680e01b0b1215082e3b52622..2c32b5a7f906aa89c5f2544818650885a541a43b 100644 (file)
@@ -243,8 +243,9 @@ USA.
          fix-layout-scroll-step set-fix-layout-scroll-step!
          fix-layout-scroll-to! fix-layout-scroll-nw!
 
-         <fix-resizer>
+         <fix-resizer> fix-resizer?
          make-fix-resizer
+         fix-resizer-resizee set-fix-resizer-resizee!
 
          <fix-drawing> guarantee-fix-drawing
          make-fix-drawing fix-drawing-widgets