summaryrefslogtreecommitdiffstats
path: root/src/widgets/sp-widget.cpp
diff options
context:
space:
mode:
authorAlex Valavanis <valavanisalex@gmail.com>2014-08-24 15:20:54 +0000
committerAlex Valavanis <valavanisalex@gmail.com>2014-08-24 15:20:54 +0000
commitc2a65687bd392c251a320030b0a6a813e093dc9f (patch)
tree8e1e4af44d85c6e60942718ca50fdee5a3e27275 /src/widgets/sp-widget.cpp
parentMore GObject boilerplate reduction (diff)
downloadinkscape-c2a65687bd392c251a320030b0a6a813e093dc9f.tar.gz
inkscape-c2a65687bd392c251a320030b0a6a813e093dc9f.zip
More GObject boilerplate reduction
(bzr r13341.1.175)
Diffstat (limited to 'src/widgets/sp-widget.cpp')
-rw-r--r--src/widgets/sp-widget.cpp73
1 files changed, 22 insertions, 51 deletions
diff --git a/src/widgets/sp-widget.cpp b/src/widgets/sp-widget.cpp
index 0e2295e36..257d8ef30 100644
--- a/src/widgets/sp-widget.cpp
+++ b/src/widgets/sp-widget.cpp
@@ -36,8 +36,6 @@ public:
SPWidgetImpl(SPWidget &target);
~SPWidgetImpl();
- static void classInit(SPWidgetClass *klass);
- static void init(SPWidget *widget);
static void dispose(GObject *object);
static void show(GtkWidget *widget);
static void hide(GtkWidget *widget);
@@ -68,57 +66,20 @@ public:
void setSelection(Application *inkscape, Selection *selection);
private:
- static GtkBinClass *parentClass;
- static guint signals[LAST_SIGNAL];
-
SPWidget &_target;
};
-
-GtkBinClass *SPWidgetImpl::parentClass = 0;
-guint SPWidgetImpl::signals[LAST_SIGNAL] = {0};
-
} // namespace Inkscape
-GType SPWidget::getType()
-{
- static GType type = 0;
- if (!type) {
- static GTypeInfo const info = {
- sizeof(SPWidgetClass),
- NULL, NULL,
- reinterpret_cast<GClassInitFunc>(SPWidgetImpl::classInit),
- NULL, NULL,
- sizeof(SPWidget),
- 0,
- reinterpret_cast<GInstanceInitFunc>(SPWidgetImpl::init),
- NULL
- };
- type = g_type_register_static(GTK_TYPE_BIN,
- "SPWidget",
- &info,
- static_cast<GTypeFlags>(0));
- }
- return type;
-}
+G_DEFINE_TYPE(SPWidget, sp_widget, GTK_TYPE_BIN);
-namespace Inkscape {
+static guint signals[LAST_SIGNAL] = {0};
-SPWidgetImpl::SPWidgetImpl(SPWidget &target) :
- _target(target)
-{
-}
-
-SPWidgetImpl::~SPWidgetImpl()
-{
-}
-
-void SPWidgetImpl::classInit(SPWidgetClass *klass)
+static void
+sp_widget_class_init(SPWidgetClass *klass)
{
GObjectClass *object_class = reinterpret_cast<GObjectClass *>(klass);
GtkWidgetClass *widget_class = reinterpret_cast<GtkWidgetClass *>(klass);
- parentClass = reinterpret_cast<GtkBinClass *>(g_type_class_peek_parent(klass));
-
object_class->dispose = SPWidgetImpl::dispose;
signals[CONSTRUCT] = g_signal_new ("construct",
@@ -169,13 +130,23 @@ void SPWidgetImpl::classInit(SPWidgetClass *klass)
widget_class->size_allocate = SPWidgetImpl::sizeAllocate;
}
-void SPWidgetImpl::init(SPWidget *spw)
+static void sp_widget_init(SPWidget *spw)
{
spw->inkscape = NULL;
-
spw->_impl = new SPWidgetImpl(*spw); // ctor invoked after all other init
}
+namespace Inkscape {
+
+SPWidgetImpl::SPWidgetImpl(SPWidget &target) :
+ _target(target)
+{
+}
+
+SPWidgetImpl::~SPWidgetImpl()
+{
+}
+
void SPWidgetImpl::dispose(GObject *object)
{
SPWidget *spw = reinterpret_cast<SPWidget *>(object);
@@ -194,8 +165,8 @@ void SPWidgetImpl::dispose(GObject *object)
delete spw->_impl;
spw->_impl = 0;
- if (reinterpret_cast<GObjectClass *>(parentClass)->dispose) {
- (*reinterpret_cast<GObjectClass *>(parentClass)->dispose)(object);
+ if (G_OBJECT_CLASS(sp_widget_parent_class)->dispose) {
+ G_OBJECT_CLASS(sp_widget_parent_class)->dispose(object);
}
}
@@ -210,8 +181,8 @@ void SPWidgetImpl::show(GtkWidget *widget)
g_signal_connect(spw->inkscape, "set_selection", G_CALLBACK(SPWidgetImpl::setSelectionCB), spw);
}
- if (reinterpret_cast<GtkWidgetClass *>(parentClass)->show) {
- (*reinterpret_cast<GtkWidgetClass *>(parentClass)->show)(widget);
+ if (GTK_WIDGET_CLASS(sp_widget_parent_class)->show) {
+ GTK_WIDGET_CLASS(sp_widget_parent_class)->show(widget);
}
}
@@ -224,8 +195,8 @@ void SPWidgetImpl::hide(GtkWidget *widget)
sp_signal_disconnect_by_data(spw->inkscape, spw);
}
- if (reinterpret_cast<GtkWidgetClass *>(parentClass)->hide) {
- (*reinterpret_cast<GtkWidgetClass *>(parentClass)->hide)(widget);
+ if (GTK_WIDGET_CLASS(sp_widget_parent_class)->hide) {
+ GTK_WIDGET_CLASS(sp_widget_parent_class)->hide(widget);
}
}