diff options
| author | Jabier Arraiza Cenoz <jabier.arraiza@marker.es> | 2014-02-28 18:36:08 +0000 |
|---|---|---|
| committer | Jabiertxof <jtx@jtx.marker.es> | 2014-02-28 18:36:08 +0000 |
| commit | 5974e91ff387b44b30434d3a2ede5f1ea6791a7c (patch) | |
| tree | 93c062f10f51d6ea670d716d49b5c5883181e055 /src/display/sp-canvas.cpp | |
| parent | update to trunk (diff) | |
| parent | Spray tool: (diff) | |
| download | inkscape-5974e91ff387b44b30434d3a2ede5f1ea6791a7c.tar.gz inkscape-5974e91ff387b44b30434d3a2ede5f1ea6791a7c.zip | |
update to trunk
(bzr r11950.1.259)
Diffstat (limited to 'src/display/sp-canvas.cpp')
| -rw-r--r-- | src/display/sp-canvas.cpp | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/src/display/sp-canvas.cpp b/src/display/sp-canvas.cpp index d9640f763..c502daf64 100644 --- a/src/display/sp-canvas.cpp +++ b/src/display/sp-canvas.cpp @@ -1387,8 +1387,13 @@ void SPCanvasImpl::realize(GtkWidget *widget) gdk_window_set_user_data (window, widget); Inkscape::Preferences *prefs = Inkscape::Preferences::get(); - if ( prefs->getBool("/options/useextinput/value", true) ) + if (prefs->getBool("/options/useextinput/value", true)) { gtk_widget_set_events(widget, attributes.event_mask); +#if !GTK_CHECK_VERSION(3,0,0) + gtk_widget_set_extension_events(widget, GDK_EXTENSION_EVENTS_ALL); + // TODO: Extension event stuff has been deprecated in GTK+ 3 +#endif + } #if !GTK_CHECK_VERSION(3,0,0) // This does nothing in GTK+ 3 @@ -1524,23 +1529,22 @@ int SPCanvasImpl::emitEvent(SPCanvas *canvas, GdkEvent *event) // Convert to world coordinates -- we have two cases because of different // offsets of the fields in the event structures. - // - GdkEvent ev = *event; + GdkEvent *ev = gdk_event_copy(event); - switch (ev.type) { + switch (ev->type) { case GDK_ENTER_NOTIFY: case GDK_LEAVE_NOTIFY: - ev.crossing.x += canvas->x0; - ev.crossing.y += canvas->y0; + ev->crossing.x += canvas->x0; + ev->crossing.y += canvas->y0; break; case GDK_MOTION_NOTIFY: case GDK_BUTTON_PRESS: case GDK_2BUTTON_PRESS: case GDK_3BUTTON_PRESS: case GDK_BUTTON_RELEASE: - ev.motion.x += canvas->x0; - ev.motion.y += canvas->y0; + ev->motion.x += canvas->x0; + ev->motion.y += canvas->y0; break; default: break; @@ -1593,12 +1597,14 @@ int SPCanvasImpl::emitEvent(SPCanvas *canvas, GdkEvent *event) while (item && !finished) { g_object_ref (item); - g_signal_emit (G_OBJECT (item), item_signals[ITEM_EVENT], 0, &ev, &finished); + g_signal_emit (G_OBJECT (item), item_signals[ITEM_EVENT], 0, ev, &finished); SPCanvasItem *parent = item->parent; g_object_unref (item); item = parent; } + gdk_event_free(ev); + return finished; } |
