[mcclim-cvs] CVS mcclim/Backends/gtkairo

dlichteblau dlichteblau at common-lisp.net
Mon May 1 21:21:39 UTC 2006


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))




More information about the Mcclim-cvs mailing list