X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fwidgets%2Fswatch-selector.cpp;h=935282a3a606a60a5a5db38513aff05dc89ea86c;hb=9dc68827cbd515262ecb8d5ae8547d9e82c72e00;hp=50ee632cd1e5af7b5fd695397d5a86db608cb934;hpb=6b6133b74e302813e042e743dd334221b053ae06;p=inkscape.git diff --git a/src/widgets/swatch-selector.cpp b/src/widgets/swatch-selector.cpp index 50ee632cd..935282a3a 100644 --- a/src/widgets/swatch-selector.cpp +++ b/src/widgets/swatch-selector.cpp @@ -108,7 +108,7 @@ void SwatchSelector::_changedCb(SPColorSelector */*csel*/, void *data) // TODO might have to block cycles - if (swsel->_gsel) { + if (swsel->_gsel && swsel->_gsel->getVector()) { SPGradient *gradient = swsel->_gsel->getVector(); SPGradient *ngr = sp_gradient_ensure_vector_normalized(gradient); if (ngr != gradient) { @@ -116,7 +116,7 @@ void SwatchSelector::_changedCb(SPColorSelector */*csel*/, void *data) // TODO replace with proper - sp_gradient_vector_widget_load_gradient(GTK_WIDGET(swsel->_gsel), ngr); } - sp_gradient_ensure_vector(ngr); + ngr->ensureVector(); SPStop* stop = ngr->getFirstStop(); @@ -125,7 +125,7 @@ void SwatchSelector::_changedCb(SPColorSelector */*csel*/, void *data) float alpha = 0; guint32 rgb = 0; - swsel->_csel->base->getColorAlpha( color, &alpha ); + swsel->_csel->base->getColorAlpha( color, alpha ); rgb = color.toRGBA32( 0x00 ); // TODO replace with generic shared code that also handles icc-color @@ -135,8 +135,8 @@ void SwatchSelector::_changedCb(SPColorSelector */*csel*/, void *data) os << "stop-color:" << c << ";stop-opacity:" << static_cast(alpha) <<";"; SP_OBJECT_REPR(stop)->setAttribute("style", os.str().c_str()); - sp_document_done(SP_OBJECT_DOCUMENT(ngr), SP_VERB_CONTEXT_GRADIENT, - _("Change swatch color")); + DocumentUndo::done(SP_OBJECT_DOCUMENT(ngr), SP_VERB_CONTEXT_GRADIENT, + _("Change swatch color")); } } } @@ -169,10 +169,9 @@ void SwatchSelector::connectchangedHandler( GCallback handler, void *data ) void SwatchSelector::setVector(SPDocument */*doc*/, SPGradient *vector) { //GtkVBox * box = gobj(); - _gsel->setVector((vector) ? SP_OBJECT_DOCUMENT(vector) : 0, vector); - if (vector) { + if ( vector && vector->isSolid() ) { SPStop* stop = vector->getFirstStop(); guint32 const colorVal = sp_stop_get_rgba32(stop); @@ -180,6 +179,9 @@ void SwatchSelector::setVector(SPDocument */*doc*/, SPGradient *vector) SPColor color( SP_RGBA32_R_F(colorVal), SP_RGBA32_G_F(colorVal), SP_RGBA32_B_F(colorVal) ); // set its color, from the stored array _csel->base->setColor( color ); + gtk_widget_show_all( GTK_WIDGET(_csel) ); + } else { + gtk_widget_hide( GTK_WIDGET(_csel) ); } /* @@ -200,4 +202,4 @@ void SwatchSelector::setVector(SPDocument */*doc*/, SPGradient *vector) fill-column:99 End: */ -// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 : +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 :