diff options
| author | bulia byak <buliabyak@gmail.com> | 2006-10-26 06:58:34 +0000 |
|---|---|---|
| committer | buliabyak <buliabyak@users.sourceforge.net> | 2006-10-26 06:58:34 +0000 |
| commit | b959fcf57e91d740f7e617e3fdacb771069e0faf (patch) | |
| tree | 9f6855761384aca0bbc57f3baca55fde5ce4d9cb /src/dialogs/object-properties.cpp | |
| parent | extend the semantics of sp_canvas_force_full_redraw_after_interruptions to al... (diff) | |
| download | inkscape-b959fcf57e91d740f7e617e3fdacb771069e0faf.tar.gz inkscape-b959fcf57e91d740f7e617e3fdacb771069e0faf.zip | |
workaround for crash 1580903 and several other issues caused by GTK's braindead behavior exposed by display interruptibility
(bzr r1866)
Diffstat (limited to 'src/dialogs/object-properties.cpp')
| -rw-r--r-- | src/dialogs/object-properties.cpp | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/dialogs/object-properties.cpp b/src/dialogs/object-properties.cpp index 77d71b5fe..dc04d2772 100644 --- a/src/dialogs/object-properties.cpp +++ b/src/dialogs/object-properties.cpp @@ -44,6 +44,7 @@ #include "document-private.h" #include <selection.h> #include "xml/repr.h" +#include "display/sp-canvas.h" static GtkWidget *dlg = NULL; static win_data wd; @@ -360,6 +361,9 @@ sp_fillstroke_opacity_changed (GtkAdjustment *a, SPWidget *base) gtk_object_set_data (GTK_OBJECT (dlg), "blocked", GUINT_TO_POINTER (TRUE)); + // FIXME: fix for GTK breakage, see comment in SelectedStyle::on_opacity_changed; here it results in crash 1580903 + sp_canvas_force_full_redraw_after_interruptions(sp_desktop_canvas(SP_ACTIVE_DESKTOP), 0); + SPCSSAttr *css = sp_repr_css_attr_new (); Inkscape::CSSOStringStream os; @@ -373,6 +377,9 @@ sp_fillstroke_opacity_changed (GtkAdjustment *a, SPWidget *base) sp_document_maybe_done (sp_desktop_document (SP_ACTIVE_DESKTOP), "fillstroke:opacity", SP_VERB_DIALOG_FILL_STROKE, _("Change opacity")); + // resume interruptibility + sp_canvas_end_forced_full_redraws(sp_desktop_canvas(SP_ACTIVE_DESKTOP)); + gtk_object_set_data (GTK_OBJECT (dlg), "blocked", GUINT_TO_POINTER (FALSE)); } @@ -386,12 +393,15 @@ sp_fillstroke_blur_changed (GtkAdjustment *a, SPWidget *base) //lock dialog gtk_object_set_data (GTK_OBJECT (dlg), "blocked", GUINT_TO_POINTER (TRUE)); - + //get desktop SPDesktop *desktop = SP_ACTIVE_DESKTOP; if (!desktop) { return; } + + // FIXME: fix for GTK breakage, see comment in SelectedStyle::on_opacity_changed; here it results in crash 1580903 + sp_canvas_force_full_redraw_after_interruptions(sp_desktop_canvas(desktop), 0); //get current selection Inkscape::Selection *selection = sp_desktop_selection (desktop); @@ -423,6 +433,10 @@ sp_fillstroke_blur_changed (GtkAdjustment *a, SPWidget *base) } sp_document_maybe_done (sp_desktop_document (SP_ACTIVE_DESKTOP), "fillstroke:blur", SP_VERB_DIALOG_FILL_STROKE, _("Change blur")); + + // resume interruptibility + sp_canvas_end_forced_full_redraws(sp_desktop_canvas(desktop)); + gtk_object_set_data (GTK_OBJECT (dlg), "blocked", GUINT_TO_POINTER (FALSE)); } |
