summaryrefslogtreecommitdiffstats
path: root/src/widgets/desktop-widget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/widgets/desktop-widget.cpp')
-rw-r--r--src/widgets/desktop-widget.cpp47
1 files changed, 21 insertions, 26 deletions
diff --git a/src/widgets/desktop-widget.cpp b/src/widgets/desktop-widget.cpp
index 6033d8a88..0a7a5ba1a 100644
--- a/src/widgets/desktop-widget.cpp
+++ b/src/widgets/desktop-widget.cpp
@@ -305,12 +305,10 @@ sp_desktop_widget_class_init (SPDesktopWidgetClass *klass)
* This adjusts the range of the rulers when the dock container is adjusted
* (fixes lp:950552)
*/
-static void canvas_tbl_size_allocate(GtkWidget * widget,
- GdkRectangle * /*allocation*/,
- gpointer data)
+void
+SPDesktopWidget::canvas_tbl_size_allocate(Gtk::Allocation& /*allocation*/)
{
- SPDesktopWidget *dtw = SP_DESKTOP_WIDGET(data);
- sp_desktop_widget_update_rulers(dtw);
+ sp_desktop_widget_update_rulers(this);
}
/**
@@ -371,8 +369,8 @@ void SPDesktopWidget::init( SPDesktopWidget *dtw )
dtw->_hbox->pack_start(*tbl_wrapper, true, true, 1);
/* Canvas table */
- dtw->canvas_tbl = gtk_grid_new();
- gtk_widget_set_name(dtw->canvas_tbl, "CanvasTable");
+ dtw->_canvas_tbl = Gtk::manage(new Gtk::Grid());
+ dtw->_canvas_tbl->set_name("CanvasTable");
// Added to table wrapper later either directly or via paned window shared with dock.
@@ -391,7 +389,7 @@ void SPDesktopWidget::init( SPDesktopWidget *dtw )
auto context = dtw->_guides_lock->get_style_context();
context->add_provider(guides_lock_style_provider, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
dtw->_guides_lock->signal_toggled().connect(sigc::mem_fun(dtw, &SPDesktopWidget::update_guides_lock));
- gtk_grid_attach(GTK_GRID(dtw->canvas_tbl), GTK_WIDGET(dtw->_guides_lock->gobj()), 0, 0, 1, 1);
+ dtw->_canvas_tbl->attach(*dtw->_guides_lock, 0, 0, 1, 1);
/* Horizontal ruler */
GtkWidget *eventbox = gtk_event_box_new ();
@@ -407,7 +405,7 @@ void SPDesktopWidget::init( SPDesktopWidget *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);
- gtk_grid_attach(GTK_GRID(dtw->canvas_tbl), eventbox, 1, 0, 1, 1);
+ dtw->_canvas_tbl->attach(*Glib::wrap(eventbox), 1, 0, 1, 1);
/* Vertical ruler */
eventbox = gtk_event_box_new ();
@@ -422,13 +420,13 @@ void SPDesktopWidget::init( SPDesktopWidget *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);
- gtk_grid_attach(GTK_GRID(dtw->canvas_tbl), eventbox, 0, 1, 1, 1);
+ dtw->_canvas_tbl->attach(*Glib::wrap(eventbox), 0, 1, 1, 1);
// Horizontal scrollbar
dtw->_hadj = Gtk::Adjustment::create(0.0, -4000.0, 4000.0, 10.0, 100.0, 4.0);
dtw->_hscrollbar = Gtk::manage(new Gtk::Scrollbar(dtw->_hadj));
dtw->_hscrollbar->set_name("HorizontalScrollbar");
- gtk_grid_attach(GTK_GRID(dtw->canvas_tbl), GTK_WIDGET(dtw->_hscrollbar->gobj()), 1, 2, 1, 1);
+ dtw->_canvas_tbl->attach(*dtw->_hscrollbar, 1, 2, 1, 1);
// By packing the sticky zoom button and vertical scrollbar in a box it allows the canvas to
// expand fully to the top if the rulers are hidden.
@@ -436,7 +434,7 @@ void SPDesktopWidget::init( SPDesktopWidget *dtw )
// Vertical Scrollbar box
dtw->_vscrollbar_box = Gtk::manage(new Gtk::Box(Gtk::ORIENTATION_VERTICAL));
- gtk_grid_attach(GTK_GRID(dtw->canvas_tbl), GTK_WIDGET(dtw->_vscrollbar_box->gobj()), 2, 0, 1, 2);
+ dtw->_canvas_tbl->attach(*dtw->_vscrollbar_box, 2, 0, 1, 2);
// Sticky zoom button
dtw->_sticky_zoom = Glib::wrap(GTK_TOGGLE_BUTTON(sp_button_new_from_data ( GTK_ICON_SIZE_MENU,
@@ -488,7 +486,7 @@ void SPDesktopWidget::init( SPDesktopWidget *dtw )
dtw->cms_adjust_set_sensitive(false);
#endif // defined(HAVE_LIBLCMS1) || defined(HAVE_LIBLCMS2)
- gtk_grid_attach( GTK_GRID(dtw->canvas_tbl), GTK_WIDGET(dtw->_cms_adjust->gobj()), 2, 2, 1, 1);
+ dtw->_canvas_tbl->attach(*dtw->_cms_adjust, 2, 2, 1, 1);
{
if (!watcher) {
watcher = new CMSPrefWatcher();
@@ -520,7 +518,7 @@ void SPDesktopWidget::init( SPDesktopWidget *dtw )
gtk_widget_set_hexpand(GTK_WIDGET(dtw->canvas), TRUE);
gtk_widget_set_vexpand(GTK_WIDGET(dtw->canvas), TRUE);
- gtk_grid_attach(GTK_GRID(dtw->canvas_tbl), GTK_WIDGET(dtw->canvas), 1, 1, 1, 1);
+ dtw->_canvas_tbl->attach(*Glib::wrap(GTK_WIDGET(dtw->canvas)), 1, 1, 1, 1);
/* Dock */
bool create_dock =
@@ -532,7 +530,7 @@ void SPDesktopWidget::init( SPDesktopWidget *dtw )
auto paned = new Gtk::Paned();
paned->set_name("Canvas_and_Dock");
- paned->pack1(*Glib::wrap(dtw->canvas_tbl));
+ paned->pack1(*dtw->_canvas_tbl);
paned->pack2(dtw->_dock->getWidget(), Gtk::FILL);
/* Prevent the paned from catching F6 and F8 by unsetting the default callbacks */
@@ -545,9 +543,9 @@ void SPDesktopWidget::init( SPDesktopWidget *dtw )
paned->set_vexpand(true);
tbl_wrapper->attach(*paned, 1, 1, 1, 1);
} else {
- gtk_widget_set_hexpand(GTK_WIDGET(dtw->canvas_tbl), TRUE);
- gtk_widget_set_vexpand(GTK_WIDGET(dtw->canvas_tbl), TRUE);
- gtk_grid_attach(GTK_GRID(tbl_wrapper), GTK_WIDGET (dtw->canvas_tbl), 1, 1, 1, 1);
+ dtw->_canvas_tbl->set_hexpand(true);
+ dtw->_canvas_tbl->set_vexpand(true);
+ gtk_grid_attach(GTK_GRID(tbl_wrapper), GTK_WIDGET (dtw->_canvas_tbl->gobj()), 1, 1, 1, 1);
}
// connect scrollbar signals
@@ -557,8 +555,8 @@ void SPDesktopWidget::init( SPDesktopWidget *dtw )
// --------------- Status Tool Bar ------------------//
// Selected Style (Fill/Stroke/Opacity)
- dtw->selected_style = new Inkscape::UI::Widget::SelectedStyle(true);
- dtw->_statusbar->pack_start(*dtw->selected_style, false, false);
+ dtw->_selected_style = new Inkscape::UI::Widget::SelectedStyle(true);
+ dtw->_statusbar->pack_start(*dtw->_selected_style, false, false);
// Separator
dtw->_statusbar->pack_start(*Gtk::manage(new Gtk::Separator(Gtk::ORIENTATION_VERTICAL)),
@@ -715,10 +713,7 @@ void SPDesktopWidget::init( SPDesktopWidget *dtw )
// Ensure that ruler ranges are updated correctly whenever the canvas table
// is resized
- g_signal_connect (G_OBJECT (dtw->canvas_tbl),
- "size-allocate",
- G_CALLBACK (canvas_tbl_size_allocate),
- dtw);
+ dtw->_canvas_tbl_size_allocate_connection = dtw->_canvas_tbl->signal_size_allocate().connect(sigc::mem_fun(dtw, &SPDesktopWidget::canvas_tbl_size_allocate));
}
/**
@@ -756,7 +751,7 @@ SPDesktopWidget::dispose(GObject *object)
// Canvas
g_signal_handlers_disconnect_by_func (G_OBJECT (dtw->canvas), (gpointer) G_CALLBACK (sp_desktop_widget_event), dtw);
- g_signal_handlers_disconnect_by_func (G_OBJECT (dtw->canvas_tbl), (gpointer) G_CALLBACK (canvas_tbl_size_allocate), dtw);
+ dtw->_canvas_tbl_size_allocate_connection.disconnect();
dtw->layer_selector->setDesktop(nullptr);
dtw->layer_selector->unreference();
@@ -1666,7 +1661,7 @@ SPDesktopWidget* SPDesktopWidget::createInstance(SPNamedView *namedview)
// This needs desktop set for its spacing preferences.
init_avoided_shape_geometry(dtw->desktop);
- dtw->selected_style->setDesktop(dtw->desktop);
+ dtw->_selected_style->setDesktop(dtw->desktop);
/* Once desktop is set, we can update rulers */
sp_desktop_widget_update_rulers (dtw);