[maemo-commits] [maemo-commits] r19437 - in projects/haf/trunk/libmatchbox2: . matchbox/core
From: subversion at stage.maemo.org subversion at stage.maemo.orgDate: Tue Oct 13 17:49:46 EEST 2009
- Previous message: [maemo-commits] r19436 - projects/haf/trunk/clutter0.8/debian
- Next message: [maemo-commits] r19438 - projects/haf/trunk/libmatchbox2/matchbox/core
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
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 at 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 at 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...
- Previous message: [maemo-commits] r19436 - projects/haf/trunk/clutter0.8/debian
- Next message: [maemo-commits] r19438 - projects/haf/trunk/libmatchbox2/matchbox/core
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]