summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOlivier Fourdan <fourdan.olivier@wanadoo.fr>2003-02-13 14:22:51 +0000
committerOlivier Fourdan <fourdan.olivier@wanadoo.fr>2003-02-13 14:22:51 +0000
commit6624aeed96e675d2102edc10d16a48bacc6ecf12 (patch)
tree155b69c71b8644ff592f07aa78bdf0917f65d769
parent679660566eef490fd1bf3f74e0c12d77131d553b (diff)
downloadxfwm4-6624aeed96e675d2102edc10d16a48bacc6ecf12.tar.gz
Okay, promise, I'll stop with optimizations :)
(Old svn revision: 10926)
-rw-r--r--src/client.c20
-rw-r--r--src/events.c22
-rw-r--r--src/frame.c4
-rw-r--r--src/frame.h2
4 files changed, 24 insertions, 24 deletions
diff --git a/src/client.c b/src/client.c
index 5fb5436a4..370a6c44d 100644
--- a/src/client.c
+++ b/src/client.c
@@ -1009,7 +1009,7 @@ void clientUpdateAllFrames(int mask)
}
if(mask & UPDATE_FRAME)
{
- frameDraw(c, FALSE);
+ frameDraw(c, FALSE, FALSE);
}
}
}
@@ -1778,7 +1778,7 @@ static void _clientConfigure(Client * c, XWindowChanges * wc, int mask)
if(mask & (CWWidth | CWHeight))
{
- frameDraw(c, FALSE);
+ frameDraw(c, FALSE, FALSE);
}
if(mask)
{
@@ -2154,14 +2154,14 @@ void clientFrame(Window w)
{
/* We set the draw_active value to the wrong value to force a draw */
c->draw_active = TRUE;
- frameDraw(c, FALSE);
+ frameDraw(c, FALSE, FALSE);
}
}
else
{
/* We set the draw_active value to the wrong value to force a draw */
c->draw_active = TRUE;
- frameDraw(c, FALSE);
+ frameDraw(c, FALSE, FALSE);
setWMState(dpy, c->window, IconicState);
clientSetNetState(c);
}
@@ -2849,7 +2849,7 @@ void clientUpdateFocus(Client * c)
if(c2)
{
DBG("redrawing previous focus client \"%s\" (%#lx)\n", c2->name, c2->window);
- frameDraw(c2, FALSE);
+ frameDraw(c2, FALSE, FALSE);
}
data[1] = None;
XChangeProperty(dpy, root, net_active_window, XA_WINDOW, 32, PropModeReplace, (unsigned char *)data, 2);
@@ -2907,7 +2907,7 @@ void clientSetFocus(Client * c, int sort)
if(c2)
{
DBG("redrawing previous focus client \"%s\" (%#lx)\n", c2->name, c2->window);
- frameDraw(c2, FALSE);
+ frameDraw(c2, FALSE, FALSE);
}
data[1] = None;
XChangeProperty(dpy, root, net_active_window, XA_WINDOW, 32, PropModeReplace, (unsigned char *)data, 2);
@@ -3648,12 +3648,12 @@ static GtkToXEventFilterStatus clientButtonPress_event_filter(XEvent * xevent, g
if(xevent->type == EnterNotify)
{
c->button_pressed[b] = True;
- frameDraw(c, FALSE);
+ frameDraw(c, FALSE, FALSE);
}
else if(xevent->type == LeaveNotify)
{
c->button_pressed[b] = False;
- frameDraw(c, FALSE);
+ frameDraw(c, FALSE, FALSE);
}
else if(xevent->type == ButtonRelease)
{
@@ -3714,7 +3714,7 @@ void clientButtonPress(Client * c, Window w, XButtonEvent * bev)
passdata.b = b;
c->button_pressed[b] = True;
- frameDraw(c, FALSE);
+ frameDraw(c, FALSE, FALSE);
DBG("entering button press loop\n");
pushEventFilter(clientButtonPress_event_filter, &passdata);
@@ -3727,7 +3727,7 @@ void clientButtonPress(Client * c, Window w, XButtonEvent * bev)
if(c->button_pressed[b])
{
c->button_pressed[b] = False;
- frameDraw(c, FALSE);
+ frameDraw(c, FALSE, FALSE);
switch (b)
{
case HIDE_BUTTON:
diff --git a/src/events.c b/src/events.c
index 2053d12d4..a29543aeb 100644
--- a/src/events.c
+++ b/src/events.c
@@ -757,7 +757,7 @@ static inline void handleFocusIn(XFocusChangeEvent * ev)
{
DBG("focus set to \"%s\" (%#lx)\n", c->name, c->window);
clientUpdateFocus(c);
- frameDraw(c, FALSE);
+ frameDraw(c, FALSE, FALSE);
if(params.raise_on_focus && !params.click_to_focus)
{
reset_timeout();
@@ -804,7 +804,7 @@ static inline void handlePropertyNotify(XPropertyEvent * ev)
}
if(CLIENT_FLAG_TEST(c, CLIENT_FLAG_IS_RESIZABLE) != previous_value)
{
- frameDraw(c, TRUE);
+ frameDraw(c, TRUE, FALSE);
}
}
else if((ev->atom == XA_WM_NAME) || (ev->atom == net_wm_name))
@@ -816,13 +816,13 @@ static inline void handlePropertyNotify(XPropertyEvent * ev)
}
getWindowName(dpy, c->window, &c->name);
CLIENT_FLAG_SET(c, CLIENT_FLAG_NAME_CHANGED);
- frameDraw(c, TRUE);
+ frameDraw(c, TRUE, FALSE);
}
else if(ev->atom == motif_wm_hints)
{
DBG("client \"%s\" (%#lx) has received a motif_wm_hints notify\n", c->name, c->window);
clientUpdateMWMHints(c);
- frameDraw(c, TRUE);
+ frameDraw(c, TRUE, FALSE);
}
else if(ev->atom == XA_WM_HINTS)
{
@@ -849,7 +849,7 @@ static inline void handlePropertyNotify(XPropertyEvent * ev)
{
DBG("client \"%s\" (%#lx) has received a net_wm_window_type notify\n", c->name, c->window);
clientGetNetWmType(c);
- frameDraw(c, TRUE);
+ frameDraw(c, TRUE, FALSE);
}
else if((ev->atom == win_workspace) && !(c->transient_for))
{
@@ -1015,7 +1015,7 @@ static inline void handleShape(XShapeEvent * ev)
c = clientGetFromWindow(ev->window, WINDOW);
if(c)
{
- frameDraw(c, TRUE);
+ frameDraw(c, FALSE, TRUE);
}
}
@@ -1172,21 +1172,21 @@ static void menu_callback(Menu * menu, MenuOp op, Window client_xwindow, gpointe
case MENU_OP_UNSTICK:
if(c)
{
- frameDraw(c, FALSE);
+ frameDraw(c, FALSE, FALSE);
clientToggleSticky(c, TRUE);
}
break;
case MENU_OP_DELETE:
if(c)
{
- frameDraw(c, FALSE);
+ frameDraw(c, FALSE, FALSE);
clientClose(c);
}
break;
default:
if(c)
{
- frameDraw(c, FALSE);
+ frameDraw(c, FALSE, FALSE);
}
break;
}
@@ -1207,7 +1207,7 @@ static gboolean show_popup_cb(GtkWidget * widget, GdkEventButton * ev, gpointer
if(((ev->button == 1) || (ev->button == 3)) && (c = (Client *) data))
{
c->button_pressed[MENU_BUTTON] = True;
- frameDraw(c, FALSE);
+ frameDraw(c, FALSE, FALSE);
y = c->y;
ops = MENU_OP_DELETE | MENU_OP_MINIMIZE_ALL;
insensitive = 0;
@@ -1311,7 +1311,7 @@ static gboolean show_popup_cb(GtkWidget * widget, GdkEventButton * ev, gpointer
DBG("Cannot open menu\n");
gdk_beep();
c->button_pressed[MENU_BUTTON] = False;
- frameDraw(c, FALSE);
+ frameDraw(c, FALSE, FALSE);
removeTmpEventWin(menu_event_window);
menu_event_window = None;
menu_free(menu);
diff --git a/src/frame.c b/src/frame.c
index e4d37a37d..05bc0a151 100644
--- a/src/frame.c
+++ b/src/frame.c
@@ -517,7 +517,7 @@ static void frameSetShape(Client * c, int state, ClientPixmapCache * pm_cache, i
XDestroyWindow(dpy, temp);
}
-void frameDraw(Client * c, gboolean invalidate_cache)
+void frameDraw(Client * c, gboolean invalidate_cache, gboolean force_shape_update)
{
int state = ACTIVE;
int i;
@@ -707,7 +707,7 @@ void frameDraw(Client * c, gboolean invalidate_cache)
myWindowShow(&c->corners[CORNER_BOTTOM_LEFT], 0, frameHeight(c) - params.corners[CORNER_BOTTOM_LEFT][ACTIVE].height, params.corners[CORNER_BOTTOM_LEFT][ACTIVE].width, params.corners[CORNER_BOTTOM_LEFT][ACTIVE].height, requires_clearing);
myWindowShow(&c->corners[CORNER_BOTTOM_RIGHT], frameWidth(c) - params.corners[CORNER_BOTTOM_RIGHT][ACTIVE].width, frameHeight(c) - params.corners[CORNER_BOTTOM_RIGHT][ACTIVE].height, params.corners[CORNER_BOTTOM_RIGHT][ACTIVE].width, params.corners[CORNER_BOTTOM_RIGHT][ACTIVE].height, requires_clearing);
- if (requires_clearing)
+ if (requires_clearing | force_shape_update)
{
frameSetShape(c, state, &c->pm_cache, button_x);
}
diff --git a/src/frame.h b/src/frame.h
index 086c0e16c..d48d4c763 100644
--- a/src/frame.h
+++ b/src/frame.h
@@ -35,6 +35,6 @@ inline int frameX(Client *);
inline int frameY(Client *);
inline int frameWidth(Client *);
inline int frameHeight(Client *);
-void frameDraw(Client *, gboolean);
+void frameDraw(Client *, gboolean, gboolean);
#endif /* __FRAME_H__ */