summaryrefslogtreecommitdiffstats
path: root/meta/recipes-sato/matchbox-desktop/files/window-resize-fix.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-sato/matchbox-desktop/files/window-resize-fix.patch')
-rw-r--r--meta/recipes-sato/matchbox-desktop/files/window-resize-fix.patch48
1 files changed, 48 insertions, 0 deletions
diff --git a/meta/recipes-sato/matchbox-desktop/files/window-resize-fix.patch b/meta/recipes-sato/matchbox-desktop/files/window-resize-fix.patch
new file mode 100644
index 0000000000..87fbd50205
--- /dev/null
+++ b/meta/recipes-sato/matchbox-desktop/files/window-resize-fix.patch
@@ -0,0 +1,48 @@
+commit 2ef9a98cbda46b5a52e20ce292eebd6ba1f3c3a8
+Author: Yu Ke <ke.yu@intel.com>
+Date: Sun Mar 6 17:58:45 2011 +0800
+
+ desktop: Add configure event handler for desktop resize
+
+ desktop need to resize its work area when window manager decorate its
+ window. Originally it is done by the hook in root window PropertyNotify
+ event handler, i.e. net_workarea_changed () routine. However, for unknown
+ reason, the PropertyNotify event does not deliver to the root window,
+ thus this routine does not work.
+
+ this patch fix this issue from another side. Since window manager will also
+ send configure event to desktop window after decoration, it also works to do
+ it in configure event handler.
+
+ Signed-off-by: Yu Ke <ke.yu@intel.com>
+
+diff --git a/src/desktop.c b/src/desktop.c
+index d4fc2fb..5aa2cfc 100644
+--- a/src/desktop.c
++++ b/src/desktop.c
+@@ -130,6 +130,15 @@ workarea_changed (int x, int y, int w, int h)
+ gtk_fixed_move (GTK_FIXED (fixed), box, x, y);
+ }
+
++static gboolean
++desktop_configure_callback(GtkWindow *window,
++ GdkEvent *event, gpointer data)
++{
++ gtk_widget_set_size_request (box, event->configure.width, event->configure.height);
++ gtk_widget_queue_resize (box);
++ return FALSE;
++}
++
+ GtkWidget *
+ create_desktop (void)
+ {
+@@ -176,6 +185,9 @@ create_desktop (void)
+ /* Set a sane default in case there is no work area defined yet */
+ workarea_changed (0, 0, screen_w, screen_h);
+
++ g_signal_connect(G_OBJECT(window), "configure-event",
++ G_CALLBACK(desktop_configure_callback), NULL);
++
+ #ifdef STANDALONE
+ /* TODO: fake workarea_changed calls on window resize */
+ #else