summaryrefslogtreecommitdiffstats
path: root/src/mesh-context.cpp
diff options
context:
space:
mode:
authorMarkus Engel <markus.engel@tum.de>2013-04-08 22:23:07 +0000
committerMarkus Engel <markus.engel@tum.de>2013-04-08 22:23:07 +0000
commite58cac52b258e64c2cc88b0044bf9cfbaecedce2 (patch)
treef2a5d2992b8658a583e740321b1a4b461aad54a9 /src/mesh-context.cpp
parentReactivated independent reference counting in the SPObject tree. (diff)
downloadinkscape-e58cac52b258e64c2cc88b0044bf9cfbaecedce2.tar.gz
inkscape-e58cac52b258e64c2cc88b0044bf9cfbaecedce2.zip
Started conversion of SPEventContext tree; added virtual pads to all classes.
(bzr r11608.1.89)
Diffstat (limited to 'src/mesh-context.cpp')
-rw-r--r--src/mesh-context.cpp35
1 files changed, 29 insertions, 6 deletions
diff --git a/src/mesh-context.cpp b/src/mesh-context.cpp
index 36712d15d..78cc49396 100644
--- a/src/mesh-context.cpp
+++ b/src/mesh-context.cpp
@@ -74,8 +74,16 @@ static void sp_mesh_context_class_init(SPMeshContextClass *klass)
event_context_class->root_handler = sp_mesh_context_root_handler;
}
+CMeshContext::CMeshContext(SPMeshContext* meshcontext) : CEventContext(meshcontext) {
+ this->spmeshcontext = meshcontext;
+}
+
static void sp_mesh_context_init(SPMeshContext *gr_context)
{
+ gr_context->cmeshcontext = new CMeshContext(gr_context);
+ delete gr_context->ceventcontext;
+ gr_context->ceventcontext = gr_context->cmeshcontext;
+
SPEventContext *event_context = SP_EVENT_CONTEXT(gr_context);
gr_context->cursor_addnode = false;
@@ -244,11 +252,18 @@ mesh_subselection_changed (gpointer, gpointer data)
static void sp_mesh_context_setup(SPEventContext *ec)
{
+ ec->ceventcontext->setup();
+}
+
+void CMeshContext::setup() {
+ SPEventContext* ec = this->speventcontext;
+
SPMeshContext *rc = SP_MESH_CONTEXT(ec);
- if (((SPEventContextClass *) sp_mesh_context_parent_class)->setup) {
- ((SPEventContextClass *) sp_mesh_context_parent_class)->setup(ec);
- }
+// if (((SPEventContextClass *) sp_mesh_context_parent_class)->setup) {
+// ((SPEventContextClass *) sp_mesh_context_parent_class)->setup(ec);
+// }
+ CEventContext::setup();
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
if (prefs->getBool("/tools/mesh/selcue", true)) {
@@ -455,6 +470,12 @@ Handles all keyboard and mouse input for meshs.
static gint
sp_mesh_context_root_handler(SPEventContext *event_context, GdkEvent *event)
{
+ return event_context->ceventcontext->root_handler(event);
+}
+
+gint CMeshContext::root_handler(GdkEvent* event) {
+ SPEventContext* event_context = this->speventcontext;
+
// static int count = 0;
// std::cout << "sp_mesh_context_root_handler: " << count++ << std::endl;
static bool dragging;
@@ -924,15 +945,17 @@ sp_mesh_context_root_handler(SPEventContext *event_context, GdkEvent *event)
}
if (!ret) {
- if (((SPEventContextClass *) sp_mesh_context_parent_class)->root_handler) {
- ret = ((SPEventContextClass *) sp_mesh_context_parent_class)->root_handler(event_context, event);
- }
+// if (((SPEventContextClass *) sp_mesh_context_parent_class)->root_handler) {
+// ret = ((SPEventContextClass *) sp_mesh_context_parent_class)->root_handler(event_context, event);
+// }
+ ret = CEventContext::root_handler(event);
}
return ret;
}
+
static void sp_mesh_drag(SPMeshContext &rc, Geom::Point const /*pt*/, guint /*state*/, guint32 /*etime*/)
{