summaryrefslogtreecommitdiff
path: root/openbox
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2007-05-28 01:42:50 +0000
committerDana Jansens <danakj@orodu.net>2007-05-28 01:42:50 +0000
commit30912d467a36b13c0d04c98a0bf8ec1b8c1cc593 (patch)
treeb0e57094919b0d5d71cdaf5af18eae5dabc56dad /openbox
parent33406a1c7f7c6098e7356ba293f129c2b768c522 (diff)
do try_configure to find out what width the window will actually be, before adjust the x/y based on gravity, if they didn't specify the x/y
Diffstat (limited to 'openbox')
-rw-r--r--openbox/event.c44
1 files changed, 26 insertions, 18 deletions
diff --git a/openbox/event.c b/openbox/event.c
index 105d6aba..f3ed676e 100644
--- a/openbox/event.c
+++ b/openbox/event.c
@@ -1008,8 +1008,12 @@ static void event_handle_client(ObClient *client, XEvent *e)
RECT_TO_DIMS(client->area, x, y, w, h);
b = client->border_width;
- ob_debug("ConfigureRequest desktop %d wmstate %d visibile %d\n",
- screen_desktop, client->wmstate, client->frame->visible);
+ ob_debug("ConfigureRequest for \"%s\" desktop %d wmstate %d "
+ "visibile %d\n"
+ " x %d y %d w %d h %d b %d\n",
+ client->title,
+ screen_desktop, client->wmstate, client->frame->visible,
+ x, y, w, h, b);
if (e->xconfigurerequest.value_mask & CWBorderWidth)
if (client->border_width != e->xconfigurerequest.border_width) {
@@ -1038,10 +1042,10 @@ static void event_handle_client(ObClient *client, XEvent *e)
move = TRUE;
}
- if (e->xconfigurerequest.value_mask & CWX ||
- e->xconfigurerequest.value_mask & CWY ||
- e->xconfigurerequest.value_mask & CWWidth ||
- e->xconfigurerequest.value_mask & CWHeight)
+ if ((e->xconfigurerequest.value_mask & CWX) ||
+ (e->xconfigurerequest.value_mask & CWY) ||
+ (e->xconfigurerequest.value_mask & CWWidth) ||
+ (e->xconfigurerequest.value_mask & CWHeight))
{
if (e->xconfigurerequest.value_mask & CWX) {
/* don't allow clients to move shaded windows (fvwm does this)
@@ -1061,20 +1065,10 @@ static void event_handle_client(ObClient *client, XEvent *e)
if (e->xconfigurerequest.value_mask & CWWidth) {
w = e->xconfigurerequest.width;
resize = TRUE;
-
- /* if x was not given, then use gravity to figure out the new
- x. the reference point should not be moved */
- if (!(e->xconfigurerequest.value_mask & CWX))
- client_gravity_resize_w(client, &x, client->area.width, w);
}
if (e->xconfigurerequest.value_mask & CWHeight) {
h = e->xconfigurerequest.height;
resize = TRUE;
-
- /* if y was not given, then use gravity to figure out the new
- y. the reference point should not be moved */
- if (!(e->xconfigurerequest.value_mask & CWY))
- client_gravity_resize_h(client, &y, client->area.height,h);
}
}
@@ -1118,8 +1112,20 @@ static void event_handle_client(ObClient *client, XEvent *e)
gint lw,lh;
if (move || resize) {
- client_find_onscreen(client, &x, &y, w, h, FALSE);
client_try_configure(client, &x, &y, &w, &h, &lw, &lh, FALSE);
+
+ /* if x was not given, then use gravity to figure out the new
+ x. the reference point should not be moved */
+ if ((e->xconfigurerequest.value_mask & CWWidth &&
+ !(e->xconfigurerequest.value_mask & CWX)))
+ client_gravity_resize_w(client, &x, client->area.width, w);
+ /* if y was not given, then use gravity to figure out the new
+ y. the reference point should not be moved */
+ if ((e->xconfigurerequest.value_mask & CWHeight &&
+ !(e->xconfigurerequest.value_mask & CWY)))
+ client_gravity_resize_h(client, &y, client->area.height,h);
+
+ client_find_onscreen(client, &x, &y, w, h, FALSE);
}
/* if they requested something that moves the window, or if
the window is actually being changed then configure it and
@@ -1127,7 +1133,9 @@ static void event_handle_client(ObClient *client, XEvent *e)
if (move || !RECT_EQUAL_DIMS(client->area, x, y, w, h) ||
border)
{
- ob_debug("Doing configure\n");
+ ob_debug("Granting ConfigureRequest x %d y %d w %d h %d "
+ "b %d\n",
+ x, y, w, h, b);
client_configure(client, x, y, w, h, b, FALSE, TRUE);
}