]> git.tokkee.org Git - inkscape.git/commitdiff

Code

* knot.h, knot.cpp, connector-context.cpp:
authormjwybrow <mjwybrow@users.sourceforge.net>
Mon, 8 May 2006 09:48:45 +0000 (09:48 +0000)
committermjwybrow <mjwybrow@users.sourceforge.net>
Mon, 8 May 2006 09:48:45 +0000 (09:48 +0000)
      Fix glib-gobject-warnings for knots in the connector tool.

ChangeLog
src/connector-context.cpp
src/knot.cpp
src/knot.h

index 66680310e1b9e209e355195b87479ef985f5d6d3..b7a86f6ba3a843d998bbb8b39bab679db1ee4bfd 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,9 @@
-2006-05-01  Jon A. Cruz  <jon@joncruz.org>
+2006-05-07  Michael Wybrow  <mjwybrow@users.sourceforge.net>
+
+       * knot.h, knot.cpp, connector-context.cpp:
+         Fix glib-gobject-warnings for knots in the connector tool.
+
+2006-05-07  Jon A. Cruz  <jon@joncruz.org>
 
        * src/document-subset.cpp:
          Corrected two bugs, with the minor one hiding the more severe.
index edb9a8b459473939deaf365dc6eafc81e9733cf9..79872536351f4f6e9f9ce72dc2f5bc7591298830 100644 (file)
@@ -954,6 +954,8 @@ static gboolean
 cc_generic_knot_handler(SPCanvasItem *, GdkEvent *event, SPKnot *knot)
 {
     g_assert (knot != NULL);
+    
+    g_object_ref(knot);
 
     SPConnectorContext *cc = SP_CONNECTOR_CONTEXT(
             knot->desktop->event_context);
@@ -962,11 +964,8 @@ cc_generic_knot_handler(SPCanvasItem *, GdkEvent *event, SPKnot *knot)
 
     switch (event->type) {
         case GDK_ENTER_NOTIFY:
-            gtk_object_set (GTK_OBJECT (knot->item), "fill_color",
-                    knot->fill [SP_KNOT_STATE_MOUSEOVER], NULL);
-            gtk_object_set (GTK_OBJECT (knot->item), "stroke_color",
-                    knot->stroke [SP_KNOT_STATE_MOUSEOVER], NULL);
-
+            sp_knot_set_flag(knot, SP_KNOT_MOUSEOVER, TRUE);
+            
             cc->active_handle = knot;
 
             if (knot->tip)
@@ -974,26 +973,25 @@ cc_generic_knot_handler(SPCanvasItem *, GdkEvent *event, SPKnot *knot)
                 knot->desktop->event_context->defaultMessageContext()->set(
                         Inkscape::NORMAL_MESSAGE, knot->tip);
             }
-
+            
             consumed = TRUE;
             break;
         case GDK_LEAVE_NOTIFY:
-            gtk_object_set (GTK_OBJECT (knot->item), "fill_color",
-                    knot->fill [SP_KNOT_STATE_NORMAL], NULL);
-            gtk_object_set (GTK_OBJECT (knot->item), "stroke_color",
-                    knot->stroke [SP_KNOT_STATE_NORMAL], NULL);
+            sp_knot_set_flag(knot, SP_KNOT_MOUSEOVER, FALSE);
 
             cc->active_handle = NULL;
-
+            
             if (knot->tip) {
                 knot->desktop->event_context->defaultMessageContext()->clear();
             }
-
+            
             consumed = TRUE;
             break;
         default:
             break;
     }
+    
+    g_object_unref(knot);
 
     return consumed;
 }
@@ -1079,32 +1077,23 @@ static void cc_set_active_shape(SPConnectorContext *cc, SPItem *item)
 
     // Set center connection point.
     if ( cc->connpthandle == NULL ) {
-       SPKnot * knot = (SPKnot*)g_object_new (SP_TYPE_KNOT, 0);
-
-       knot->desktop = cc->desktop;
-       knot->flags = SP_KNOT_VISIBLE;
-
-       knot->item = sp_canvas_item_new (sp_desktop_controls(cc->desktop),
-               SP_TYPE_CTRL,
-               "anchor", GTK_ANCHOR_CENTER,
-               "filled", TRUE,
-               "stroked", TRUE,
-               "mode", SP_KNOT_MODE_XOR,
-               NULL);
+        SPKnot *knot = sp_knot_new(cc->desktop, 
+                _("<b>Connection point</b>: click or drag to create a new connector"));
 
-       gtk_signal_connect (GTK_OBJECT (knot->item), "event",
-               GTK_SIGNAL_FUNC (cc_generic_knot_handler), knot);
+        knot->setShape(SP_KNOT_SHAPE_SQUARE);
+        knot->setSize(8);
+        knot->setAnchor(GTK_ANCHOR_CENTER);
+        knot->setFill(0xffffff00, 0xff0000ff, 0xff0000ff);
+        sp_knot_update_ctrl(knot);
 
-        knot->fill [SP_KNOT_STATE_NORMAL] = 0xffffff00;
-        knot->fill [SP_KNOT_STATE_MOUSEOVER] = 0xff0000ff;
-        knot->stroke [SP_KNOT_STATE_NORMAL] = 0x01000000;
+        // We don't want to use the standard knot handler,
+        //since we don't want this knot to be draggable.
+        g_signal_handler_disconnect(G_OBJECT(knot->item),
+                knot->_event_handler_id);
+        knot->_event_handler_id = 0;
 
-        g_object_set(G_OBJECT(knot),
-                     "shape", SP_KNOT_SHAPE_SQUARE,
-                     "size", 8,
-                     "anchor", GTK_ANCHOR_CENTER,
-                     "tip", _("<b>Connection point</b>: click or drag to create a new connector"),
-                     NULL);
+        gtk_signal_connect(GTK_OBJECT(knot->item), "event",
+                GTK_SIGNAL_FUNC(cc_generic_knot_handler), knot);
 
         cc->connpthandle = knot;
     }
@@ -1159,32 +1148,24 @@ cc_set_active_conn(SPConnectorContext *cc, SPItem *item)
 
         // Create the handle if it doesn't exist
         if ( cc->endpt_handle[i] == NULL ) {
-            SPKnot * knot = (SPKnot*) g_object_new (SP_TYPE_KNOT, 0);
-
-            knot->desktop = cc->desktop;
-            knot->flags = SP_KNOT_VISIBLE;
-
-            knot->item = sp_canvas_item_new (sp_desktop_controls (cc->desktop),
-                    SP_TYPE_CTRL,
-                    "anchor", GTK_ANCHOR_CENTER,
-                    "filled", TRUE,
-                    "stroked", TRUE,
-                    "mode", SP_KNOT_MODE_XOR,
-                    NULL);
-
-            knot->fill [SP_KNOT_STATE_NORMAL] = 0xffffff00;
-            knot->stroke [SP_KNOT_STATE_NORMAL] = 0x000000ff;
-            knot->stroke [SP_KNOT_STATE_DRAGGING] = 0x000000ff;
-            knot->stroke [SP_KNOT_STATE_MOUSEOVER] = 0x000000ff;
-
-            g_object_set(G_OBJECT(knot),
-                    "shape", SP_KNOT_SHAPE_DIAMOND,
-                    "size", 10,
-                    "tip", _("<b>Connector endpoint</b>: drag to reroute or connect to new shapes"),
-                    NULL);
-
-            gtk_signal_connect (GTK_OBJECT (knot->item), "event",
-                    GTK_SIGNAL_FUNC (cc_generic_knot_handler), knot);
+            SPKnot *knot = sp_knot_new(cc->desktop, 
+                    _("<b>Connector endpoint</b>: drag to reroute or connect to new shapes"));
+
+            knot->setShape(SP_KNOT_SHAPE_SQUARE);
+            knot->setSize(7);
+            knot->setAnchor(GTK_ANCHOR_CENTER);
+            knot->setFill(0xffffff00, 0xff0000ff, 0xff0000ff);
+            knot->setStroke(0x000000ff, 0x000000ff, 0x000000ff);
+            sp_knot_update_ctrl(knot);
+
+            // We don't want to use the standard knot handler,
+            //since we don't want this knot to be draggable.
+            g_signal_handler_disconnect(G_OBJECT(knot->item),
+                    knot->_event_handler_id);
+            knot->_event_handler_id = 0;
+
+            gtk_signal_connect(GTK_OBJECT(knot->item), "event",
+                    GTK_SIGNAL_FUNC(cc_generic_knot_handler), knot);
 
             cc->endpt_handle[i] = knot;
         }
index c8d2f2065256800e47f79d6693d8ae1d940ee642..40246ce01efc2a1accf544a7a06d8216dc445f46 100644 (file)
@@ -62,7 +62,6 @@ static void sp_knot_init(SPKnot *knot);
 static void sp_knot_dispose(GObject *object);
 
 static int sp_knot_handler(SPCanvasItem *item, GdkEvent *event, SPKnot *knot);
-static void sp_knot_set_flag(SPKnot *knot, guint flag, bool set);
 static void sp_knot_set_ctrl_state(SPKnot *knot);
 
 static GObjectClass *parent_class;
@@ -582,7 +581,7 @@ NR::Point sp_knot_position(SPKnot const *knot)
 /**
  * Set flag in knot, with side effects.
  */
-static void sp_knot_set_flag(SPKnot *knot, guint flag, bool set)
+void sp_knot_set_flag(SPKnot *knot, guint flag, bool set)
 {
     g_assert(knot != NULL);
     g_assert(SP_IS_KNOT(knot));
index c3ae07963a7371a7fdacc4c1cc352566ba703438..f948b3dfcc15a70f49b59b99141ac11d641054b6 100644 (file)
@@ -147,6 +147,7 @@ SPKnot *sp_knot_new(SPDesktop *desktop, gchar const *tip = NULL);
 void sp_knot_show(SPKnot *knot);
 void sp_knot_hide(SPKnot *knot);
 
+void sp_knot_set_flag(SPKnot *knot, guint flag, bool set);
 void sp_knot_update_ctrl(SPKnot *knot);
 
 void sp_knot_request_position(SPKnot *knot, NR::Point *pos, guint state);