summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorEduard Braun <eduard.braun2@gmx.de>2018-01-07 16:36:45 +0000
committerEduard Braun <eduard.braun2@gmx.de>2018-01-07 16:37:02 +0000
commitdd958b6024fb9f68500eb583f4c3d981ed27e08c (patch)
treee26586e17e1242073320681902c9143b11a57984 /src
parentUse proper monitor for deriving geometry (diff)
downloadinkscape-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.h1
-rw-r--r--src/sp-namedview.cpp13
-rw-r--r--src/ui/dialog/inkscape-preferences.cpp14
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);
}