Code

Filter effects dialog:
[inkscape.git] / src / desktop-events.cpp
index bab39d332b6bddd84a49890b6efe2ccb0ffb6e94..a1026481199609c52e32905a33a19b5f95684e8b 100644 (file)
 
 /* Root item handler */
 
-
 int sp_desktop_root_handler(SPCanvasItem *item, GdkEvent *event, SPDesktop *desktop)
 {
     return sp_event_context_root_handler(desktop->event_context, event);
 }
 
-/*
- * fixme: this conatins a hack, to deal with deleting a view, which is
- * completely on another view, in which case active_desktop will not be updated
- *
- */
-
-int sp_desktop_item_handler(SPCanvasItem *item, GdkEvent *event, gpointer data)
-{
-    gpointer ddata = gtk_object_get_data(GTK_OBJECT(item->canvas), "SPDesktop");
-    g_return_val_if_fail(ddata != NULL, FALSE);
-
-    SPDesktop *desktop = static_cast<SPDesktop*>(ddata);
-
-    return sp_event_context_item_handler(desktop->event_context, SP_ITEM(data), event);
-}
-
 
 static gint sp_dt_ruler_event(GtkWidget *widget, GdkEvent *event, SPDesktopWidget *dtw, bool horiz)
 {
@@ -85,7 +68,7 @@ static gint sp_dt_ruler_event(GtkWidget *widget, GdkEvent *event, SPDesktopWidge
                 guide = sp_guideline_new(desktop->guides, guide_pos_dt, !horiz);
                 sp_guideline_set_color(SP_GUIDELINE(guide), desktop->namedview->guidehicolor);
                 gdk_pointer_grab(widget->window, FALSE,
-                                 (GdkEventMask)(GDK_BUTTON_RELEASE_MASK | GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK),
+                                 (GdkEventMask)(GDK_BUTTON_RELEASE_MASK | GDK_POINTER_MOTION_MASK ),
                                  NULL, NULL,
                                  event->button.time);
             }
@@ -115,7 +98,8 @@ static gint sp_dt_ruler_event(GtkWidget *widget, GdkEvent *event, SPDesktopWidge
                        : wx )
                      >= 0 )
                 {
-                    Inkscape::XML::Node *repr = sp_repr_new("sodipodi:guide");
+                    Inkscape::XML::Document *xml_doc = sp_document_repr_doc(desktop->doc());
+                    Inkscape::XML::Node *repr = xml_doc->createElement("sodipodi:guide");
                     repr->setAttribute("orientation", (horiz) ? "horizontal" : "vertical");
                     double const guide_pos_dt = event_dt[ horiz
                                                           ? NR::Y
@@ -123,7 +107,8 @@ static gint sp_dt_ruler_event(GtkWidget *widget, GdkEvent *event, SPDesktopWidge
                     sp_repr_set_svg_double(repr, "position", guide_pos_dt);
                     SP_OBJECT_REPR(desktop->namedview)->appendChild(repr);
                     Inkscape::GC::release(repr);
-                    sp_document_done(sp_desktop_document(desktop));
+                    sp_document_done(sp_desktop_document(desktop), SP_VERB_NONE, 
+                                     _("Create guide"));
                 }
                 desktop->set_coordinate_status(event_dt);
             }
@@ -170,8 +155,7 @@ gint sp_dt_guide_event(SPCanvasItem *item, GdkEvent *event, gpointer data)
                 sp_canvas_item_grab(item,
                                     ( GDK_BUTTON_RELEASE_MASK  |
                                       GDK_BUTTON_PRESS_MASK    |
-                                      GDK_POINTER_MOTION_MASK  |
-                                      GDK_POINTER_MOTION_HINT_MASK ),
+                                      GDK_POINTER_MOTION_MASK ),
                                     NULL,
                                     event->button.time);
                 ret = TRUE;
@@ -197,13 +181,16 @@ gint sp_dt_guide_event(SPCanvasItem *item, GdkEvent *event, gpointer data)
                     NR::Point const event_dt(desktop->w2d(event_w));
                     if (sp_canvas_world_pt_inside_window(item->canvas, event_w)) {
                         sp_guide_moveto(*guide, sp_guide_position_from_pt(guide, event_dt), true);
+                        sp_document_done(sp_desktop_document(desktop), SP_VERB_NONE,
+                                     _("Move guide"));
                     } else {
                         /* Undo movement of any attached shapes. */
                         sp_guide_moveto(*guide, guide->position, false);
                         sp_guide_remove(guide);
+                        sp_document_done(sp_desktop_document(desktop), SP_VERB_NONE,
+                                     _("Delete guide"));
                     }
                     moved = false;
-                    sp_document_done(sp_desktop_document(desktop));
                     desktop->set_coordinate_status(event_dt);
                     desktop->setPosition (event_dt);
                 }