diff options
| author | Alexander Valavanis <valavanisalex@gmail.com> | 2018-12-06 10:49:22 +0000 |
|---|---|---|
| committer | Alexander Valavanis <valavanisalex@gmail.com> | 2018-12-06 10:49:22 +0000 |
| commit | 1397249083a150de8f095d2d919b7c7fad649f6e (patch) | |
| tree | 9873679bafbe2aa1d0a346806e361eb48ec02355 /src | |
| parent | desktop-widget: make canvas_tbl private (diff) | |
| download | inkscape-1397249083a150de8f095d2d919b7c7fad649f6e.tar.gz inkscape-1397249083a150de8f095d2d919b7c7fad649f6e.zip | |
desktop-widget: make rulers private
Diffstat (limited to 'src')
| -rw-r--r-- | src/desktop.cpp | 27 | ||||
| -rw-r--r-- | src/desktop.h | 2 | ||||
| -rw-r--r-- | src/display/sp-canvas.cpp | 7 | ||||
| -rw-r--r-- | src/widgets/desktop-widget.cpp | 110 | ||||
| -rw-r--r-- | src/widgets/desktop-widget.h | 15 |
5 files changed, 77 insertions, 84 deletions
diff --git a/src/desktop.cpp b/src/desktop.cpp index b907b81d8..fccee47bc 100644 --- a/src/desktop.cpp +++ b/src/desktop.cpp @@ -917,33 +917,6 @@ Geom::Rect SPDesktop::get_display_area() const return viewbox * Geom::Scale(1. / scale, _doc2dt[3] / scale); } -guint SPDesktop::get_hruler_thickness() -{ - Gtk::Window *parent = getToplevel(); - if (parent) { - SPDesktopWidget *dtw = static_cast<SPDesktopWidget *>(parent->get_data("desktopwidget")); - GtkAllocation allocation; - gtk_widget_get_allocation(dtw->hruler, &allocation); - return allocation.height; - } - return 0; -} - -guint SPDesktop::get_vruler_thickness() -{ - Gtk::Window *parent = getToplevel(); - if (parent) { - SPDesktopWidget *dtw = static_cast<SPDesktopWidget *>(parent->get_data("desktopwidget")); - GtkAllocation allocation; - gtk_widget_get_allocation(dtw->vruler, &allocation); - return allocation.width; - } - return 0; -} - -int get_hruler_thickness(); -int get_vruler_thickness(); - /** * Zoom keeping the point 'c' fixed in the desktop window. */ diff --git a/src/desktop.h b/src/desktop.h index 64a76a9a4..cf154cea3 100644 --- a/src/desktop.h +++ b/src/desktop.h @@ -439,8 +439,6 @@ public: void setDocument (SPDocument* doc) override; bool shutdown() override; - guint get_hruler_thickness(); - guint get_vruler_thickness(); guint get_vscroll_thickness(); guint get_hscroll_thickness(); diff --git a/src/display/sp-canvas.cpp b/src/display/sp-canvas.cpp index 5c2a6d014..bd4f66449 100644 --- a/src/display/sp-canvas.cpp +++ b/src/display/sp-canvas.cpp @@ -41,6 +41,7 @@ #include "preferences.h" #include "sodipodi-ctrlrect.h" #include "ui/tools/tool-base.h" +#include "widgets/desktop-widget.h" #include <2geom/affine.h> #include <2geom/rect.h> @@ -2389,8 +2390,10 @@ int SPCanvas::paint() arena = SP_CANVAS_ARENA(desktop->drawing); split_x = !_split_vertical ? 0 : _split_value; split_y = _split_vertical ? 0 : _split_value; - guint hruler_gap = desktop->get_hruler_thickness(); - guint vruler_gap = desktop->get_vruler_thickness(); + auto window = desktop->getToplevel(); + auto dtw = static_cast<SPDesktopWidget *>(window->get_data("desktopwidget")); + guint hruler_gap = dtw->get_hruler_thickness(); + guint vruler_gap = dtw->get_vruler_thickness(); Geom::IntCoord coord1x = allocation.x + (int(allocation.width * split_x)) - (3 * canvas->_device_scale) - vruler_gap; Geom::IntCoord coord1y = diff --git a/src/widgets/desktop-widget.cpp b/src/widgets/desktop-widget.cpp index 0a7a5ba1a..83c8f5f8d 100644 --- a/src/widgets/desktop-widget.cpp +++ b/src/widgets/desktop-widget.cpp @@ -308,7 +308,7 @@ sp_desktop_widget_class_init (SPDesktopWidgetClass *klass) void SPDesktopWidget::canvas_tbl_size_allocate(Gtk::Allocation& /*allocation*/) { - sp_desktop_widget_update_rulers(this); + update_rulers(); } /** @@ -392,35 +392,33 @@ void SPDesktopWidget::init( SPDesktopWidget *dtw ) dtw->_canvas_tbl->attach(*dtw->_guides_lock, 0, 0, 1, 1); /* Horizontal ruler */ - GtkWidget *eventbox = gtk_event_box_new (); - dtw->hruler = sp_ruler_new(GTK_ORIENTATION_HORIZONTAL); - gtk_widget_set_name(dtw->hruler, "HorizontalRuler"); - dtw->hruler_box = eventbox; + dtw->_hruler = sp_ruler_new(GTK_ORIENTATION_HORIZONTAL); + gtk_widget_set_name(dtw->_hruler, "HorizontalRuler"); + dtw->_hruler_box = Gtk::manage(new Gtk::EventBox()); Inkscape::Util::Unit const *pt = unit_table.getUnit("pt"); - sp_ruler_set_unit(SP_RULER(dtw->hruler), pt); - gtk_widget_set_tooltip_text (dtw->hruler_box, gettext(pt->name_plural.c_str())); - gtk_container_add (GTK_CONTAINER (eventbox), dtw->hruler); + sp_ruler_set_unit(SP_RULER(dtw->_hruler), pt); + dtw->_hruler_box->set_tooltip_text(gettext(pt->name_plural.c_str())); + dtw->_hruler_box->add(*Glib::wrap(dtw->_hruler)); - g_signal_connect (G_OBJECT (eventbox), "button_press_event", G_CALLBACK (sp_dt_hruler_event), dtw); - g_signal_connect (G_OBJECT (eventbox), "button_release_event", G_CALLBACK (sp_dt_hruler_event), dtw); - g_signal_connect (G_OBJECT (eventbox), "motion_notify_event", G_CALLBACK (sp_dt_hruler_event), dtw); + g_signal_connect (G_OBJECT (dtw->_hruler_box->gobj()), "button_press_event", G_CALLBACK (sp_dt_hruler_event), dtw); + g_signal_connect (G_OBJECT (dtw->_hruler_box->gobj()), "button_release_event", G_CALLBACK (sp_dt_hruler_event), dtw); + g_signal_connect (G_OBJECT (dtw->_hruler_box->gobj()), "motion_notify_event", G_CALLBACK (sp_dt_hruler_event), dtw); - dtw->_canvas_tbl->attach(*Glib::wrap(eventbox), 1, 0, 1, 1); + dtw->_canvas_tbl->attach(*dtw->_hruler_box, 1, 0, 1, 1); /* Vertical ruler */ - eventbox = gtk_event_box_new (); - dtw->vruler = sp_ruler_new(GTK_ORIENTATION_VERTICAL); - gtk_widget_set_name(dtw->vruler, "VerticalRuler"); - dtw->vruler_box = eventbox; - sp_ruler_set_unit (SP_RULER (dtw->vruler), pt); - gtk_widget_set_tooltip_text (dtw->vruler_box, gettext(pt->name_plural.c_str())); - gtk_container_add (GTK_CONTAINER (eventbox), GTK_WIDGET (dtw->vruler)); + dtw->_vruler = sp_ruler_new(GTK_ORIENTATION_VERTICAL); + gtk_widget_set_name(dtw->_vruler, "VerticalRuler"); + dtw->_vruler_box = Gtk::manage(new Gtk::EventBox()); + sp_ruler_set_unit (SP_RULER (dtw->_vruler), pt); + dtw->_vruler_box->set_tooltip_text(gettext(pt->name_plural.c_str())); + dtw->_vruler_box->add(*Glib::wrap(dtw->_vruler)); - g_signal_connect (G_OBJECT (eventbox), "button_press_event", G_CALLBACK (sp_dt_vruler_event), dtw); - g_signal_connect (G_OBJECT (eventbox), "button_release_event", G_CALLBACK (sp_dt_vruler_event), dtw); - g_signal_connect (G_OBJECT (eventbox), "motion_notify_event", G_CALLBACK (sp_dt_vruler_event), dtw); + g_signal_connect (G_OBJECT (dtw->_vruler_box->gobj()), "button_press_event", G_CALLBACK (sp_dt_vruler_event), dtw); + g_signal_connect (G_OBJECT (dtw->_vruler_box->gobj()), "button_release_event", G_CALLBACK (sp_dt_vruler_event), dtw); + g_signal_connect (G_OBJECT (dtw->_vruler_box->gobj()), "motion_notify_event", G_CALLBACK (sp_dt_vruler_event), dtw); - dtw->_canvas_tbl->attach(*Glib::wrap(eventbox), 0, 1, 1, 1); + dtw->_canvas_tbl->attach(*dtw->_vruler_box, 0, 1, 1, 1); // Horizontal scrollbar dtw->_hadj = Gtk::Adjustment::create(0.0, -4000.0, 4000.0, 10.0, 100.0, 4.0); @@ -500,8 +498,8 @@ void SPDesktopWidget::init( SPDesktopWidget *dtw ) #endif // defined(HAVE_LIBLCMS1) || defined(HAVE_LIBLCMS2) gtk_widget_set_can_focus (GTK_WIDGET (dtw->canvas), TRUE); - sp_ruler_add_track_widget (SP_RULER(dtw->hruler), GTK_WIDGET(dtw->canvas)); - sp_ruler_add_track_widget (SP_RULER(dtw->vruler), GTK_WIDGET(dtw->canvas)); + sp_ruler_add_track_widget (SP_RULER(dtw->_hruler), GTK_WIDGET(dtw->canvas)); + sp_ruler_add_track_widget (SP_RULER(dtw->_vruler), GTK_WIDGET(dtw->canvas)); auto css_provider = gtk_css_provider_new(); auto style_context = gtk_widget_get_style_context(GTK_WIDGET(dtw->canvas)); @@ -1518,12 +1516,12 @@ void SPDesktopWidget::layoutWidgets() if (!prefs->getBool(pref_root + "rulers/state", true)) { dtw->_guides_lock->hide(); - gtk_widget_hide (dtw->hruler); - gtk_widget_hide (dtw->vruler); + gtk_widget_hide (dtw->_hruler); + gtk_widget_hide (dtw->_vruler); } else { dtw->_guides_lock->show_all(); - gtk_widget_show_all (dtw->hruler); - gtk_widget_show_all (dtw->vruler); + gtk_widget_show_all (dtw->_hruler); + gtk_widget_show_all (dtw->_vruler); } } @@ -1664,7 +1662,7 @@ SPDesktopWidget* SPDesktopWidget::createInstance(SPNamedView *namedview) dtw->_selected_style->setDesktop(dtw->desktop); /* Once desktop is set, we can update rulers */ - sp_desktop_widget_update_rulers (dtw); + dtw->update_rulers(); sp_view_widget_set_view (SP_VIEW_WIDGET (dtw), dtw->desktop); @@ -1696,23 +1694,23 @@ SPDesktopWidget* SPDesktopWidget::createInstance(SPNamedView *namedview) void -sp_desktop_widget_update_rulers (SPDesktopWidget *dtw) +SPDesktopWidget::update_rulers() { - Geom::Rect viewbox = dtw->desktop->get_display_area(); + Geom::Rect viewbox = desktop->get_display_area(); - double lower_x = dtw->dt2r * (viewbox.left() - dtw->ruler_origin[Geom::X]); - double upper_x = dtw->dt2r * (viewbox.right() - dtw->ruler_origin[Geom::X]); - sp_ruler_set_range(SP_RULER(dtw->hruler), + double lower_x = dt2r * (viewbox.left() - ruler_origin[Geom::X]); + double upper_x = dt2r * (viewbox.right() - ruler_origin[Geom::X]); + sp_ruler_set_range(SP_RULER(_hruler), lower_x, upper_x, (upper_x - lower_x)); - double lower_y = dtw->dt2r * (viewbox.bottom() - dtw->ruler_origin[Geom::Y]); - double upper_y = dtw->dt2r * (viewbox.top() - dtw->ruler_origin[Geom::Y]); - if (dtw->desktop->is_yaxisdown()) { + double lower_y = dt2r * (viewbox.bottom() - ruler_origin[Geom::Y]); + double upper_y = dt2r * (viewbox.top() - ruler_origin[Geom::Y]); + if (desktop->is_yaxisdown()) { std::swap(lower_y, upper_y); } - sp_ruler_set_range(SP_RULER(dtw->vruler), + sp_ruler_set_range(SP_RULER(_vruler), lower_y, upper_y, (upper_y - lower_y)); @@ -1727,8 +1725,8 @@ void SPDesktopWidget::namedviewModified(SPObject *obj, guint flags) this->dt2r = 1. / nv->display_units->factor; this->ruler_origin = Geom::Point(0,0); //nv->gridorigin; Why was the grid origin used here? - sp_ruler_set_unit(SP_RULER (this->vruler), nv->getDisplayUnit()); - sp_ruler_set_unit(SP_RULER (this->hruler), nv->getDisplayUnit()); + sp_ruler_set_unit(SP_RULER (this->_vruler), nv->getDisplayUnit()); + sp_ruler_set_unit(SP_RULER (this->_hruler), nv->getDisplayUnit()); /* This loops through all the grandchildren of aux toolbox, * and for each that it finds, it performs an sp_search_by_data_recursive(), @@ -1771,10 +1769,10 @@ void SPDesktopWidget::namedviewModified(SPObject *obj, guint flags) } // children } // if aux_toolbox is a container - gtk_widget_set_tooltip_text(this->hruler_box, gettext(nv->display_units->name_plural.c_str())); - gtk_widget_set_tooltip_text(this->vruler_box, gettext(nv->display_units->name_plural.c_str())); + _hruler_box->set_tooltip_text(gettext(nv->display_units->name_plural.c_str())); + _vruler_box->set_tooltip_text(gettext(nv->display_units->name_plural.c_str())); - sp_desktop_widget_update_rulers(this); + update_rulers(); ToolboxFactory::updateSnapToolbox(this->desktop, nullptr, this->snap_toolbox); } } @@ -2060,13 +2058,13 @@ SPDesktopWidget::toggle_rulers() Inkscape::Preferences *prefs = Inkscape::Preferences::get(); if (_guides_lock->get_visible()) { _guides_lock->hide(); - gtk_widget_hide(hruler); - gtk_widget_hide(vruler); + gtk_widget_hide(_hruler); + gtk_widget_hide(_vruler); prefs->setBool(desktop->is_fullscreen() ? "/fullscreen/rulers/state" : "/window/rulers/state", false); } else { _guides_lock->show_all(); - gtk_widget_show_all(hruler); - gtk_widget_show_all(vruler); + gtk_widget_show_all(_hruler); + gtk_widget_show_all(_vruler); prefs->setBool(desktop->is_fullscreen() ? "/fullscreen/rulers/state" : "/window/rulers/state", true); } } @@ -2185,6 +2183,22 @@ SPDesktopWidget::get_sticky_zoom_active() const { return _sticky_zoom->get_active(); } + +double +SPDesktopWidget::get_hruler_thickness() const +{ + GtkAllocation allocation; + gtk_widget_get_allocation(_hruler, &allocation); + return allocation.height; +} + +double +SPDesktopWidget::get_vruler_thickness() const +{ + GtkAllocation allocation; + gtk_widget_get_allocation(_vruler, &allocation); + return allocation.width; +} /* Local Variables: mode:c++ diff --git a/src/widgets/desktop-widget.h b/src/widgets/desktop-widget.h index 1992710e6..3beeb2a75 100644 --- a/src/widgets/desktop-widget.h +++ b/src/widgets/desktop-widget.h @@ -33,6 +33,7 @@ class SPObject; namespace Gtk { class Box; +class EventBox; class Grid; class MenuBar; class Scrollbar; @@ -55,7 +56,6 @@ void sp_desktop_widget_show_decorations(SPDesktopWidget *dtw, gboolean show); void sp_desktop_widget_iconify(SPDesktopWidget *dtw); void sp_desktop_widget_maximize(SPDesktopWidget *dtw); void sp_desktop_widget_fullscreen(SPDesktopWidget *dtw); -void sp_desktop_widget_update_rulers (SPDesktopWidget *dtw); void sp_desktop_widget_update_hruler (SPDesktopWidget *dtw); void sp_desktop_widget_update_vruler (SPDesktopWidget *dtw); @@ -132,11 +132,13 @@ private: Gtk::Grid *_canvas_tbl; sigc::connection _canvas_tbl_size_allocate_connection; -public: + Gtk::EventBox *_hruler_box; + Gtk::EventBox *_vruler_box; // eventboxes for setting tooltips /* Rulers */ - GtkWidget *hruler, *vruler; - GtkWidget *hruler_box, *vruler_box; // eventboxes for setting tooltips + GtkWidget *_hruler, *_vruler; + +public: gint coord_status_id, select_status_id; @@ -198,7 +200,7 @@ public: void disableInteraction() override { _dtw->disableInteraction(); } void activateDesktop() override { sp_dtw_desktop_activate(_dtw); } void deactivateDesktop() override { sp_dtw_desktop_deactivate(_dtw); } - void updateRulers() override { sp_desktop_widget_update_rulers(_dtw); } + void updateRulers() override { _dtw->update_rulers(); } void updateScrollbars(double scale) override { _dtw->update_scrollbars(scale); } void toggleRulers() override { _dtw->toggle_rulers(); } void toggleScrollbars() override { _dtw->toggle_scrollbars(); } @@ -275,6 +277,9 @@ public: bool get_sticky_zoom_active() const; void update_zoom(); void update_rotation(); + void update_rulers(); + double get_hruler_thickness() const; + double get_vruler_thickness() const; private: GtkWidget *tool_toolbox; |
