diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/enums.h | 1 | ||||
| -rw-r--r-- | src/sp-namedview.cpp | 13 | ||||
| -rw-r--r-- | src/ui/dialog/inkscape-preferences.cpp | 14 |
3 files changed, 19 insertions, 9 deletions
diff --git a/src/enums.h b/src/enums.h index 99bb5648c..592cb81e9 100644 --- a/src/enums.h +++ b/src/enums.h @@ -122,6 +122,7 @@ enum PrefsSaveWindowGeometry { /* default window size preference values (/options/defaultwindowsize/value) */ enum PrefsDefaultWindowSize { + PREFS_WINDOW_SIZE_NATURAL = -1, PREFS_WINDOW_SIZE_SMALL = 0, PREFS_WINDOW_SIZE_LARGE = 1, PREFS_WINDOW_SIZE_MAXIMIZED = 2, diff --git a/src/sp-namedview.cpp b/src/sp-namedview.cpp index 84aacfb60..e47587734 100644 --- a/src/sp-namedview.cpp +++ b/src/sp-namedview.cpp @@ -740,7 +740,7 @@ void sp_namedview_window_from_document(SPDesktop *desktop) SPNamedView *nv = desktop->namedview; Inkscape::Preferences *prefs = Inkscape::Preferences::get(); int window_geometry = prefs->getInt("/options/savewindowgeometry/value", PREFS_WINDOW_GEOMETRY_NONE); - int default_size = prefs->getInt("/options/defaultwindowsize/value", PREFS_WINDOW_SIZE_LARGE); + int default_size = prefs->getInt("/options/defaultwindowsize/value", PREFS_WINDOW_SIZE_NATURAL); bool new_document = (nv->window_width <= 0) || (nv->window_height <= 0); bool show_dialogs = true; @@ -754,6 +754,7 @@ void sp_namedview_window_from_document(SPDesktop *desktop) (new_document && (default_size == PREFS_WINDOW_SIZE_MAXIMIZED))) { win->maximize(); } else { + const int MIN_WINDOW_SIZE = 600; int w = 0; int h = 0; bool move_to_screen = false; @@ -764,11 +765,13 @@ void sp_namedview_window_from_document(SPDesktop *desktop) move_to_screen = true; } else if (default_size == PREFS_WINDOW_SIZE_LARGE) { Gdk::Rectangle monitor_geometry = Inkscape::UI::get_monitor_geometry_at_window(win->get_window()); - w = 0.75 * monitor_geometry.get_width(); - h = 0.75 * monitor_geometry.get_height(); + w = MAX(0.75 * monitor_geometry.get_width(), MIN_WINDOW_SIZE); + h = MAX(0.75 * monitor_geometry.get_height(), MIN_WINDOW_SIZE); } else if (default_size == PREFS_WINDOW_SIZE_SMALL) { - w = h = 0; // use the smallest possible window size; could be a factor like NEWDOC_X_SCALE in future - } + w = h = MIN_WINDOW_SIZE; + } else if (default_size == PREFS_WINDOW_SIZE_NATURAL) { + // don't set size (i.e. keep the gtk+ default, which will be the natural size) + } if ((w > 0) && (h > 0)) { #ifndef WIN32 gint dx= 0; diff --git a/src/ui/dialog/inkscape-preferences.cpp b/src/ui/dialog/inkscape-preferences.cpp index ba0758d3c..7b7bd6548 100644 --- a/src/ui/dialog/inkscape-preferences.cpp +++ b/src/ui/dialog/inkscape-preferences.cpp @@ -707,10 +707,16 @@ void InkscapePreferences::initPageUI() _win_ontop_agressive.init ( _("Aggressive"), "/options/transientpolicy/value", 2, false, &_win_ontop_none); { - Glib::ustring defaultSizeLabels[] = {C_("Window size", "Small"), C_("Window size", "Large"), C_("Window size", "Maximized")}; - int defaultSizeValues[] = {PREFS_WINDOW_SIZE_SMALL, PREFS_WINDOW_SIZE_LARGE, PREFS_WINDOW_SIZE_MAXIMIZED}; - - _win_default_size.init( "/options/defaultwindowsize/value", defaultSizeLabels, defaultSizeValues, G_N_ELEMENTS(defaultSizeLabels), PREFS_WINDOW_SIZE_LARGE); + Glib::ustring defaultSizeLabels[] = {C_("Window size", "Default"), + C_("Window size", "Small"), + C_("Window size", "Large"), + C_("Window size", "Maximized")}; + int defaultSizeValues[] = {PREFS_WINDOW_SIZE_NATURAL, + PREFS_WINDOW_SIZE_SMALL, + PREFS_WINDOW_SIZE_LARGE, + PREFS_WINDOW_SIZE_MAXIMIZED}; + + _win_default_size.init( "/options/defaultwindowsize/value", defaultSizeLabels, defaultSizeValues, G_N_ELEMENTS(defaultSizeLabels), PREFS_WINDOW_SIZE_NATURAL); _page_windows.add_line( false, _("Default window size:"), _win_default_size, "", _("Set the default window size"), false); } |
