summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlvin Penner <penner@vaxxine.com>2012-05-06 20:33:32 +0000
committerapenner <penner@vaxxine.com>2012-05-06 20:33:32 +0000
commit581d73d3a579f2c55fbb0a756108cca4efda157b (patch)
tree2aa7c7d79155882ff2dccc34c2e455835a288f57
parentMigrate to draw signal in ruler (diff)
downloadinkscape-581d73d3a579f2c55fbb0a756108cca4efda157b.tar.gz
inkscape-581d73d3a579f2c55fbb0a756108cca4efda157b.zip
improved workaround to prevent GfxRadialShading from getting corrupted during copy operation (Bug 919176 comment 8)
Fixed bugs: - https://launchpad.net/bugs/919176 (bzr r11340)
-rw-r--r--src/extension/internal/pdfinput/pdf-parser.cpp17
1 files changed, 15 insertions, 2 deletions
diff --git a/src/extension/internal/pdfinput/pdf-parser.cpp b/src/extension/internal/pdfinput/pdf-parser.cpp
index 5e8b005e2..08e313e59 100644
--- a/src/extension/internal/pdfinput/pdf-parser.cpp
+++ b/src/extension/internal/pdfinput/pdf-parser.cpp
@@ -3198,9 +3198,22 @@ void PdfParser::opMarkPoint(Object args[], int numArgs) {
//------------------------------------------------------------------------
void PdfParser::saveState() {
+ bool is_radial = false;
+
+ GfxPattern *pattern = state->getFillPattern();
+ if (pattern != NULL)
+ if (pattern->getType() == 2 ) {
+ GfxShadingPattern *shading_pattern = static_cast<GfxShadingPattern *>(pattern);
+ GfxShading *shading = shading_pattern->getShading();
+ if (shading->getType() == 3)
+ is_radial = true;
+ }
+
builder->saveState();
-// state = state->save(); // nasty hack to prevent GfxRadialShading from getting corrupted during copy operation
- state->save(); // see LP Bug 919176 comment 8
+ if (is_radial)
+ state->save(); // nasty hack to prevent GfxRadialShading from getting corrupted during copy operation
+ else
+ state = state->save(); // see LP Bug 919176 comment 8
clipHistory = clipHistory->save();
}