diff --git a/mcs-plugin/margins_plugin.c b/mcs-plugin/margins_plugin.c index 322d583dd9d8275750c96f148ac2a6a75847df8c..156796c4634a38bdeb0deae33c837dbb7acee32c 100644 --- a/mcs-plugin/margins_plugin.c +++ b/mcs-plugin/margins_plugin.c @@ -214,7 +214,7 @@ run_dialog (McsPlugin * mcs_plugin) GTK_DIALOG_NO_SEPARATOR, GTK_STOCK_CLOSE, GTK_RESPONSE_OK, NULL); - gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_CENTER_ALWAYS); + gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_CENTER); gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE); gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK); diff --git a/mcs-plugin/xfwm4_plugin.c b/mcs-plugin/xfwm4_plugin.c index 820c308b4815f3ce8e19ffcb15838f526d960320..bc03ee34e10bf7783dd1bf1502323bfc431277a8 100644 --- a/mcs-plugin/xfwm4_plugin.c +++ b/mcs-plugin/xfwm4_plugin.c @@ -1271,7 +1271,7 @@ create_dialog (McsPlugin * mcs_plugin) dialog->xfwm4_dialog = gtk_dialog_new (); gtk_window_set_position (GTK_WINDOW (dialog->xfwm4_dialog), - GTK_WIN_POS_CENTER_ALWAYS); + GTK_WIN_POS_CENTER); gtk_window_set_title (GTK_WINDOW (dialog->xfwm4_dialog), _("Window Manager")); gtk_dialog_set_has_separator (GTK_DIALOG (dialog->xfwm4_dialog), FALSE); diff --git a/src/client.c b/src/client.c index 25a3a0bb66cf5dd624a743ae321c2ff667e4f0cc..d69492404e99fb7a95ff05db2d0b52114442b98c 100644 --- a/src/client.c +++ b/src/client.c @@ -1655,17 +1655,17 @@ clientApplyStackList (GSList * list) avoid flickering during restack. (contributed by Thomas Leonard <tal00r@ecs.soton.ac.uk>) */ - if (top_of_stack) + if ((top_of_stack) && (top_of_stack->frame != xwinstack[0])) { wc.stack_mode = Above; wc.sibling = top_of_stack->frame; XConfigureWindow(dpy, xwinstack[0], CWStackMode | CWSibling, &wc); + top_of_stack = (Client *) list_copy->data; } XRestackWindows (dpy, xwinstack, (int) nwindows); XFlush (dpy); /* Update top_of_stackfor next restacking */ - top_of_stack = (Client *) list_copy->data; g_slist_free (list_copy); g_free (xwinstack); @@ -1943,8 +1943,8 @@ clientConstraintPos (Client * c, gboolean show_full) client_margins[MARGIN_TOP] = margins[MARGIN_TOP]; client_margins[MARGIN_LEFT] = margins[MARGIN_LEFT]; client_margins[MARGIN_RIGHT] = margins[MARGIN_RIGHT]; - client_margins[MARGIN_BOTTOM] = margins[MARGIN_BOTTOM]; + if (CLIENT_FLAG_TEST (c, CLIENT_FLAG_HAS_STRUTS)) { workspaceGetArea (client_margins, NULL, c); @@ -2027,13 +2027,14 @@ clientKeepVisible (Client * c) { CARD32 client_margins[4]; int cx, cy, left, right, top, bottom; + int diff_x, diff_y; g_return_if_fail (c != NULL); TRACE ("entering clientKeepVisible"); TRACE ("client \"%s\" (0x%lx)", c->name, c->window); - cx = frameX (c) + (frameWidth (c) >> 1); - cy = frameY (c) + (frameHeight (c) >> 1); + cx = frameX (c) + (frameWidth (c) / 2); + cy = frameY (c) + (frameHeight (c) / 2); client_margins[MARGIN_TOP] = margins[MARGIN_TOP]; client_margins[MARGIN_LEFT] = margins[MARGIN_LEFT]; @@ -2059,11 +2060,11 @@ clientKeepVisible (Client * c) cy) ? (int) client_margins[MARGIN_BOTTOM] : 0); /* Translate coodinates to center on physical screen */ - if ((use_xinerama) - && (abs (c->x - ((MyDisplayFullWidth (dpy, - screen) - c->width) / 2)) < 20) - && (abs (c->y - ((MyDisplayFullHeight (dpy, - screen) - c->height) / 2)) < 20)) + + diff_x = abs (c->x - ((MyDisplayFullWidth (dpy, screen) - c->width) / 2)); + diff_y = abs (c->y - ((MyDisplayFullHeight (dpy, screen) - c->height) / 2)); + + if ((use_xinerama) && (diff_x < 25) && (diff_y < 25)) { /* We consider that the windows is centered on screen, * Thus, will move it so its center on the current @@ -4318,15 +4319,15 @@ clientMove_event_filter (XEvent * xevent, gpointer data) { c->x = c->x - 16; } - if (xevent->xkey.keycode == params.keys[KEY_MOVE_RIGHT].keycode) + else if (xevent->xkey.keycode == params.keys[KEY_MOVE_RIGHT].keycode) { c->x = c->x + 16; } - if (xevent->xkey.keycode == params.keys[KEY_MOVE_UP].keycode) + else if (xevent->xkey.keycode == params.keys[KEY_MOVE_UP].keycode) { c->y = c->y - 16; } - if (xevent->xkey.keycode == params.keys[KEY_MOVE_DOWN].keycode) + else if (xevent->xkey.keycode == params.keys[KEY_MOVE_DOWN].keycode) { c->y = c->y + 16; }