diff options
| author | Tomasz Boczkowski <penginsbacon@gmail.com> | 2015-05-09 12:53:54 +0000 |
|---|---|---|
| committer | Tomasz Boczkowski <penginsbacon@gmail.com> | 2015-05-09 12:53:54 +0000 |
| commit | cd9885ddc7dfbf7769f902dd7ee043892a2c8ee9 (patch) | |
| tree | b85f04d5bca6bce7590685b2b7f019805afcc7ec /src/widgets/paint-selector.cpp | |
| parent | Using MODE_SOLID_COLOR in paint selector instead of duplicated MODE_COLOR_RGB... (diff) | |
| download | inkscape-cd9885ddc7dfbf7769f902dd7ee043892a2c8ee9.tar.gz inkscape-cd9885ddc7dfbf7769f902dd7ee043892a2c8ee9.zip | |
fixed crash in paint selector when changing from gradient to solid color
(bzr r14059.1.23)
Diffstat (limited to 'src/widgets/paint-selector.cpp')
| -rw-r--r-- | src/widgets/paint-selector.cpp | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/src/widgets/paint-selector.cpp b/src/widgets/paint-selector.cpp index 8dd309260..f9a537f41 100644 --- a/src/widgets/paint-selector.cpp +++ b/src/widgets/paint-selector.cpp @@ -657,7 +657,12 @@ void SPPaintSelector::onSelectedColorChanged() { if (updating_color) { return; } - g_signal_emit(G_OBJECT(this), psel_signals[CHANGED], 0); + + if (mode == MODE_SOLID_COLOR) { + g_signal_emit(G_OBJECT(this), psel_signals[CHANGED], 0); + } else { + g_warning("SPPaintSelector::onSelectedColorChanged(): selected color changed while not in color selection mode"); + } } static void sp_paint_selector_set_mode_color(SPPaintSelector *psel, SPPaintSelector::Mode /*mode*/) @@ -670,9 +675,14 @@ static void sp_paint_selector_set_mode_color(SPPaintSelector *psel, SPPaintSelec SPGradientSelector *gsel = getGradientFromData(psel); if (gsel) { SPGradient *gradient = gsel->getVector(); - SPColor color = gradient->getFirstStop()->specified_color; - float alpha = gradient->getFirstStop()->opacity; - psel->selected_color->setColorAlpha(color, alpha); + + // Gradient can be null if object paint is changed externally (ie. with a color picker tool) + if (gradient) + { + SPColor color = gradient->getFirstStop()->specified_color; + float alpha = gradient->getFirstStop()->opacity; + psel->selected_color->setColorAlpha(color, alpha, false); + } } } |
