From c448e88e60ed70526cae42f22277701efbfd6ac2 Mon Sep 17 00:00:00 2001 From: Eduard Braun Date: Sat, 6 Jan 2018 22:54:56 +0100 Subject: Namedview: Use proper monitor to derive monitor_geometry Inkscape does not necessarily start on the primary monitor. GTK+ did not reveal it's secrets (i.e. it seems undocumented) but empirically the monitor having the cursor is the monitor the initial window will be placed on. --- src/sp-namedview.cpp | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) (limited to 'src/sp-namedview.cpp') diff --git a/src/sp-namedview.cpp b/src/sp-namedview.cpp index 99cc6fbfc..4e5da13c3 100644 --- a/src/sp-namedview.cpp +++ b/src/sp-namedview.cpp @@ -785,33 +785,24 @@ void sp_namedview_window_from_document(SPDesktop *desktop) bool show_dialogs = true; // restore window size and position stored with the document + Gtk::Window *win = desktop->getToplevel(); + g_assert(win); if (geometry_from_last) { // do nothing, as we already have code for that in interface.cpp // TODO: Probably should not do similar things in two places } else if ((geometry_from_file && nv->window_maximized) || (new_document && (default_geometry == 2))) { - Gtk::Window *win = desktop->getToplevel(); - if (win) { - win->maximize(); - } + win->maximize(); } else { - - // TODO: account for multi-monitor setups (i.e. on which monitor do we want to display Inkscape?) Gdk::Rectangle monitor_geometry; - #if GTKMM_CHECK_VERSION(3,22,0) auto const display = Gdk::Display::get_default(); - auto const monitor = display->get_primary_monitor(); - - // If user hasn't configured a primary monitor, nullptr is returned. - if (monitor) { - monitor->get_geometry(monitor_geometry); - } + auto const monitor = display->get_monitor_at_window(win->get_window()); + monitor->get_geometry(monitor_geometry); #else auto const default_screen = Gdk::Screen::get_default(); - auto const monitor_number = default_screen->get_primary_monitor(); + auto const monitor_number = default_screen->get_monitor_at_window(win->get_window()); default_screen->get_monitor_geometry(monitor_number, monitor_geometry); #endif - int w = monitor_geometry.get_width(); int h = monitor_geometry.get_height(); -- cgit v1.2.3