diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/desktop.cpp | 8 | ||||
| -rw-r--r-- | src/desktop.h | 1 | ||||
| -rw-r--r-- | src/ui/toolbar/zoom-toolbar.cpp | 1 | ||||
| -rw-r--r-- | src/verbs.cpp | 5 | ||||
| -rw-r--r-- | src/verbs.h | 1 | ||||
| -rw-r--r-- | src/widgets/desktop-widget.cpp | 4 | ||||
| -rw-r--r-- | src/widgets/toolbox.cpp | 3 |
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"); |
