diff --git a/src/gradient-drag.cpp b/src/gradient-drag.cpp
index 55348616e465d0f22211b199d9e26ec50e0aab3a..8f0010925b513292a523bdd1079e6702cb5796a5 100644 (file)
--- a/src/gradient-drag.cpp
+++ b/src/gradient-drag.cpp
-#define __GRADIENT_DRAG_C__
-
/*
* On-canvas gradient dragging
*
}
-SPObject *
-GrDraggable::getServer ()
+SPObject *GrDraggable::getServer()
{
- if (!item)
+ if (!item) {
return NULL;
+ }
SPObject *server = NULL;
- if (fill_or_stroke)
- server = SP_OBJECT_STYLE_FILL_SERVER (item);
- else
- server = SP_OBJECT_STYLE_STROKE_SERVER (item);
+ if (fill_or_stroke) {
+ server = item->style->getFillPaintServer();
+ }else {
+ server = item->style->getStrokePaintServer();
+ }
return server;
}
SPStyle *style = SP_OBJECT_STYLE (item);
if (style && (style->fill.isPaintserver())) {
- SPObject *server = SP_OBJECT_STYLE_FILL_SERVER (item);
- if (SP_IS_LINEARGRADIENT (server)) {
+ SPPaintServer *server = item->style->getFillPaintServer();
+ if ( server && server->isSolid() ) {
+ // Suppress "gradientness" of solid paint
+ } else if ( SP_IS_LINEARGRADIENT(server) ) {
this->addLine (item, sp_item_gradient_get_coords (item, POINT_LG_BEGIN, 0, true), sp_item_gradient_get_coords (item, POINT_LG_END, 0, true), GR_LINE_COLOR_FILL);
- } else if (SP_IS_RADIALGRADIENT (server)) {
+ } else if ( SP_IS_RADIALGRADIENT(server) ) {
Geom::Point center = sp_item_gradient_get_coords (item, POINT_RG_CENTER, 0, true);
this->addLine (item, center, sp_item_gradient_get_coords (item, POINT_RG_R1, 0, true), GR_LINE_COLOR_FILL);
this->addLine (item, center, sp_item_gradient_get_coords (item, POINT_RG_R2, 0, true), GR_LINE_COLOR_FILL);
}
if (style && (style->stroke.isPaintserver())) {
- SPObject *server = SP_OBJECT_STYLE_STROKE_SERVER (item);
- if (SP_IS_LINEARGRADIENT (server)) {
+ SPPaintServer *server = item->style->getStrokePaintServer();
+ if ( server && server->isSolid() ) {
+ // Suppress "gradientness" of solid paint
+ } else if ( SP_IS_LINEARGRADIENT(server) ) {
this->addLine (item, sp_item_gradient_get_coords (item, POINT_LG_BEGIN, 0, false), sp_item_gradient_get_coords (item, POINT_LG_END, 0, false), GR_LINE_COLOR_STROKE);
- } else if (SP_IS_RADIALGRADIENT (server)) {
+ } else if ( SP_IS_RADIALGRADIENT(server) ) {
Geom::Point center = sp_item_gradient_get_coords (item, POINT_RG_CENTER, 0, false);
this->addLine (item, center, sp_item_gradient_get_coords (item, POINT_RG_R1, 0, false), GR_LINE_COLOR_STROKE);
this->addLine (item, center, sp_item_gradient_get_coords (item, POINT_RG_R2, 0, false), GR_LINE_COLOR_STROKE);