[Gd-chatter] r11399 - branches/opendylan-melange/gtk-duim
andreas at gwydiondylan.org
andreas at gwydiondylan.org
Mon Jun 11 14:23:40 CEST 2007
Author: andreas
Date: Mon Jun 11 14:23:37 2007
New Revision: 11399
Modified:
branches/opendylan-melange/gtk-duim/gtk-mirror.dylan
Log:
job: fd
Some more locks (and so far pointless layout hackery)
Modified: branches/opendylan-melange/gtk-duim/gtk-mirror.dylan
==============================================================================
--- branches/opendylan-melange/gtk-duim/gtk-mirror.dylan (original)
+++ branches/opendylan-melange/gtk-duim/gtk-mirror.dylan Mon Jun 11 14:23:37 2007
@@ -197,7 +197,9 @@
define sealed method unmap-mirror
(_port :: <gtk-port>, sheet :: <sheet>, mirror :: <widget-mirror>) => ()
let widget = mirror-widget(mirror);
- gtk-widget-hide(widget)
+ with-gdk-lock
+ gtk-widget-hide(widget)
+ end
end method unmap-mirror;
define sealed method raise-mirror
@@ -208,20 +210,26 @@
ignoring("activate? keyword to raise-mirror")
end;
let widget = mirror-widget(mirror);
- gdk-window-raise(gtk-widget-get-window(widget))
+ with-gdk-lock
+ gdk-window-raise(gtk-widget-get-window(widget))
+ end
end method raise-mirror;
define sealed method lower-mirror
(_port :: <gtk-port>, sheet :: <sheet>, mirror :: <widget-mirror>) => ()
let widget = mirror-widget(mirror);
- gdk-window-lower(widget.gtk-widget-get-window)
+ with-gdk-lock
+ gdk-window-lower(widget.gtk-widget-get-window)
+ end
end method lower-mirror;
define sealed method mirror-visible?
(_port :: <gtk-port>, sheet :: <sheet>, mirror :: <widget-mirror>)
=> (visible? :: <boolean>)
let widget = mirror-widget(mirror);
- gdk-window-is-visible(widget.gtk-widget-get-window) == $false
+ with-gdk-lock
+ gdk-window-is-visible(widget.gtk-widget-get-window) == $false
+ end
end method mirror-visible?;
@@ -295,9 +303,9 @@
define method do-make-gtk-mirror
(sheet :: <mirrored-sheet-mixin>)
=> (mirror :: <widget-mirror>)
- let widget = gtk-fixed-new();
+ let widget = with-gdk-lock gtk-fixed-new() end;
//---*** We really want to switch this off entirely...
- gtk-container-set-resize-mode(widget, $GTK-RESIZE-QUEUE);
+ //gtk-container-set-resize-mode(widget, $GTK-RESIZE-QUEUE);
make(<fixed-container-mirror>,
widget: widget,
sheet: sheet)
@@ -306,9 +314,9 @@
define method do-make-gtk-mirror
(sheet :: <standard-repainting-mixin>)
=> (mirror :: <widget-mirror>)
- let widget = gtk-drawing-area-new();
+ let widget = with-gdk-lock gtk-drawing-area-new() end;
// gtk-drawing-area-size(widget, 200, 200);
- gtk-widget-set-size-request(widget, 200, 200);
+// gtk-widget-set-size-request(widget, 200, 200);
make(<drawing-area-mirror>,
widget: widget,
sheet: sheet);
@@ -346,7 +354,9 @@
next-method();
let widget = mirror-widget(mirror);
duim-g-signal-connect(sheet, #"expose-event") (widget, event) handle-gtk-expose-event(sheet, event) end;
- gtk-widget-add-events(widget, $GDK-EXPOSURE-MASK);
+ with-gdk-lock
+ gtk-widget-add-events(widget, $GDK-EXPOSURE-MASK);
+ end
end method install-event-handlers;
define method install-event-handlers
@@ -354,13 +364,15 @@
next-method();
let widget = mirror-widget(mirror);
duim-g-signal-connect(sheet, #"expose-event") (widget, event) handle-gtk-expose-event(sheet, event) end;
- gtk-widget-add-events(widget, $GDK-EXPOSURE-MASK);
duim-g-signal-connect(sheet, #"button-press-event") (widget, event) handle-gtk-button-event(sheet, event) end;
- gtk-widget-add-events(widget, $GDK-BUTTON-PRESS-MASK);
duim-g-signal-connect(sheet, #"button-release-event") (widget, event) handle-gtk-button-event(sheet, event) end;
- gtk-widget-add-events(widget, $GDK-BUTTON-RELEASE-MASK);
duim-g-signal-connect(sheet, #"motion-notify-event") (widget, event) handle-gtk-motion-event(sheet, event) end;
- gtk-widget-add-events(widget, logior($GDK-POINTER-MOTION-MASK, $GDK-POINTER-MOTION-HINT-MASK));
+ with-gdk-lock
+ gtk-widget-add-events(widget, $GDK-BUTTON-RELEASE-MASK);
+ gtk-widget-add-events(widget, $GDK-EXPOSURE-MASK);
+ gtk-widget-add-events(widget, $GDK-BUTTON-PRESS-MASK);
+ gtk-widget-add-events(widget, logior($GDK-POINTER-MOTION-MASK, $GDK-POINTER-MOTION-HINT-MASK));
+ end
end method install-event-handlers;
define sealed method handle-gtk-expose-event
@@ -386,18 +398,22 @@
(child :: <widget-mirror>, parent :: <fixed-container-mirror>)
=> ()
let (x, y) = sheet-native-edges(mirror-sheet(child));
- gtk-fixed-put(mirror-widget(parent),
- mirror-widget(child),
- x, y)
+ with-gdk-lock
+ gtk-fixed-put(mirror-widget(parent),
+ mirror-widget(child),
+ x, y)
+ end
end method set-mirror-parent;
define method set-mirror-parent
(child :: <widget-mirror>, parent :: <drawing-area-mirror>)
=> ()
let (x, y) = sheet-native-edges(mirror-sheet(child));
- gtk-fixed-put(mirror-widget(parent),
- mirror-widget(child),
- x, y)
+ with-gdk-lock
+ gtk-fixed-put(mirror-widget(parent),
+ mirror-widget(child),
+ x, y)
+ end
end method set-mirror-parent;
/*
@@ -413,9 +429,11 @@
(parent :: <fixed-container-mirror>, child :: <widget-mirror>,
x :: <integer>, y :: <integer>)
=> ()
- gtk-fixed-move(mirror-widget(parent),
- mirror-widget(child),
- x, y)
+ with-gdk-lock
+ gtk-fixed-move(mirror-widget(parent),
+ mirror-widget(child),
+ x, y)
+ end
end method move-mirror;
define method size-mirror
@@ -438,13 +456,16 @@
(mirror :: <widget-mirror>, width :: <integer>, height :: <integer>)
=> ()
let widget = mirror.mirror-widget;
+ gtk-debug("set-pirror-size for %= to %=x%=", mirror-widget(mirror), width, height);
let (left, top) = box-position(mirror.%region);
with-stack-structure (allocation :: <GtkAllocation>)
allocation.GdkRectangle-x := left;
allocation.GdkRectangle-y := top;
allocation.GdkRectangle-width := width;
allocation.GdkRectangle-height := height;
- gtk-widget-size-allocate(widget, allocation)
+ with-gdk-lock
+ gtk-widget-size-allocate(widget, allocation)
+ end
end
// ---*** debugging code
// let (new-width, new-height) = widget-size(widget);
@@ -457,5 +478,14 @@
(mirror :: <drawing-area-mirror>, width :: <integer>, height :: <integer>)
=> ()
// gtk-drawing-area-size(mirror-widget(mirror), width, height);
- gtk-widget-set-size-request(mirror-widget(mirror), width, height);
+ gtk-debug("set-pirror-size for %= to %=x%=", mirror-widget(mirror), width, height);
+ with-gdk-lock
+ gtk-widget-set-size-request(mirror-widget(mirror), width, height);
+ end
+end method set-mirror-size;
+
+define method set-mirror-size
+ (mirror :: <top-level-mirror>, width :: <integer>, height :: <integer>)
+ => ()
+// hack: ignore
end method set-mirror-size;
More information about the chatter
mailing list