]> code.ossystems Code Review - openembedded-core.git/commitdiff
matchbox-desktop: add configure event handler to fix bug 658
authorYu Ke <ke.yu@intel.com>
Sun, 6 Mar 2011 08:18:30 +0000 (16:18 +0800)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Wed, 16 Mar 2011 13:32:58 +0000 (13:32 +0000)
Bug658 - "the bottom icons on Applications and All screen are cut-off in qemu"

the reason is that desktop work area is not resized after window manager
decoration. so add configure event handler to resize the desktop work area
can fix this issue.

[YOCTO #658]

Signed-off-by: Yu Ke <ke.yu@intel.com>
meta/recipes-sato/matchbox-desktop/files/window-resize-fix.patch [new file with mode: 0644]
meta/recipes-sato/matchbox-desktop/matchbox-desktop_git.bb

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 (file)
index 0000000..87fbd50
--- /dev/null
@@ -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
index 9e95df4e885df4f7d793c11d0a73beb26d06ce5f..4a80ff92bc106fee10cd0d18b5e2c5876a7c19d8 100644 (file)
@@ -11,10 +11,11 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
 DEPENDS = "gtk+ startup-notification dbus"
 SECTION = "x11/wm"
 PV = "2.0+git${SRCPV}"
-PR = "r0"
+PR = "r1"
 
 SRC_URI = "git://git.pokylinux.org/${BPN}-2;protocol=git \
-           file://dso_linking_change_build_fix.patch"
+           file://dso_linking_change_build_fix.patch \
+           file://window-resize-fix.patch"
 
 EXTRA_OECONF = "--enable-startup-notification --with-dbus"