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