diff options
author | Victor Kareh <[email protected]> | 2018-04-24 15:09:08 -0400 |
---|---|---|
committer | raveit65 <[email protected]> | 2018-04-29 09:17:07 +0200 |
commit | 04e564c74159cf3537c9aae2110f66474e46b3a2 (patch) | |
tree | 92564b721490cec73c92f8be65eb3de462d980f5 /src | |
parent | 079c4581c209f3d867b7ba6b059afaf7c1541029 (diff) | |
download | marco-04e564c74159cf3537c9aae2110f66474e46b3a2.tar.bz2 marco-04e564c74159cf3537c9aae2110f66474e46b3a2.tar.xz |
Correct resize popup position on HiDPI displays
Diffstat (limited to 'src')
-rw-r--r-- | src/core/window.c | 7 | ||||
-rw-r--r-- | src/ui/resizepopup.c | 8 |
2 files changed, 13 insertions, 2 deletions
diff --git a/src/core/window.c b/src/core/window.c index abd5af4b..44084a07 100644 --- a/src/core/window.c +++ b/src/core/window.c @@ -8073,8 +8073,11 @@ meta_window_refresh_resize_popup (MetaWindow *window) if (window->display->grab_resize_popup == NULL) { - if (window->size_hints.width_inc > 1 || - window->size_hints.height_inc > 1) + gint scale = gdk_window_get_scale_factor (gdk_get_default_root_window ()); + /* Display the resize popup only for windows that report an + * increment hint that's larger than the scale factor. */ + if (window->size_hints.width_inc > scale || + window->size_hints.height_inc > scale) window->display->grab_resize_popup = meta_ui_resize_popup_new (window->display->xdisplay, window->screen->number); diff --git a/src/ui/resizepopup.c b/src/ui/resizepopup.c index c60fcd65..0464636d 100644 --- a/src/ui/resizepopup.c +++ b/src/ui/resizepopup.c @@ -106,9 +106,11 @@ update_size_window (MetaResizePopup *popup) char *str; int x, y; int width, height; + int scale; g_return_if_fail (popup->size_window != NULL); + scale = gtk_widget_get_scale_factor (GTK_WIDGET (popup->size_window)); /* Translators: This represents the size of a window. The first number is * the width of the window and the second is the height. */ @@ -125,6 +127,12 @@ update_size_window (MetaResizePopup *popup) x = popup->rect.x + (popup->rect.width - width) / 2; y = popup->rect.y + (popup->rect.height - height) / 2; + if (scale) + { + x = x / scale; + y = y / scale; + } + if (gtk_widget_get_realized (popup->size_window)) { /* using move_resize to avoid jumpiness */ |