Mailing List Archive

r19437 - in projects/haf/trunk/libmatchbox2: . matchbox/core
Author: aendrodi
Date: 2009-10-13 17:49:22 +0300 (Tue, 13 Oct 2009)
New Revision: 19437

Modified:
projects/haf/trunk/libmatchbox2/ChangeLog
projects/haf/trunk/libmatchbox2/matchbox/core/mb-window-manager.c
projects/haf/trunk/libmatchbox2/matchbox/core/mb-window-manager.h
projects/haf/trunk/libmatchbox2/matchbox/core/mb-wm-client-base.c
Log:
Don't set _NET_WORKAREA more often than necessary.
Don't set _MB_APP_WINDOW_LIST_STACKING at all.

* matchbox/core/mb-window-manager.h:
Added mb_wm_update_workarea().
* matchbox/core/mb-window-manager.c (mb_wm_update_root_win_rectangles):
Use it.
* matchbox/core/mb-wm-client-base.c (mb_wm_client_base_display_sync):
Likewise.


Modified: projects/haf/trunk/libmatchbox2/ChangeLog
===================================================================
--- projects/haf/trunk/libmatchbox2/ChangeLog 2009-10-13 14:24:26 UTC (rev 19436)
+++ projects/haf/trunk/libmatchbox2/ChangeLog 2009-10-13 14:49:22 UTC (rev 19437)
@@ -1,3 +1,15 @@
+2009-10-13 Adam Endrodi <adam.endrodi@blumsoft.eu>
+
+ Don't set _NET_WORKAREA more often than necessary.
+ Don't set _MB_APP_WINDOW_LIST_STACKING at all.
+
+ * matchbox/core/mb-window-manager.h:
+ Added mb_wm_update_workarea().
+ * matchbox/core/mb-window-manager.c (mb_wm_update_root_win_rectangles):
+ Use it.
+ * matchbox/core/mb-wm-client-base.c (mb_wm_client_base_display_sync):
+ Likewise.
+
2009-10-13 Kimmo Hämäläinen <kimmo.hamalainen@nokia.com>

Fixes: NB#124398 - Whole application should be closed with 'End

Modified: projects/haf/trunk/libmatchbox2/matchbox/core/mb-window-manager.c
===================================================================
--- projects/haf/trunk/libmatchbox2/matchbox/core/mb-window-manager.c 2009-10-13 14:24:26 UTC (rev 19436)
+++ projects/haf/trunk/libmatchbox2/matchbox/core/mb-window-manager.c 2009-10-13 14:49:22 UTC (rev 19437)
@@ -1145,7 +1145,6 @@
list_size = mb_wm_util_list_length (wm->clients);

wins = alloca (sizeof(Window) * list_size);
- app_wins = alloca (sizeof(Window) * list_size);

if ((wm->flags & MBWindowManagerFlagDesktop) && wm->desktop)
{
@@ -1158,32 +1157,11 @@
wins[cnt++] = c->window->xwindow;
}

- /* The MB_APP_WINDOW_LIST_STACKING list is used to construct
- * application switching menus -- we append anything we have
- * in client list (some of which might be hidden).
- * apps)
- */
- l = wm->clients;
- while (l)
- {
- c = l->data;
-
- if (MB_WM_IS_CLIENT_APP (c))
- app_wins[app_win_cnt++] = c->window->xwindow;
-
- l = l->next;
- }
-
XChangeProperty(wm->xdpy, root_win,
wm->atoms[MBWM_ATOM_NET_CLIENT_LIST_STACKING],
XA_WINDOW, 32, PropModeReplace,
(unsigned char *)wins, cnt);

- XChangeProperty(wm->xdpy, root_win,
- wm->atoms[MBWM_ATOM_MB_APP_WINDOW_LIST_STACKING],
- XA_WINDOW, 32, PropModeReplace,
- (unsigned char *)app_wins, app_win_cnt);
-
/* Update _NET_CLIENT_LIST but with 'age' order rather than stacking */
cnt = 0;
l = wm->clients;
@@ -1209,11 +1187,6 @@
NULL, 0);

XChangeProperty(wm->xdpy, root_win,
- wm->atoms[MBWM_ATOM_MB_APP_WINDOW_LIST_STACKING],
- XA_WINDOW, 32, PropModeReplace,
- NULL, 0);
-
- XChangeProperty(wm->xdpy, root_win,
wm->atoms[MBWM_ATOM_NET_CLIENT_LIST] ,
XA_WINDOW, 32, PropModeReplace,
NULL, 0);
@@ -1566,34 +1539,41 @@
}
}

+void
+mb_wm_update_workarea (MBWindowManager *wm, const MBGeometry *geo)
+{
+ static CARD32 val[4];
+
+ if (val[0] == geo->x && val[1] == geo->y
+ && val[2] == geo->width && val[3] == geo->height)
+ return;
+ val[0] = geo->x;
+ val[1] = geo->y;
+ val[2] = geo->width;
+ val[3] = geo->height;
+
+ XChangeProperty(wm->xdpy, wm->root_win->xwindow,
+ wm->atoms[MBWM_ATOM_NET_WORKAREA],
+ XA_CARDINAL, 32, PropModeReplace,
+ (unsigned char *)val, 4);
+}
+
static void
mb_wm_update_root_win_rectangles (MBWindowManager *wm)
{
Display * dpy = wm->xdpy;
Window root = wm->root_win->xwindow;
MBGeometry d_geom;
- CARD32 val[4];
+ CARD32 val[2];

mb_wm_get_desktop_geometry (wm, &d_geom);
+ mb_wm_update_workarea (wm, &d_geom);

- val[0] = d_geom.x;
- val[1] = d_geom.y;
- val[2] = d_geom.width;
- val[3] = d_geom.height;
-
- /* FIXME -- handle decorated desktops */
-
- XChangeProperty(dpy, root, wm->atoms[MBWM_ATOM_NET_WORKAREA],
- XA_CARDINAL, 32, PropModeReplace,
- (unsigned char *)val, 4);
-
- val[2] = wm->xdpy_width;
- val[3] = wm->xdpy_height;
-
+ val[0] = wm->xdpy_width;
+ val[1] = wm->xdpy_height;
XChangeProperty(dpy, root, wm->atoms[MBWM_ATOM_NET_DESKTOP_GEOMETRY],
XA_CARDINAL, 32, PropModeReplace,
- (unsigned char *)&val[2], 2);
-
+ (unsigned char *)val, 2);
}

int

Modified: projects/haf/trunk/libmatchbox2/matchbox/core/mb-window-manager.h
===================================================================
--- projects/haf/trunk/libmatchbox2/matchbox/core/mb-window-manager.h 2009-10-13 14:24:26 UTC (rev 19436)
+++ projects/haf/trunk/libmatchbox2/matchbox/core/mb-window-manager.h 2009-10-13 14:49:22 UTC (rev 19437)
@@ -238,6 +238,8 @@

void __attribute__ ((visibility("hidden")))
mb_wm_select_desktop (MBWindowManager *wm, int desktop);
+void __attribute__ ((visibility("hidden")))
+mb_wm_update_workarea (MBWindowManager *wm, const MBGeometry *geo);

void
mb_adjust_dialog_title_position (MBWindowManager *wm,

Modified: projects/haf/trunk/libmatchbox2/matchbox/core/mb-wm-client-base.c
===================================================================
--- projects/haf/trunk/libmatchbox2/matchbox/core/mb-wm-client-base.c 2009-10-13 14:24:26 UTC (rev 19436)
+++ projects/haf/trunk/libmatchbox2/matchbox/core/mb-wm-client-base.c 2009-10-13 14:49:22 UTC (rev 19437)
@@ -755,7 +755,8 @@

if (mb_wm_client_needs_decor_sync (client))
{
- unsigned int area[4];
+ MBGeometry area;
+
/*
* First, we set the base shape mask, if needed, so that individual
* decors can add themselves to it.
@@ -776,16 +777,12 @@
}
#endif

- area[0] = client->window->geometry.x - client->frame_geometry.x;
- area[1] = client->window->geometry.y - client->frame_geometry.y;
- area[2] = client->window->geometry.width;
- area[3] = client->window->geometry.height;
+ /* This is used to tell gtk where to place its precious comboboxes. */
+ area = client->window->geometry;
+ area.x -= client->frame_geometry.x;
+ area.y -= client->frame_geometry.y;
+ mb_wm_update_workarea (wm, &area);

- XChangeProperty(wm->xdpy, wm->root_win->xwindow,
- wm->atoms[MBWM_ATOM_NET_WORKAREA],
- XA_CARDINAL, 32, PropModeReplace,
- (unsigned char*)area, 4);
-
#if 0
/*
* I don't think this part is doing any good...

_______________________________________________
maemo-commits mailing list
maemo-commits@maemo.org
https://lists.maemo.org/mailman/listinfo/maemo-commits