summaryrefslogtreecommitdiffstats
path: root/src/widgets/dash-selector.cpp
diff options
context:
space:
mode:
authorAaron Spike <aaron@ekips.org>2006-06-13 02:38:04 +0000
committeracspike <acspike@users.sourceforge.net>2006-06-13 02:38:04 +0000
commit0aa981c9a83b4288b3905c7c009e5795fc45eecf (patch)
tree19253c905af3d6eee200ae35036c1cccf417babc /src/widgets/dash-selector.cpp
parentpatch [ 1503869 ] ODF formatting fix (diff)
downloadinkscape-0aa981c9a83b4288b3905c7c009e5795fc45eecf.tar.gz
inkscape-0aa981c9a83b4288b3905c7c009e5795fc45eecf.zip
mental's patch for bug [ 1457003 ] X Window error with Composite: BadAlloc in stroke style
(bzr r1210)
Diffstat (limited to 'src/widgets/dash-selector.cpp')
-rw-r--r--src/widgets/dash-selector.cpp30
1 files changed, 18 insertions, 12 deletions
diff --git a/src/widgets/dash-selector.cpp b/src/widgets/dash-selector.cpp
index 7b96451ac..78303c60b 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);
@@ -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