[Xfce4-commits] r22847 - xfwm4/trunk/src
Olivier Fourdan
olivier at xfce.org
Mon Aug 21 20:13:09 UTC 2006
Author: olivier
Date: 2006-08-21 20:13:05 +0000 (Mon, 21 Aug 2006)
New Revision: 22847
Modified:
xfwm4/trunk/src/client.c
xfwm4/trunk/src/events.c
xfwm4/trunk/src/focus.c
xfwm4/trunk/src/frame.c
xfwm4/trunk/src/frame.h
xfwm4/trunk/src/mypixmap.c
xfwm4/trunk/src/netwm.c
Log:
Fix frame repaint error caused by the removal of pixmap caching (Bug #2202), fix an issue with themes that miss that menu button.
Modified: xfwm4/trunk/src/client.c
===================================================================
--- xfwm4/trunk/src/client.c 2006-08-21 14:52:02 UTC (rev 22846)
+++ xfwm4/trunk/src/client.c 2006-08-21 20:13:05 UTC (rev 22847)
@@ -268,7 +268,7 @@
}
if (mask & UPDATE_FRAME)
{
- frameDraw (c, TRUE, FALSE);
+ frameDraw (c, TRUE);
}
}
myScreenUngrabPointer (screen_info, CurrentTime);
@@ -392,7 +392,7 @@
if (c != clientGetFocus ())
{
FLAG_TOGGLE (c->xfwm_flags, XFWM_FLAG_SEEN_ACTIVE);
- frameDraw (c, FALSE, FALSE);
+ frameDraw (c, FALSE);
}
return (TRUE);
}
@@ -408,7 +408,7 @@
if (c->blink_timeout_id)
{
g_source_remove (c->blink_timeout_id);
- frameDraw (c, FALSE, FALSE);
+ frameDraw (c, FALSE);
}
FLAG_UNSET (c->wm_flags, WM_FLAG_URGENT);
@@ -428,7 +428,7 @@
&& (c != clientGetFocus ()))
{
FLAG_UNSET (c->xfwm_flags, XFWM_FLAG_SEEN_ACTIVE);
- frameDraw (c, FALSE, FALSE);
+ frameDraw (c, FALSE);
}
}
@@ -828,7 +828,7 @@
if (resized || (flags & CFG_FORCE_REDRAW))
{
- frameDraw (c, (flags & CFG_FORCE_REDRAW), TRUE);
+ frameDraw (c, (flags & CFG_FORCE_REDRAW));
}
if ((flags & CFG_NOTIFY) ||
@@ -1107,7 +1107,7 @@
}
else if (FLAG_TEST (c->xfwm_flags, XFWM_FLAG_IS_RESIZABLE) != previous_value)
{
- frameDraw (c, TRUE, FALSE);
+ frameDraw (c, TRUE);
}
}
else
@@ -1350,7 +1350,7 @@
{
clientUnstick (c, TRUE);
}
- frameDraw (c, FALSE, FALSE);
+ frameDraw (c, FALSE);
}
}
else if ((action & WIN_STATE_MAXIMIZED)
@@ -1431,14 +1431,17 @@
size = MIN (screen_info->buttons[MENU_BUTTON][ACTIVE].width,
screen_info->buttons[MENU_BUTTON][ACTIVE].height);
-
- icon = getAppIcon (display_info, c->window, size, size);
- xfwmPixmapRenderGdkPixbuf (&c->appmenu[ACTIVE], icon);
- xfwmPixmapRenderGdkPixbuf (&c->appmenu[INACTIVE], icon);
- xfwmPixmapRenderGdkPixbuf (&c->appmenu[PRESSED], icon);
+ if (size > 1)
+ {
+ icon = getAppIcon (display_info, c->window, size, size);
- g_object_unref (icon);
+ xfwmPixmapRenderGdkPixbuf (&c->appmenu[ACTIVE], icon);
+ xfwmPixmapRenderGdkPixbuf (&c->appmenu[INACTIVE], icon);
+ xfwmPixmapRenderGdkPixbuf (&c->appmenu[PRESSED], icon);
+
+ g_object_unref (icon);
+ }
}
Client *
@@ -2732,7 +2735,7 @@
c->win_state &= ~WIN_STATE_MAXIMIZED;
FLAG_UNSET (c->flags, CLIENT_FLAG_MAXIMIZED);
- frameDraw (c, FALSE, FALSE);
+ frameDraw (c, FALSE);
clientSetNetState (c);
}
@@ -4557,12 +4560,12 @@
if (xevent->type == EnterNotify)
{
c->button_pressed[b] = TRUE;
- frameDraw (c, FALSE, FALSE);
+ frameDraw (c, FALSE);
}
else if (xevent->type == LeaveNotify)
{
c->button_pressed[b] = FALSE;
- frameDraw (c, FALSE, FALSE);
+ frameDraw (c, FALSE);
}
else if (xevent->type == ButtonRelease)
{
@@ -4633,7 +4636,7 @@
passdata.b = b;
c->button_pressed[b] = TRUE;
- frameDraw (c, FALSE, FALSE);
+ frameDraw (c, FALSE);
TRACE ("entering button press loop");
eventFilterPush (display_info->xfilter, clientButtonPress_event_filter, &passdata);
@@ -4683,7 +4686,7 @@
default:
break;
}
- frameDraw (c, FALSE, FALSE);
+ frameDraw (c, FALSE);
}
}
Modified: xfwm4/trunk/src/events.c
===================================================================
--- xfwm4/trunk/src/events.c 2006-08-21 14:52:02 UTC (rev 22846)
+++ xfwm4/trunk/src/events.c 2006-08-21 20:13:05 UTC (rev 22847)
@@ -410,7 +410,7 @@
if (CLIENT_CAN_STICK_WINDOW(c))
{
clientToggleSticky (c, TRUE);
- frameDraw (c, FALSE, FALSE);
+ frameDraw (c, FALSE);
}
break;
case KEY_RAISE_WINDOW:
@@ -1730,7 +1730,7 @@
}
getWindowName (display_info, c->window, &c->name);
FLAG_SET (c->flags, CLIENT_FLAG_NAME_CHANGED);
- frameDraw (c, TRUE, FALSE);
+ frameDraw (c, TRUE);
}
else if (ev->atom == display_info->atoms[MOTIF_WM_HINTS])
{
@@ -1750,7 +1750,7 @@
if ((c->wmhints->flags & IconPixmapHint) && (screen_info->params->show_app_icon))
{
clientUpdateIcon (c);
- frameDraw (c, TRUE, FALSE);
+ frameDraw (c, TRUE);
}
if (HINTS_ACCEPT_INPUT (c->wmhints))
{
@@ -1789,7 +1789,7 @@
{
TRACE ("client \"%s\" (0x%lx) has received a net_wm_window_type notify", c->name, c->window);
clientGetNetWmType (c);
- frameDraw (c, TRUE, FALSE);
+ frameDraw (c, TRUE);
}
else if ((ev->atom == display_info->atoms[NET_WM_STRUT]) ||
(ev->atom == display_info->atoms[NET_WM_STRUT_PARTIAL]))
@@ -1834,7 +1834,7 @@
(ev->atom == display_info->atoms[KWM_WIN_ICON])))
{
clientUpdateIcon (c);
- frameDraw (c, TRUE, FALSE);
+ frameDraw (c, TRUE);
}
#ifdef HAVE_STARTUP_NOTIFICATION
else if (ev->atom == display_info->atoms[NET_STARTUP_ID])
@@ -1935,7 +1935,7 @@
if (FLAG_TEST (c->xfwm_flags, XFWM_FLAG_HAS_STICK) && !FLAG_TEST (c->flags, CLIENT_FLAG_STICKY))
{
clientStick (c, TRUE);
- frameDraw (c, FALSE, FALSE);
+ frameDraw (c, FALSE);
}
}
else
@@ -1943,7 +1943,7 @@
if (FLAG_TEST (c->xfwm_flags, XFWM_FLAG_HAS_STICK) && FLAG_TEST (c->flags, CLIENT_FLAG_STICKY))
{
clientUnstick (c, TRUE);
- frameDraw (c, FALSE, FALSE);
+ frameDraw (c, FALSE);
}
if (ev->data.l[0] != c->win_workspace)
{
@@ -2094,7 +2094,7 @@
}
if (!update)
{
- frameDraw (c, FALSE, TRUE);
+ frameDraw (c, FALSE);
}
}
}
@@ -2294,11 +2294,11 @@
{
clientHide (c, c->win_workspace, TRUE);
}
- frameDraw (c, FALSE, FALSE);
+ frameDraw (c, FALSE);
break;
case MENU_OP_MINIMIZE_ALL:
clientHideAll (c, c->win_workspace);
- frameDraw (c, FALSE, FALSE);
+ frameDraw (c, FALSE);
break;
case MENU_OP_UNMINIMIZE:
clientShow (c, TRUE);
@@ -2311,26 +2311,26 @@
case MENU_OP_STICK:
case MENU_OP_UNSTICK:
clientToggleSticky (c, TRUE);
- frameDraw (c, FALSE, FALSE);
+ frameDraw (c, FALSE);
break;
case MENU_OP_WORKSPACES:
clientSetWorkspace (c, GPOINTER_TO_INT (item_data), TRUE);
- frameDraw (c, FALSE, FALSE);
+ frameDraw (c, FALSE);
break;
case MENU_OP_DELETE:
- frameDraw (c, FALSE, FALSE);
+ frameDraw (c, FALSE);
clientClose (c);
break;
case MENU_OP_CONTEXT_HELP:
clientEnterContextMenuState (c);
- frameDraw (c, FALSE, FALSE);
+ frameDraw (c, FALSE);
break;
case MENU_OP_ABOVE:
case MENU_OP_NORMAL:
clientToggleAbove (c);
/* Fall thru */
default:
- frameDraw (c, FALSE, FALSE);
+ frameDraw (c, FALSE);
break;
}
}
@@ -2367,7 +2367,7 @@
if ((c) && ((ev->button == 1) || (ev->button == 3)))
{
c->button_pressed[MENU_BUTTON] = TRUE;
- frameDraw (c, FALSE, FALSE);
+ frameDraw (c, FALSE);
y = c->y;
ops = MENU_OP_DELETE | MENU_OP_MINIMIZE_ALL | MENU_OP_WORKSPACES;
insensitive = 0;
@@ -2519,7 +2519,7 @@
TRACE ("Cannot open menu");
gdk_beep ();
c->button_pressed[MENU_BUTTON] = FALSE;
- frameDraw (c, FALSE, FALSE);
+ frameDraw (c, FALSE);
xfwmWindowDelete (&menu_event_window);
menu_free (menu);
}
Modified: xfwm4/trunk/src/focus.c
===================================================================
--- xfwm4/trunk/src/focus.c 2006-08-21 14:52:02 UTC (rev 22846)
+++ xfwm4/trunk/src/focus.c 2006-08-21 20:13:05 UTC (rev 22847)
@@ -460,7 +460,7 @@
}
data[0] = c->window;
clientAdjustFullscreenLayer (c, TRUE);
- frameDraw (c, FALSE, FALSE);
+ frameDraw (c, FALSE);
}
else
{
@@ -473,7 +473,7 @@
clientAdjustFullscreenLayer (c2, FALSE);
/* clientRaise (c, None); */
}
- frameDraw (c2, FALSE, FALSE);
+ frameDraw (c2, FALSE);
}
data[1] = None;
XChangeProperty (display_info->dpy, screen_info->xroot,
@@ -554,7 +554,7 @@
client_focus = NULL;
if (c2)
{
- frameDraw (c2, FALSE, FALSE);
+ frameDraw (c2, FALSE);
XChangeProperty (clientGetXDisplay (c2), c2->screen_info->xroot, display_info->atoms[NET_ACTIVE_WINDOW], XA_WINDOW, 32,
PropModeReplace, (unsigned char *) data, 2);
}
Modified: xfwm4/trunk/src/frame.c
===================================================================
--- xfwm4/trunk/src/frame.c 2006-08-21 14:52:02 UTC (rev 22846)
+++ xfwm4/trunk/src/frame.c 2006-08-21 20:13:05 UTC (rev 22847)
@@ -788,7 +788,7 @@
}
void
-frameDraw (Client * c, gboolean clear_all, gboolean force_shape_update)
+frameDraw (Client * c, gboolean clear_all)
{
ScreenInfo *screen_info;
FramePixmap frame_pix;
@@ -867,18 +867,6 @@
c->previous_height = c->height;
}
}
- /* Corners never resized, we need to update them separately */
- if (requires_clearing)
- {
- xfwmWindowSetBG (&c->corners[CORNER_TOP_LEFT],
- &screen_info->corners[CORNER_TOP_LEFT][state]);
- xfwmWindowSetBG (&c->corners[CORNER_TOP_RIGHT],
- &screen_info->corners[CORNER_TOP_RIGHT][state]);
- xfwmWindowSetBG (&c->corners[CORNER_BOTTOM_LEFT],
- &screen_info->corners[CORNER_BOTTOM_LEFT][state]);
- xfwmWindowSetBG (&c->corners[CORNER_BOTTOM_RIGHT],
- &screen_info->corners[CORNER_BOTTOM_RIGHT][state]);
- }
if (FLAG_TEST (c->xfwm_flags, XFWM_FLAG_HAS_BORDER)
&& !FLAG_TEST (c->flags, CLIENT_FLAG_FULLSCREEN))
@@ -982,57 +970,28 @@
xfwmPixmapInit (screen_info, &frame_pix.pm_sides[SIDE_RIGHT]);
xfwmPixmapInit (screen_info, &frame_pix.pm_sides[SIDE_BOTTOM]);
- if (requires_clearing || width_changed)
- {
- frameCreateTitlePixmap (c, state, left, right, &frame_pix.pm_title);
- xfwmWindowSetBG (&c->title, &frame_pix.pm_title);
+ /* The title is always visible */
+ frameCreateTitlePixmap (c, state, left, right, &frame_pix.pm_title);
+ xfwmWindowSetBG (&c->title, &frame_pix.pm_title);
+ xfwmWindowShow (&c->title,
+ frameTopLeftWidth (c, state), 0, top_width,
+ frameTop (c), (requires_clearing | width_changed));
- xfwmPixmapCreate (screen_info, &frame_pix.pm_sides[SIDE_BOTTOM],
- bottom_width, frameBottom (c));
- xfwmPixmapFill (&screen_info->sides[SIDE_BOTTOM][state],
- &frame_pix.pm_sides[SIDE_BOTTOM],
- 0, 0, bottom_width, frameBottom (c));
- xfwmWindowSetBG (&c->sides[SIDE_BOTTOM],
- &frame_pix.pm_sides[SIDE_BOTTOM]);
- }
-
- if (requires_clearing || height_changed)
+ /* Corners are never resized, we need to update them separately */
+ if (requires_clearing)
{
- xfwmPixmapCreate (screen_info, &frame_pix.pm_sides[SIDE_LEFT],
- frameLeft (c), left_height);
- xfwmPixmapFill (&screen_info->sides[SIDE_LEFT][state],
- &frame_pix.pm_sides[SIDE_LEFT],
- 0, 0, frameLeft (c), left_height);
- xfwmWindowSetBG (&c->sides[SIDE_LEFT],
- &frame_pix.pm_sides[SIDE_LEFT]);
-
- xfwmPixmapCreate (screen_info, &frame_pix.pm_sides[SIDE_RIGHT],
- frameRight (c), right_height);
- xfwmPixmapFill (&screen_info->sides[SIDE_RIGHT][state],
- &frame_pix.pm_sides[SIDE_RIGHT],
- 0, 0, frameRight (c), right_height);
- xfwmWindowSetBG (&c->sides[SIDE_RIGHT],
- &frame_pix.pm_sides[SIDE_RIGHT]);
+ xfwmWindowSetBG (&c->corners[CORNER_TOP_LEFT],
+ &screen_info->corners[CORNER_TOP_LEFT][state]);
+ xfwmWindowSetBG (&c->corners[CORNER_TOP_RIGHT],
+ &screen_info->corners[CORNER_TOP_RIGHT][state]);
+ xfwmWindowSetBG (&c->corners[CORNER_BOTTOM_LEFT],
+ &screen_info->corners[CORNER_BOTTOM_LEFT][state]);
+ xfwmWindowSetBG (&c->corners[CORNER_BOTTOM_RIGHT],
+ &screen_info->corners[CORNER_BOTTOM_RIGHT][state]);
}
- if (FLAG_TEST (c->flags, CLIENT_FLAG_SHADED))
- {
- xfwmWindowHide (&c->sides[SIDE_LEFT]);
- xfwmWindowHide (&c->sides[SIDE_RIGHT]);
- }
- else
- {
- xfwmWindowShow (&c->sides[SIDE_LEFT], 0, frameTop (c),
- frameLeft (c), left_height, (requires_clearing | height_changed));
- xfwmWindowShow (&c->sides[SIDE_RIGHT],
- frameWidth (c) - frameRight (c), frameTop (c), frameRight (c),
- right_height, (requires_clearing | height_changed));
- }
-
if (FLAG_TEST_ALL (c->flags, CLIENT_FLAG_MAXIMIZED))
{
- xfwmWindowShow (&c->title, 0, 0, top_width, frameTop (c),
- (requires_clearing | width_changed));
xfwmWindowHide (&c->sides[SIDE_LEFT]);
xfwmWindowHide (&c->sides[SIDE_RIGHT]);
xfwmWindowHide (&c->sides[SIDE_BOTTOM]);
@@ -1043,28 +1002,65 @@
}
else
{
- xfwmWindowShow (&c->title,
- frameTopLeftWidth (c, state), 0, top_width,
- frameTop (c), (requires_clearing | width_changed));
+ if (FLAG_TEST (c->flags, CLIENT_FLAG_SHADED))
+ {
+ xfwmWindowHide (&c->sides[SIDE_LEFT]);
+ xfwmWindowHide (&c->sides[SIDE_RIGHT]);
+ }
+ else
+ {
+ xfwmPixmapCreate (screen_info, &frame_pix.pm_sides[SIDE_LEFT],
+ frameLeft (c), left_height);
+ xfwmPixmapFill (&screen_info->sides[SIDE_LEFT][state],
+ &frame_pix.pm_sides[SIDE_LEFT],
+ 0, 0, frameLeft (c), left_height);
+ xfwmWindowSetBG (&c->sides[SIDE_LEFT],
+ &frame_pix.pm_sides[SIDE_LEFT]);
+ xfwmWindowShow (&c->sides[SIDE_LEFT], 0, frameTop (c),
+ frameLeft (c), left_height, (requires_clearing | height_changed));
+
+ xfwmPixmapCreate (screen_info, &frame_pix.pm_sides[SIDE_RIGHT],
+ frameRight (c), right_height);
+ xfwmPixmapFill (&screen_info->sides[SIDE_RIGHT][state],
+ &frame_pix.pm_sides[SIDE_RIGHT],
+ 0, 0, frameRight (c), right_height);
+ xfwmWindowSetBG (&c->sides[SIDE_RIGHT],
+ &frame_pix.pm_sides[SIDE_RIGHT]);
+ xfwmWindowShow (&c->sides[SIDE_RIGHT],
+ frameWidth (c) - frameRight (c), frameTop (c), frameRight (c),
+ right_height, (requires_clearing | height_changed));
+ }
+
+ xfwmPixmapCreate (screen_info, &frame_pix.pm_sides[SIDE_BOTTOM],
+ bottom_width, frameBottom (c));
+ xfwmPixmapFill (&screen_info->sides[SIDE_BOTTOM][state],
+ &frame_pix.pm_sides[SIDE_BOTTOM],
+ 0, 0, bottom_width, frameBottom (c));
+ xfwmWindowSetBG (&c->sides[SIDE_BOTTOM],
+ &frame_pix.pm_sides[SIDE_BOTTOM]);
xfwmWindowShow (&c->sides[SIDE_BOTTOM],
screen_info->corners[CORNER_BOTTOM_LEFT][state].width,
frameHeight (c) - frameBottom (c), bottom_width, frameBottom (c),
(requires_clearing | width_changed));
+
xfwmWindowShow (&c->corners[CORNER_TOP_LEFT], 0, 0,
frameTopLeftWidth (c, state),
screen_info->corners[CORNER_TOP_LEFT][state].height,
requires_clearing);
+
xfwmWindowShow (&c->corners[CORNER_TOP_RIGHT],
frameWidth (c) - frameTopRightWidth (c, state),
0, frameTopRightWidth (c, state),
screen_info->corners[CORNER_TOP_RIGHT][state].height,
requires_clearing);
+
xfwmWindowShow (&c->corners[CORNER_BOTTOM_LEFT], 0,
frameHeight (c) -
screen_info->corners[CORNER_BOTTOM_LEFT][state].height,
screen_info->corners[CORNER_BOTTOM_LEFT][state].width,
screen_info->corners[CORNER_BOTTOM_LEFT][state].height,
requires_clearing);
+
xfwmWindowShow (&c->corners[CORNER_BOTTOM_RIGHT],
frameWidth (c) -
screen_info->corners[CORNER_BOTTOM_RIGHT][state].width,
@@ -1074,10 +1070,7 @@
screen_info->corners[CORNER_BOTTOM_RIGHT][state].height,
requires_clearing);
}
- if (requires_clearing | force_shape_update)
- {
- frameSetShape (c, state, &frame_pix, button_x);
- }
+ frameSetShape (c, state, &frame_pix, button_x);
xfwmPixmapFree (&frame_pix.pm_title);
xfwmPixmapFree (&frame_pix.pm_sides[SIDE_BOTTOM]);
xfwmPixmapFree (&frame_pix.pm_sides[SIDE_LEFT]);
Modified: xfwm4/trunk/src/frame.h
===================================================================
--- xfwm4/trunk/src/frame.h 2006-08-21 14:52:02 UTC (rev 22846)
+++ xfwm4/trunk/src/frame.h 2006-08-21 20:13:05 UTC (rev 22847)
@@ -49,6 +49,6 @@
int frameY (Client *);
int frameWidth (Client *);
int frameHeight (Client *);
-void frameDraw (Client *, gboolean, gboolean);
+void frameDraw (Client *, gboolean);
#endif /* INC_FRAME_H */
Modified: xfwm4/trunk/src/mypixmap.c
===================================================================
--- xfwm4/trunk/src/mypixmap.c 2006-08-21 14:52:02 UTC (rev 22846)
+++ xfwm4/trunk/src/mypixmap.c 2006-08-21 20:13:05 UTC (rev 22847)
@@ -806,6 +806,10 @@
gint width, height;
gint dest_x, dest_y;
+ g_return_val_if_fail (pm != NULL, FALSE);
+ g_return_val_if_fail (pm->pixmap != None, FALSE);
+ g_return_val_if_fail (pm->mask != None, FALSE);
+
dest_pixmap = gdk_xid_table_lookup (pm->pixmap);
if (dest_pixmap)
{
@@ -880,6 +884,10 @@
gint width, height;
gint dest_x, dest_y;
+ g_return_val_if_fail (pm != NULL, FALSE);
+ g_return_val_if_fail (pm->pixmap != None, FALSE);
+ g_return_val_if_fail (pm->mask != None, FALSE);
+
destw = gdk_xid_table_lookup (pm->pixmap);
if (destw)
{
@@ -934,6 +942,7 @@
TRACE ("entering xfwmPixmapLoad");
+ g_return_val_if_fail (pm != NULL, FALSE);
g_return_val_if_fail (dir != NULL, FALSE);
g_return_val_if_fail (file != NULL, FALSE);
Modified: xfwm4/trunk/src/netwm.c
===================================================================
--- xfwm4/trunk/src/netwm.c 2006-08-21 14:52:02 UTC (rev 22846)
+++ xfwm4/trunk/src/netwm.c 2006-08-21 20:13:05 UTC (rev 22847)
@@ -329,7 +329,7 @@
{
clientToggleSticky (c, TRUE);
}
- frameDraw (c, FALSE, FALSE);
+ frameDraw (c, FALSE);
}
}
@@ -426,7 +426,7 @@
clientSetNetState (c);
clientWindowType (c);
}
- frameDraw (c, TRUE, FALSE);
+ frameDraw (c, TRUE);
}
if ((first == display_info->atoms[NET_WM_STATE_FULLSCREEN]) ||
@@ -536,7 +536,7 @@
FLAG_TOGGLE (c->flags, CLIENT_FLAG_SKIP_TASKBAR);
clientSetNetState (c);
}
- frameDraw (c, TRUE, FALSE);
+ frameDraw (c, TRUE);
}
}
More information about the Xfce4-commits
mailing list