diff options
| author | Eduard Braun <eduard.braun2@gmx.de> | 2018-01-07 16:36:45 +0000 |
|---|---|---|
| committer | Eduard Braun <eduard.braun2@gmx.de> | 2018-01-07 16:37:02 +0000 |
| commit | dd958b6024fb9f68500eb583f4c3d981ed27e08c (patch) | |
| tree | e26586e17e1242073320681902c9143b11a57984 /src | |
| parent | Use proper monitor for deriving geometry (diff) | |
| download | inkscape-dd958b6024fb9f68500eb583f4c3d981ed27e08c.tar.gz inkscape-dd958b6024fb9f68500eb583f4c3d981ed27e08c.zip | |
Make natural window size default and fix small window size
- Clamp "Small" window size to 600x600
Everything smaller seems pretty unusable but can be discussed.
This fixes bug #1659256.
- Make sure "Large" window size is at least as large as "Small"
to avoid embarassing user reports.
- add "Default" as new window size and (surprise) make it the default
This will not influence the initial size request at all and
should result in the natural window size (unless overriden by the
window manager) and should be a suitable default for all cases.
Fixed bug:
- https://bugs.launchpad.net/inkscape/+bug/1659256
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); } |
