Update of /project/mcclim/cvsroot/mcclim/Backends/gtkairo In directory clnet:/tmp/cvs-serv4825
Modified Files: BUGS event.lisp frame-manager.lisp medium.lisp Log Message: * medium.lisp (apply-flipping-ink): Unref the temporary pixmap ("oops").
* frame-manager.lisp (frob-stupid-type-spec): Allow specs like :VRACK-PANE.
* event.lisp (button-handler): Ungrab the pointer in button press events, allowing CLIM menu panes to works.
--- /project/mcclim/cvsroot/mcclim/Backends/gtkairo/BUGS 2006/04/30 10:31:15 1.6 +++ /project/mcclim/cvsroot/mcclim/Backends/gtkairo/BUGS 2006/05/01 21:21:38 1.7 @@ -10,7 +10,7 @@ (FIXED) 3. The text cursor does not show the correct horizontal position in climacs.
-4. +(FIXED) 4. Menus appear but do not really work. Worth fixing, even though we would rather want native menus in the long term.
@@ -89,3 +89,9 @@ design.lisp. See comment there. clim-fix tried to reinstate it, but that doesn't work for gsharp when drawing ellipses. Find out what this is all about. + +18. + Flipping ink optimization: As suggested by Gilbert, make the temporary + pixmap just large enough for the clipping region and the currently + visible part of a (scrolled) sheet. Right now we're copying the + entire window around, which seems excessive. --- /project/mcclim/cvsroot/mcclim/Backends/gtkairo/event.lisp 2006/04/23 17:36:28 1.4 +++ /project/mcclim/cvsroot/mcclim/Backends/gtkairo/event.lisp 2006/05/01 21:21:39 1.5 @@ -221,6 +221,9 @@ (define-signal button-handler (widget event) (cffi:with-foreign-slots ((type time button state x y x_root y_root) event gdkeventbutton) + (when (eql type GDK_BUTTON_PRESS) + ;; Hack alert: Menus don't work without this. + (gdk_pointer_ungrab GDK_CURRENT_TIME)) (enqueue (make-instance (if (eql type GDK_BUTTON_PRESS) 'pointer-button-press-event --- /project/mcclim/cvsroot/mcclim/Backends/gtkairo/frame-manager.lisp 2006/04/23 17:36:28 1.2 +++ /project/mcclim/cvsroot/mcclim/Backends/gtkairo/frame-manager.lisp 2006/05/01 21:21:39 1.3 @@ -31,7 +31,9 @@ (or (find-class (intern (concatenate 'string (symbol-name type) "-PANE") :climi) nil) - (find-class type)))) + (if (keywordp type) + (find-class (intern (symbol-name type) :climi)) + (find-class type)))))
(defmethod make-pane-1 ((fm gtkairo-frame-manager) (frame application-frame) type &rest initargs) --- /project/mcclim/cvsroot/mcclim/Backends/gtkairo/medium.lisp 2006/04/23 17:36:28 1.5 +++ /project/mcclim/cvsroot/mcclim/Backends/gtkairo/medium.lisp 2006/05/01 21:21:39 1.6 @@ -226,7 +226,9 @@ (cairo_surface_mark_dirty to-surface)) (cairo_destroy (cr medium)) (setf (cr medium) (flipping-original-cr medium)) - (setf (flipping-original-cr medium) nil)) + (setf (flipping-original-cr medium) nil) + (gdk_drawable_unref (flipping-pixmap medium)) + (setf (flipping-pixmap medium) nil))
(defmethod sync-ink (medium (design climi::standard-flipping-ink)) (setf (flipping-original-cr medium) (cr medium))