diff options
| author | Martin Owens <doctormo@gmail.com> | 2019-03-06 19:54:07 +0000 |
|---|---|---|
| committer | Martin Owens <doctormo@gmail.com> | 2019-03-06 19:54:07 +0000 |
| commit | 09c89e9b6a80f4cbfe367c2870e6d9b2f57c5a8e (patch) | |
| tree | dd6d6f0252411c1658355f97da64b7c445219165 /src/object/sp-namedview.cpp | |
| parent | fix ci: appimage remove gtk2 themes (diff) | |
| parent | Fix query for monitor dimensions (diff) | |
| download | inkscape-09c89e9b6a80f4cbfe367c2870e6d9b2f57c5a8e.tar.gz inkscape-09c89e9b6a80f4cbfe367c2870e6d9b2f57c5a8e.zip | |
Merge in Rescue code for restoring last used window geometry MR !534
Diffstat (limited to 'src/object/sp-namedview.cpp')
| -rw-r--r-- | src/object/sp-namedview.cpp | 43 |
1 files changed, 32 insertions, 11 deletions
diff --git a/src/object/sp-namedview.cpp b/src/object/sp-namedview.cpp index f3429158e..367df0876 100644 --- a/src/object/sp-namedview.cpp +++ b/src/object/sp-namedview.cpp @@ -750,9 +750,28 @@ void sp_namedview_window_from_document(SPDesktop *desktop) // restore window size and position stored with the document Gtk::Window *win = desktop->getToplevel(); g_assert(win); + if (window_geometry == PREFS_WINDOW_GEOMETRY_LAST) { - // do nothing, as we already have code for that in interface.cpp - // TODO: Probably should not do similar things in two places + gint pw = prefs->getInt("/desktop/geometry/width", -1); + gint ph = prefs->getInt("/desktop/geometry/height", -1); + gint px = prefs->getInt("/desktop/geometry/x", -1); + gint py = prefs->getInt("/desktop/geometry/y", -1); + gint full = prefs->getBool("/desktop/geometry/fullscreen"); + gint maxed = prefs->getBool("/desktop/geometry/maximized"); + if (pw>0 && ph>0) { + + Gdk::Rectangle monitor_geometry = Inkscape::UI::get_monitor_geometry_at_point(px, py); + pw = std::min(pw, monitor_geometry.get_width()); + ph = std::min(ph, monitor_geometry.get_height()); + desktop->setWindowSize(pw, ph); + desktop->setWindowPosition(Geom::Point(px, py)); + } + if (maxed) { + win->maximize(); + } + if (full) { + win->fullscreen(); + } } else if ((window_geometry == PREFS_WINDOW_GEOMETRY_FILE && nv->window_maximized) || (new_document && (default_size == PREFS_WINDOW_SIZE_MAXIMIZED))) { win->maximize(); @@ -800,11 +819,7 @@ void sp_namedview_window_from_document(SPDesktop *desktop) #endif desktop->setWindowSize(w, h); if (move_to_screen) { - // Hiding window will close app if it's last window. If we really need to hide it - // here, we need to up the reference count of the application before hiding, and lower after showing. - // win->hide(); desktop->setWindowPosition(Geom::Point(nv->window_x, nv->window_y)); - // win->show(); } } } @@ -812,7 +827,17 @@ void sp_namedview_window_from_document(SPDesktop *desktop) // Cancel any history of transforms up to this point (must be before call to zoom). desktop->clear_transform_history(); - // restore zoom and view + if (show_dialogs) { + desktop->show_dialogs(); + } +} + +/* + * Restores zoom and view from the document settings + */ +void sp_namedview_zoom_and_view_from_document(SPDesktop *desktop) +{ + SPNamedView *nv = desktop->namedview; if (nv->zoom != 0 && nv->zoom != HUGE_VAL && !IS_NAN(nv->zoom) && nv->cx != HUGE_VAL && !IS_NAN(nv->cx) && nv->cy != HUGE_VAL && !IS_NAN(nv->cy)) { @@ -820,10 +845,6 @@ void sp_namedview_window_from_document(SPDesktop *desktop) } else if (desktop->getDocument()) { // document without saved zoom, zoom to its page desktop->zoom_page(); } - - if (show_dialogs) { - desktop->show_dialogs(); - } } void SPNamedView::writeNewGrid(SPDocument *document,int gridtype) |
