diff --git a/src/client.c b/src/client.c index a2f879e8c1f24c7cf8ce5d65a45660f302979c24..25647b4d0fdc696f9f317512a2939966c51faa0b 100644 --- a/src/client.c +++ b/src/client.c @@ -61,6 +61,11 @@ (c->wmhints->initial_state == IconicState) && \ !(c->transient_for)) +#define CONSTRAINED_WINDOW(c) \ + ((c->type == WINDOW_NORMAL) || \ + (c->type == WINDOW_DIALOG) || \ + (c->type == WINDOW_MODAL_DIALOG)) + /* You don't like that ? Me either, but, hell, it's the way glib lists are designed */ #define XWINDOW_TO_GPOINTER(w) ((gpointer) (Window) (w)) #define GPOINTER_TO_XWINDOW(p) ((Window) (p)) @@ -1361,7 +1366,7 @@ static void clientInitPosition(Client * c) if(c->size->flags & (PPosition | USPosition)) { - if((c->type != WINDOW_DOCK) && (c->type != WINDOW_DESKTOP)) + if(CONSTRAINED_WINDOW(c)) { clientKeepVisible(c); } @@ -1373,8 +1378,10 @@ static void clientInitPosition(Client * c) /* Center transient relative to their parent window */ c->x = c2->x + (c2->width - c->width) / 2; c->y = c2->y + (c2->height - c->height) / 2; - clientKeepVisible(c); - + if(CONSTRAINED_WINDOW(c)) + { + clientKeepVisible(c); + } return; } @@ -2657,7 +2664,7 @@ static GtkToXEventFilterStatus clientMove_event_filter(XEvent * xevent, gpointer c->y = c->y + 16; } } - if((c->type != WINDOW_DOCK) && (c->type != WINDOW_DESKTOP)) + if(CONSTRAINED_WINDOW(c)) { clientConstraintPos(c); } @@ -2756,7 +2763,7 @@ static GtkToXEventFilterStatus clientMove_event_filter(XEvent * xevent, gpointer } } - if((c->type != WINDOW_DOCK) && (c->type != WINDOW_DESKTOP)) + if(CONSTRAINED_WINDOW(c)) { clientConstraintPos(c); }