X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fwidgets%2Fdash-selector.cpp;h=474ab90f9f95069411e96948a02fd5d5b705298f;hb=209527815f6ad1b81d21bb3188947aef3d845010;hp=7b96451ac211b2547472d8a9453193713a1e5949;hpb=1391834bee278d740c12201a5f258cd1eda044c1;p=inkscape.git diff --git a/src/widgets/dash-selector.cpp b/src/widgets/dash-selector.cpp index 7b96451ac..474ab90f9 100644 --- a/src/widgets/dash-selector.cpp +++ b/src/widgets/dash-selector.cpp @@ -56,6 +56,7 @@ static double **dashes = NULL; static void sp_dash_selector_class_init (SPDashSelectorClass *klass); static void sp_dash_selector_init (SPDashSelector *dsel); static GtkWidget *sp_dash_selector_menu_item_new (SPDashSelector *dsel, double *pattern); +static void sp_dash_selector_menu_item_image_realize (GtkWidget *mi, double *pattern); static void sp_dash_selector_dash_activate (GtkObject *object, SPDashSelector *dsel); static void sp_dash_selector_offset_value_changed (GtkAdjustment *adj, SPDashSelector *dsel); @@ -138,7 +139,7 @@ sp_dash_selector_new (Inkscape::XML::Node *drepr) if (ndashes > 0) { int pos = 0; - SPStyle *style = sp_style_new (); + SPStyle *style = sp_style_new (NULL); dashes = g_new (double *, ndashes + 1); for (Inkscape::XML::Node *dr = drepr->firstChild(); dr; dr = dr->next()) { if (!strcmp (dr->name(), "dash")) { @@ -255,8 +256,22 @@ static GtkWidget * sp_dash_selector_menu_item_new (SPDashSelector *dsel, double *pattern) { GtkWidget *mi = gtk_menu_item_new (); + GtkWidget *px = gtk_image_new_from_pixmap (NULL, NULL); - GdkPixmap *pixmap = gdk_pixmap_new (GTK_WIDGET (dsel)->window, DASH_PREVIEW_LENGTH + 4, 16, gdk_visual_get_best_depth ()); + gtk_widget_show (px); + gtk_container_add (GTK_CONTAINER (mi), px); + + gtk_object_set_data (GTK_OBJECT (mi), "pattern", pattern); + gtk_object_set_data (GTK_OBJECT (mi), "px", px); + gtk_signal_connect (GTK_OBJECT (mi), "activate", G_CALLBACK (sp_dash_selector_dash_activate), dsel); + + g_signal_connect_after(G_OBJECT(px), "realize", G_CALLBACK(sp_dash_selector_menu_item_image_realize), pattern); + + return mi; +} + +static void sp_dash_selector_menu_item_image_realize (GtkWidget *px, double *pattern) { + GdkPixmap *pixmap = gdk_pixmap_new(px->window, DASH_PREVIEW_LENGTH + 4, 16, -1); GdkGC *gc = gdk_gc_new (pixmap); gdk_rgb_gc_set_foreground (gc, 0xffffffff); @@ -350,17 +365,8 @@ sp_dash_selector_menu_item_new (SPDashSelector *dsel, double *pattern) gdk_gc_unref (gc); - GtkWidget *px = gtk_pixmap_new (pixmap, NULL); - - gdk_pixmap_unref (pixmap); - - gtk_widget_show (px); - gtk_container_add (GTK_CONTAINER (mi), px); - - gtk_object_set_data (GTK_OBJECT (mi), "pattern", pattern); - gtk_signal_connect (GTK_OBJECT (mi), "activate", G_CALLBACK (sp_dash_selector_dash_activate), dsel); - - return mi; + gtk_image_set_from_pixmap(GTK_IMAGE(px), pixmap, NULL); + gdk_pixmap_unref(pixmap); } static void