summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlberts Muktupāvels <alberts.muktupavels@gmail.com>2017-04-20 15:54:27 +0300
committerAlberts Muktupāvels <alberts.muktupavels@gmail.com>2017-04-20 15:54:27 +0300
commitca73ad5c8bc0c38981fa9fb8efad9bb466e1f9ac (patch)
treea229a94f88c73ecf31a53432abbe67c110b15a4f
parent0bd6923d4ad02590eed12d6c1a6a0d26b6b02a64 (diff)
downloadmetacity-ca73ad5c8bc0c38981fa9fb8efad9bb466e1f9ac.tar.gz
display: get window scale from MetaUI
-rw-r--r--src/core/display.c25
-rw-r--r--src/include/ui.h2
-rw-r--r--src/ui/ui.c6
3 files changed, 13 insertions, 20 deletions
diff --git a/src/core/display.c b/src/core/display.c
index 1191433a..1a3acfcd 100644
--- a/src/core/display.c
+++ b/src/core/display.c
@@ -1415,35 +1415,18 @@ meta_display_queue_autoraise_callback (MetaDisplay *display,
display->autoraise_window = window;
}
-static gint
-get_window_scaling_factor (void)
-{
- GdkScreen *screen;
- GValue value = G_VALUE_INIT;
-
- screen = gdk_screen_get_default ();
-
- g_value_init (&value, G_TYPE_INT);
-
- if (gdk_screen_get_setting (screen, "gdk-window-scaling-factor", &value))
- return g_value_get_int (&value);
- else
- return 1;
-}
-
static GdkEvent *
-button_press_event_new (XEvent *xevent)
+button_press_event_new (XEvent *xevent,
+ gint scale)
{
GdkDisplay *display;
GdkSeat *seat;
- gint scale;
GdkWindow *window;
GdkDevice *device;
GdkEvent *event;
display = gdk_display_get_default ();
seat = gdk_display_get_default_seat (display);
- scale = get_window_scaling_factor ();
window = gdk_x11_window_lookup_for_display (display, xevent->xbutton.window);
device = gdk_seat_get_pointer (seat);
@@ -2019,6 +2002,7 @@ event_callback (XEvent *event,
else if (event->xbutton.button == meta_prefs_get_mouse_button_menu())
{
GdkRectangle rect;
+ gint scale;
GdkEvent *gdk_event;
if (meta_prefs_get_raise_on_click ())
@@ -2034,7 +2018,8 @@ event_callback (XEvent *event,
rect.width = 0;
rect.height = 0;
- gdk_event = button_press_event_new (event);
+ scale = meta_ui_get_scale (display->screen->ui);
+ gdk_event = button_press_event_new (event, scale);
meta_window_show_menu (window, &rect, gdk_event);
gdk_event_free (gdk_event);
}
diff --git a/src/include/ui.h b/src/include/ui.h
index c0f677f3..25d0bc1c 100644
--- a/src/include/ui.h
+++ b/src/include/ui.h
@@ -60,6 +60,8 @@ void meta_ui_free (MetaUI *ui);
void meta_ui_set_composited (MetaUI *ui,
gboolean composited);
+gint meta_ui_get_scale (MetaUI *ui);
+
void meta_ui_theme_get_frame_borders (MetaUI *ui,
MetaFrameType type,
MetaFrameFlags flags,
diff --git a/src/ui/ui.c b/src/ui/ui.c
index 06c14f86..cf429256 100644
--- a/src/ui/ui.c
+++ b/src/ui/ui.c
@@ -402,6 +402,12 @@ meta_ui_set_composited (MetaUI *ui,
meta_frames_composited_changed (ui->frames);
}
+gint
+meta_ui_get_scale (MetaUI *ui)
+{
+ return ui->scale;
+}
+
void
meta_ui_get_frame_mask (MetaUI *ui,
Window frame_xwindow,