summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/desktop.cpp8
-rw-r--r--src/desktop.h1
-rw-r--r--src/ui/toolbar/zoom-toolbar.cpp1
-rw-r--r--src/verbs.cpp5
-rw-r--r--src/verbs.h1
-rw-r--r--src/widgets/desktop-widget.cpp4
-rw-r--r--src/widgets/toolbox.cpp3
7 files changed, 22 insertions, 1 deletions
diff --git a/src/desktop.cpp b/src/desktop.cpp
index ff40e5934..40305cba1 100644
--- a/src/desktop.cpp
+++ b/src/desktop.cpp
@@ -1064,6 +1064,14 @@ SPDesktop::zoom_selection()
set_display_area(*d, 10);
}
+/**
+ * Centre Page in window, without zooming
+ */
+void SPDesktop::zoom_center_page()
+{
+ zoom_absolute_center_point(Geom::Point(doc()->getWidth().value("px")/2, doc()->getHeight().value("px")/2), this->current_zoom());
+}
+
/**
* Performs a quick zoom into what the user is working on.
diff --git a/src/desktop.h b/src/desktop.h
index d4babf61f..69ccd7bd9 100644
--- a/src/desktop.h
+++ b/src/desktop.h
@@ -342,6 +342,7 @@ public:
void zoom_page_width();
void zoom_drawing();
void zoom_selection();
+ void zoom_center_page();
double current_zoom() const { return _current_affine.getZoom(); }
diff --git a/src/ui/toolbar/zoom-toolbar.cpp b/src/ui/toolbar/zoom-toolbar.cpp
index 5cabcb03f..3b4d3d6bc 100644
--- a/src/ui/toolbar/zoom-toolbar.cpp
+++ b/src/ui/toolbar/zoom-toolbar.cpp
@@ -53,6 +53,7 @@ ZoomToolbar::ZoomToolbar(SPDesktop *desktop)
add_toolbutton_for_verb(SP_VERB_ZOOM_DRAWING);
add_toolbutton_for_verb(SP_VERB_ZOOM_PAGE);
add_toolbutton_for_verb(SP_VERB_ZOOM_PAGE_WIDTH);
+ add_toolbutton_for_verb(SP_VERB_ZOOM_CENTER_PAGE);
add_separator();
diff --git a/src/verbs.cpp b/src/verbs.cpp
index deedecf75..352ed857d 100644
--- a/src/verbs.cpp
+++ b/src/verbs.cpp
@@ -1999,6 +1999,9 @@ void ZoomVerb::perform(SPAction *action, void *data)
case SP_VERB_ZOOM_PREV:
dt->prev_transform();
break;
+ case SP_VERB_ZOOM_CENTER_PAGE:
+ dt->zoom_center_page();
+ break;
case SP_VERB_ROTATE_CW:
{
gint mul = 1 + Inkscape::UI::Tools::gobble_key_events( GDK_KEY_parenleft, 0);
@@ -3054,6 +3057,8 @@ Verb *Verb::_base_verbs[] = {
INKSCAPE_ICON("zoom-fit-drawing")),
new ZoomVerb(SP_VERB_ZOOM_SELECTION, "ZoomSelection", N_("_Selection"), N_("Zoom to fit selection in window"),
INKSCAPE_ICON("zoom-fit-selection")),
+ new ZoomVerb(SP_VERB_ZOOM_CENTER_PAGE, "ZoomCenterPage", N_("_Center _Page"), N_("Centre page in window"),
+ INKSCAPE_ICON("zoom-center-page")),
new ZoomVerb(SP_VERB_ROTATE_CW, "RotateClockwise", N_("Rotate Clockwise"), N_("Rotate canvas clockwise"), nullptr),
new ZoomVerb(SP_VERB_ROTATE_CCW, "RotateCounterClockwise", N_("Rotate Counter-Clockwise"),
diff --git a/src/verbs.h b/src/verbs.h
index 595d2aacf..ead72538f 100644
--- a/src/verbs.h
+++ b/src/verbs.h
@@ -266,6 +266,7 @@ enum {
SP_VERB_ZOOM_PAGE_WIDTH,
SP_VERB_ZOOM_DRAWING,
SP_VERB_ZOOM_SELECTION,
+ SP_VERB_ZOOM_CENTER_PAGE,
/* Canvas Rotation */
SP_VERB_ROTATE_CW,
diff --git a/src/widgets/desktop-widget.cpp b/src/widgets/desktop-widget.cpp
index 489582ca8..c5810177d 100644
--- a/src/widgets/desktop-widget.cpp
+++ b/src/widgets/desktop-widget.cpp
@@ -1928,6 +1928,10 @@ SPDesktopWidget::zoom_populate_popup(Gtk::Menu *menu)
item_selection->signal_activate().connect(sigc::mem_fun(desktop, &SPDesktop::zoom_selection));
menu->append(*item_selection);
+ auto item_center_page = Gtk::manage(new Gtk::MenuItem(_("Centre Page")));
+ item_center_page->signal_activate().connect(sigc::mem_fun(desktop, &SPDesktop::zoom_center_page));
+ menu->append(*item_center_page);
+
menu->show_all();
}
diff --git a/src/widgets/toolbox.cpp b/src/widgets/toolbox.cpp
index 38e8df8c0..8b7576d8d 100644
--- a/src/widgets/toolbox.cpp
+++ b/src/widgets/toolbox.cpp
@@ -340,7 +340,8 @@ static Glib::RefPtr<Gtk::ActionGroup> create_or_fetch_actions( SPDesktop* deskto
SP_VERB_ZOOM_PAGE,
SP_VERB_ZOOM_PAGE_WIDTH,
SP_VERB_ZOOM_PREV,
- SP_VERB_ZOOM_SELECTION
+ SP_VERB_ZOOM_SELECTION,
+ SP_VERB_ZOOM_CENTER_PAGE
};
GtkIconSize toolboxSize = ToolboxFactory::prefToSize("/toolbox/small");