summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
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);
}