From 611b8db1a0eb07b892da8d69fc5fb29f811eb742 Mon Sep 17 00:00:00 2001 From: Kris De Gussem Date: Sat, 20 Apr 2013 20:26:11 +0200 Subject: minor odg export update (bzr r12285.1.1) --- src/extension/internal/odf.cpp | 69 ++++++++++++++++++++---------------------- src/extension/internal/odf.h | 2 +- 2 files changed, 33 insertions(+), 38 deletions(-) (limited to 'src') diff --git a/src/extension/internal/odf.cpp b/src/extension/internal/odf.cpp index 70798099d..b23378fc3 100644 --- a/src/extension/internal/odf.cpp +++ b/src/extension/internal/odf.cpp @@ -47,7 +47,7 @@ #include #include #include - +#include //# Inkscape includes #include "clear-n_.h" @@ -1315,8 +1315,9 @@ writePath(Writer &outs, Geom::PathVector const &pathv, return nrPoints; } -bool OdfOutput::processStyle(Writer &outs, SPItem *item, const Glib::ustring &id, const Glib::ustring &gradientNameFill, const Glib::ustring &gradientNameStroke) +bool OdfOutput::processStyle(SPItem *item, const Glib::ustring &id, const Glib::ustring &gradientNameFill, const Glib::ustring &gradientNameStroke, Glib::ustring& output) { + output.clear(); if (!item) { return false; @@ -1408,37 +1409,34 @@ bool OdfOutput::processStyle(Writer &outs, SPItem *item, const Glib::ustring &id styleTable.push_back(si); styleLookupTable[id] = styleName; - Glib::ustring tmpstring = Glib::ustring::compose ("\n", si.name); - tmpstring += "\n", si.name); + output += "y1.value; gi.x2 = linGrad->x2.value; gi.y2 = linGrad->y2.value; + gradientName2 = Glib::ustring::compose("ImportedLinearGradient%1", gradientTable.size()); } else if (SP_IS_RADIALGRADIENT(gradient)) { gi.style = "radial"; SPRadialGradient *radGrad = SP_RADIALGRADIENT(gradient); - SPRadialGradient tmpGrad = *radGrad; - tmpGrad.cx.unit= SVGLength::PERCENT; - tmpGrad.cy.unit= SVGLength::PERCENT; - gi.cx = tmpGrad.cx.computed;// * 100.0;//ODG cx is percentages - gi.cy = tmpGrad.cy.computed;// * 100.0; + Geom::OptRect bbox = item->documentVisualBounds(); + gi.cx = (radGrad->cx.value-bbox->left())/bbox->width(); + gi.cy = (radGrad->cy.value-bbox->top())/bbox->height(); + gradientName2 = Glib::ustring::compose("ImportedRadialGradient%1", gradientTable.size()); } else { @@ -1529,7 +1528,7 @@ bool OdfOutput::processGradient(SPItem *item, } // No match, let us write a new entry - gradientName = Glib::ustring::compose("gradient%1", gradientTable.size()); + gradientName = gradientName2; gi.name = gradientName; gradientTable.push_back(gi); gradientLookupTable[id] = gradientName; @@ -1555,12 +1554,17 @@ bool OdfOutput::processGradient(SPItem *item, return false; } output += Glib::ustring::compose("\n", - gi.stops[0].opacity * 100.0, gi.stops[1].opacity * 100.0);// draw:border=\"0%%\" + //TODO: apply maths, to define begin of gradient, taking gradient begin and end, as well as object boundary into account + double angle = (gi.y2-gi.y1); + angle = (angle != 0.) ? (atan((gi.x2-gi.x1)/(gi.y2-gi.y1))* 180. / pi) : 90; + angle = (angle < 0)?(180+angle):angle; + angle = angle * 10; //why do we need this: precision????????????? + output += Glib::ustring::compose(" draw:start-intensity=\"%1\" draw:end-intensity=\"%2\" draw:angle=\"%3\"/>\n", + gi.stops[0].opacity * 100.0, gi.stops[1].opacity * 100.0, angle);// draw:border=\"0%%\" } else if (gi.style == "radial") { @@ -1581,8 +1585,8 @@ bool OdfOutput::processGradient(SPItem *item, g_warning("Need at least 2 stops for a radial gradient"); return false; } - output += Glib::ustring::compose("second; couts.printf("draw:style-name=\"%s\" ", styleName.c_str()); } - // couts.writeUString(styleString); - - // std::map::iterator giter; - // giter = gradientLookupTable.find(id); - // if (giter != gradientLookupTable.end()) - // { - // Glib::ustring gradientName = giter->second; - // couts.printf("draw:fill-gradient-name=\"%s\" ", - // gradientName.c_str()); - // } couts.printf("draw:layer=\"layout\" svg:x=\"%.3fcm\" svg:y=\"%.3fcm\" ", bbox_x, bbox_y); diff --git a/src/extension/internal/odf.h b/src/extension/internal/odf.h index 7dfbf9786..6b915e347 100644 --- a/src/extension/internal/odf.h +++ b/src/extension/internal/odf.h @@ -313,7 +313,7 @@ private: bool writeStyle(ZipFile &zf); - bool processStyle(Writer &outs, SPItem *item, const Glib::ustring &id, const Glib::ustring &gradientNameFill, const Glib::ustring &gradientNameStroke); + bool processStyle(SPItem *item, const Glib::ustring &id, const Glib::ustring &gradientNameFill, const Glib::ustring &gradientNameStroke, Glib::ustring& output); bool processGradient(SPItem *item, const Glib::ustring &id, Geom::Affine &tf, Glib::ustring& gradientName, Glib::ustring& output, bool checkFillGradient = 1); -- cgit v1.2.3 From e042b14d47a3a32a4c5db204f7aff26183587161 Mon Sep 17 00:00:00 2001 From: Alvin Penner Date: Sat, 20 Apr 2013 16:50:02 -0400 Subject: Group bbox update (Bug 1168979) Fixed bugs: - https://launchpad.net/bugs/1168979 (bzr r12285.1.2) --- src/selection-chemistry.cpp | 1 + src/ui/dialog/xml-tree.cpp | 1 + 2 files changed, 2 insertions(+) (limited to 'src') diff --git a/src/selection-chemistry.cpp b/src/selection-chemistry.cpp index 41ebc9bfc..fc410897a 100644 --- a/src/selection-chemistry.cpp +++ b/src/selection-chemistry.cpp @@ -360,6 +360,7 @@ void sp_selection_delete(SPDesktop *desktop) selection->clear(); sp_selection_delete_impl(selected); g_slist_free(const_cast(selected)); + reinterpret_cast(desktop->currentLayer())->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); /* a tool may have set up private information in it's selection context * that depends on desktop items. I think the only sane way to deal with diff --git a/src/ui/dialog/xml-tree.cpp b/src/ui/dialog/xml-tree.cpp index 29dbc4b93..a537b7fca 100644 --- a/src/ui/dialog/xml-tree.cpp +++ b/src/ui/dialog/xml-tree.cpp @@ -986,6 +986,7 @@ void XmlTree::cmd_delete_node() g_assert(selected_repr != NULL); sp_repr_unparent(selected_repr); + reinterpret_cast(current_desktop->currentLayer())->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); DocumentUndo::done(current_document, SP_VERB_DIALOG_XML_EDITOR, Q_("nodeAsInXMLinHistoryDialog|Delete node")); } -- cgit v1.2.3 From 5a6b3ffac5aa76386cc2c2db8bd8952a8325b488 Mon Sep 17 00:00:00 2001 From: Martin Owens Date: Sat, 20 Apr 2013 20:16:01 -0400 Subject: Remove GLib error and remove some cruft (bzr r12286) --- src/ui/clipboard.cpp | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/ui/clipboard.cpp b/src/ui/clipboard.cpp index f2b9fb02a..72ddd90a9 100644 --- a/src/ui/clipboard.cpp +++ b/src/ui/clipboard.cpp @@ -332,6 +332,10 @@ void ClipboardManagerImpl::copySymbol(Inkscape::XML::Node* symbol, gchar const* use->setAttribute("style", style ); _root->appendChild(use); + // This min and max sets offsets, we don't have any so set to zero. + sp_repr_set_point(_clipnode, "min", Geom::Point(0,0)); + sp_repr_set_point(_clipnode, "max", Geom::Point(0,0)); + fit_canvas_to_drawing(_clipboardSPDoc); _setClipboardTargets(); } @@ -767,14 +771,6 @@ void ClipboardManagerImpl::_copyUsedDefs(SPItem *item) } } - // Copy symbols: We may want to be more clever... - // if (SP_IS_USE(item)) { - // SPObject *symbol = SP_USE(item)->child; - // if( symbol && SP_IS_SYMBOL(symbol) ) { - // _copyNode(symbol->getRepr(), _doc, _defs); - // } - // } - // recurse for (SPObject *o = item->children ; o != NULL ; o = o->next) { if (SP_IS_ITEM(o)) { -- cgit v1.2.3 From 5ceb89e41d788ae9ed18b972cedbbfcb923ddc27 Mon Sep 17 00:00:00 2001 From: Martin Owens Date: Sat, 20 Apr 2013 20:34:35 -0400 Subject: Throw better error when attribute isn't available (bzr r12288) --- src/xml/repr-util.cpp | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src') diff --git a/src/xml/repr-util.cpp b/src/xml/repr-util.cpp index 6ea20b87a..8c8425de0 100644 --- a/src/xml/repr-util.cpp +++ b/src/xml/repr-util.cpp @@ -524,6 +524,8 @@ unsigned int sp_repr_get_point(Inkscape::XML::Node *repr, gchar const *key, Geom gchar const *v = repr->attribute(key); + g_return_val_if_fail(v != NULL, FALSE); + gchar ** strarray = g_strsplit(v, ",", 2); if (strarray && strarray[0] && strarray[1]) { -- cgit v1.2.3 From 03e576fe99bb820f758ad3075459e43e26dff7f6 Mon Sep 17 00:00:00 2001 From: Martin Owens Date: Sat, 20 Apr 2013 21:03:36 -0400 Subject: Output attributes as lengths instead of doubles. Fixed bugs: - https://launchpad.net/bugs/1107924 (bzr r12289) --- src/sp-use.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/sp-use.cpp b/src/sp-use.cpp index d5b3c004a..6fd7c6970 100644 --- a/src/sp-use.cpp +++ b/src/sp-use.cpp @@ -30,6 +30,7 @@ #include "uri.h" #include "print.h" #include "xml/repr.h" +#include "svg/svg.h" #include "preferences.h" #include "style.h" #include "sp-symbol.h" @@ -238,8 +239,9 @@ sp_use_write(SPObject *object, Inkscape::XML::Document *xml_doc, Inkscape::XML:: sp_repr_set_svg_double(repr, "x", use->x.computed); sp_repr_set_svg_double(repr, "y", use->y.computed); - sp_repr_set_svg_double(repr, "width", use->width.computed); - sp_repr_set_svg_double(repr, "height", use->height.computed); + + repr->setAttribute("width", sp_svg_length_write_with_units(use->width).c_str()); + repr->setAttribute("height", sp_svg_length_write_with_units(use->height).c_str()); if (use->ref->getURI()) { gchar *uri_string = use->ref->getURI()->toString(); -- cgit v1.2.3 From 2905b594387d7f4c5d2618d45a1759c2f57abb8d Mon Sep 17 00:00:00 2001 From: Martin Owens Date: Sat, 20 Apr 2013 21:33:45 -0400 Subject: Warn if we get a NULL object Fixed bugs: - https://launchpad.net/bugs/1104326 (bzr r12290) --- src/ui/dialog/symbols.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/ui/dialog/symbols.cpp b/src/ui/dialog/symbols.cpp index 4eeb1b5f0..46dbcaae6 100644 --- a/src/ui/dialog/symbols.cpp +++ b/src/ui/dialog/symbols.cpp @@ -484,10 +484,8 @@ void SymbolsDialog::get_symbols() { } GSList* SymbolsDialog::symbols_in_doc_recursive (SPObject *r, GSList *l) -{ - if (!r) { - return l; - } +{ + g_return_val_if_fail(r != NULL, l); // Stop multiple counting of same symbol if( SP_IS_USE(r) ) { -- cgit v1.2.3 From bbe7c2c6760dc21615800ea0ce89c0c58608fc20 Mon Sep 17 00:00:00 2001 From: Martin Owens Date: Sun, 21 Apr 2013 00:20:25 -0400 Subject: Clean up symbol pixmap generator and title description (bzr r12291) --- src/sp-use.cpp | 7 +++--- src/ui/dialog/symbols.cpp | 58 ++++++++++++++++++++--------------------------- src/ui/dialog/symbols.h | 5 ++-- 3 files changed, 29 insertions(+), 41 deletions(-) (limited to 'src') diff --git a/src/sp-use.cpp b/src/sp-use.cpp index 6fd7c6970..2220b4b47 100644 --- a/src/sp-use.cpp +++ b/src/sp-use.cpp @@ -299,10 +299,9 @@ sp_use_description(SPItem *item) if (use->child) { if( SP_IS_SYMBOL( use->child ) ) { - //char *symbol_desc = SP_ITEM(use->child)->description(); - //g_free(symbol_desc); - return g_strdup(_("Clone of Symbol")); - //return g_strdup_printf(_("Clone of Symbol: %s"), symbol_desc ); + char *symbol_desc = SP_ITEM(use->child)->title(); + return g_strdup_printf(_("'%s' Symbol"), symbol_desc ); + g_free(symbol_desc); } static unsigned recursion_depth = 0; diff --git a/src/ui/dialog/symbols.cpp b/src/ui/dialog/symbols.cpp index 46dbcaae6..57e2e7285 100644 --- a/src/ui/dialog/symbols.cpp +++ b/src/ui/dialog/symbols.cpp @@ -557,32 +557,32 @@ gchar const* SymbolsDialog::style_from_use( gchar const* id, SPDocument* documen void SymbolsDialog::draw_symbols( SPDocument* symbolDocument ) { - - SymbolColumns* columns = getColumns(); - GSList* l = symbols_in_doc( symbolDocument ); for( ; l != NULL; l = l->next ) { - SPObject* symbol = SP_OBJECT(l->data); - if (!SP_IS_SYMBOL(symbol)) { - //std::cout << " Error: not symbol" << std::endl; - continue; + if (SP_IS_SYMBOL(symbol)) { + draw_symbol( symbol ); } + } +} - gchar const *id = symbol->getRepr()->attribute("id"); - gchar const *title = symbol->title(); // From title element - if( !title ) { - title = id; - } +void SymbolsDialog::draw_symbol( SPObject* symbol ) { - Glib::RefPtr pixbuf = create_symbol_image(id, symbolDocument, &renderDrawing, key ); - if( pixbuf ) { + SymbolColumns* columns = getColumns(); - Gtk::ListStore::iterator row = store->append(); - (*row)[columns->symbol_id] = Glib::ustring( id ); - (*row)[columns->symbol_title] = Glib::ustring( title ); - (*row)[columns->symbol_image] = pixbuf; - } + gchar const *id = symbol->getRepr()->attribute("id"); + gchar const *title = symbol->title(); // From title element + if( !title ) { + title = id; + } + + Glib::RefPtr pixbuf = create_symbol_image(id, symbol ); + + if( pixbuf ) { + Gtk::ListStore::iterator row = store->append(); + (*row)[columns->symbol_id] = Glib::ustring( id ); + (*row)[columns->symbol_title] = Glib::ustring( title ); + (*row)[columns->symbol_image] = pixbuf; } delete columns; @@ -598,18 +598,8 @@ void SymbolsDialog::draw_symbols( SPDocument* symbolDocument ) { * the temporary document is rendered. */ Glib::RefPtr -SymbolsDialog::create_symbol_image(gchar const *symbol_id, - SPDocument *source, - Inkscape::Drawing* drawing, - unsigned /*visionkey*/) +SymbolsDialog::create_symbol_image(gchar const *symbol_id, SPObject *symbol) { - // Retrieve the symbol named 'symbol_id' from the source SVG document - SPObject const* symbol = source->getObjectById(symbol_id); - if (symbol == NULL) { - //std::cout << " Failed to find symbol: " << symbol_id << std::endl; - //return 0; - } - // Create a copy repr of the symbol with id="the_symbol" Inkscape::XML::Document *xml_doc = previewDocument->getReprDoc(); Inkscape::XML::Node *repr = symbol->getRepr()->duplicate(xml_doc); @@ -626,10 +616,10 @@ SymbolsDialog::create_symbol_image(gchar const *symbol_id, gchar const* style = repr->attribute("inkscape:symbol-style"); if( !style ) { // If no default style in , look in documents. - if( source == currentDocument ) { - style = style_from_use( symbol_id, source ); + if( symbol->document == currentDocument ) { + style = style_from_use( symbol_id, symbol->document ); } else { - style = source->getReprRoot()->attribute("style"); + style = symbol->document->getReprRoot()->attribute("style"); } } // Last ditch effort to provide some default styling @@ -719,7 +709,7 @@ SymbolsDialog::create_symbol_image(gchar const *symbol_id, scale = atof( previewScaleString.c_str() ); } - pixbuf = Glib::wrap(render_pixbuf(*drawing, scale, *dbox, psize)); + pixbuf = Glib::wrap(render_pixbuf(renderDrawing, scale, *dbox, psize)); svg_preview_cache.set_preview_in_cache(key, pixbuf->gobj()); } diff --git a/src/ui/dialog/symbols.h b/src/ui/dialog/symbols.h index 08221bf22..2d408386f 100644 --- a/src/ui/dialog/symbols.h +++ b/src/ui/dialog/symbols.h @@ -51,6 +51,7 @@ private: void get_symbols(); void draw_symbols( SPDocument* symbol_document ); + void draw_symbol( SPObject* symbol_document ); SPDocument* symbols_preview_doc(); GSList* symbols_in_doc_recursive(SPObject *r, GSList *l); @@ -60,9 +61,7 @@ private: gchar const* style_from_use( gchar const* id, SPDocument* document); Glib::RefPtr - create_symbol_image(gchar const *symbol_name, - SPDocument *source, Inkscape::Drawing* drawing, - unsigned /*visionkey*/); + create_symbol_image(gchar const *symbol_name, SPObject *symbol); /* Keep track of all symbol template documents */ std::map symbolSets; -- cgit v1.2.3 From 8d793593fff1737c91b76f820e1b4aa021897cee Mon Sep 17 00:00:00 2001 From: Kris De Gussem Date: Sun, 21 Apr 2013 11:56:09 +0200 Subject: cppcheck (bzr r12293) --- src/color-profile.cpp | 6 +- src/color.cpp | 4 +- src/dom/util/ziptool.cpp | 26 +++++--- src/snapped-point.cpp | 163 ++++++++++++++++++++++++++--------------------- 4 files changed, 109 insertions(+), 90 deletions(-) (limited to 'src') diff --git a/src/color-profile.cpp b/src/color-profile.cpp index 14f88c77e..5fb84d8ac 100644 --- a/src/color-profile.cpp +++ b/src/color-profile.cpp @@ -619,8 +619,6 @@ cmsHTRANSFORM ColorProfile::getTransfGamutCheck() bool ColorProfile::GamutCheck(SPColor color) { - bool result = false; - guint32 val = color.toRGBA32(0); #if HAVE_LIBLCMS1 @@ -651,9 +649,7 @@ bool ColorProfile::GamutCheck(SPColor color) cmsSetAlarmCodes(oldAlarmCodes); #endif // HAVE_LIBLCMS1 - result = (outofgamut != 0); - - return result; + return (outofgamut != 0); } class ProfileInfo diff --git a/src/color.cpp b/src/color.cpp index 0a07d3f21..5eb0d91ef 100644 --- a/src/color.cpp +++ b/src/color.cpp @@ -99,9 +99,7 @@ bool SPColor::operator == (SPColor const& other) const */ bool SPColor::isClose( SPColor const& other, float epsilon ) const { - bool match = false; - - match = (fabs((v.c[0]) - (other.v.c[0])) < epsilon) + bool match = (fabs((v.c[0]) - (other.v.c[0])) < epsilon) && (fabs((v.c[1]) - (other.v.c[1])) < epsilon) && (fabs((v.c[2]) - (other.v.c[2])) < epsilon); diff --git a/src/dom/util/ziptool.cpp b/src/dom/util/ziptool.cpp index 9d9d5685c..cf024008f 100644 --- a/src/dom/util/ziptool.cpp +++ b/src/dom/util/ziptool.cpp @@ -1895,24 +1895,30 @@ bool GzipFile::readFile(const std::string &fileName) /** * Constructor */ -ZipEntry::ZipEntry() +ZipEntry::ZipEntry() : + crc (0L), + fileName (), + comment (), + compressionMethod (8), + compressedData (), + uncompressedData (), + position (0) { - crc = 0L; - compressionMethod = 8; - position = 0; } /** * */ ZipEntry::ZipEntry(const std::string &fileNameArg, - const std::string &commentArg) + const std::string &commentArg) : + crc (0L), + fileName (fileNameArg), + comment (commentArg), + compressionMethod (8), + compressedData (), + uncompressedData (), + position (0) { - crc = 0L; - compressionMethod = 8; - fileName = fileNameArg; - comment = commentArg; - position = 0; } /** diff --git a/src/snapped-point.cpp b/src/snapped-point.cpp index d155babd7..ca45410c5 100644 --- a/src/snapped-point.cpp +++ b/src/snapped-point.cpp @@ -14,92 +14,111 @@ #include "preferences.h" // overloaded constructor -Inkscape::SnappedPoint::SnappedPoint(Geom::Point const &p, SnapSourceType const &source, long source_num, SnapTargetType const &target, Geom::Coord const &d, Geom::Coord const &t, bool const &a, bool const &constrained_snap, bool const &fully_constrained, Geom::OptRect target_bbox) - : _point(p), _source(source), _source_num(source_num), _target(target), _distance(d), _tolerance(std::max(t,1.0)), _always_snap(a), _target_bbox(target_bbox) +Inkscape::SnappedPoint::SnappedPoint(Geom::Point const &p, SnapSourceType const &source, long source_num, SnapTargetType const &target, Geom::Coord const &d, Geom::Coord const &t, bool const &a, bool const &constrained_snap, bool const &fully_constrained, Geom::OptRect target_bbox) : + _point(p), + _tangent(Geom::Point(0,0)), + _source(source), + _source_num(source_num), + _target(target), + _at_intersection (false), + _constrained_snap (constrained_snap), + _fully_constrained (fully_constrained), + _distance(d), + _tolerance(std::max(t,1.0)),// tolerance should never be smaller than 1 px, as it is used for normalization in isOtherSnapBetter. We don't want a division by zero. + _always_snap(a), + _second_distance (Geom::infinity()), + _second_tolerance (1), + _second_always_snap (false), + _transformation (Geom::Point(1,1)), + _target_bbox(target_bbox), + _pointer_distance (Geom::infinity()) { - // tolerance should never be smaller than 1 px, as it is used for normalization in isOtherSnapBetter. We don't want a division by zero. - _at_intersection = false; - _constrained_snap = constrained_snap; - _fully_constrained = fully_constrained; - _second_distance = Geom::infinity(); - _second_tolerance = 1; - _second_always_snap = false; - _transformation = Geom::Point(1,1); - _tangent = Geom::Point(0,0); - _pointer_distance = Geom::infinity(); } -Inkscape::SnappedPoint::SnappedPoint(Inkscape::SnapCandidatePoint const &p, SnapTargetType const &target, Geom::Coord const &d, Geom::Coord const &t, bool const &a, bool const &constrained_snap, bool const &fully_constrained) - : _target(target), _distance(d), _tolerance(std::max(t,1.0)), _always_snap(a) +Inkscape::SnappedPoint::SnappedPoint(Inkscape::SnapCandidatePoint const &p, SnapTargetType const &target, Geom::Coord const &d, Geom::Coord const &t, bool const &a, bool const &constrained_snap, bool const &fully_constrained) : + _point (p.getPoint()), + _tangent (Geom::Point(0,0)), + _source (p.getSourceType()), + _source_num (p.getSourceNum()), + _target(target), + _at_intersection (false), + _constrained_snap (constrained_snap), + _fully_constrained (fully_constrained), + _distance(d), + _tolerance(std::max(t,1.0)), + _always_snap(a), + _second_distance (Geom::infinity()), + _second_tolerance (1), + _second_always_snap (false), + _transformation (Geom::Point(1,1)), + _target_bbox (p.getTargetBBox()), + _pointer_distance (Geom::infinity()) { - _point = p.getPoint(); - _source = p.getSourceType(); - _source_num = p.getSourceNum(); - _at_intersection = false; - _constrained_snap = constrained_snap; - _fully_constrained = fully_constrained; - _second_distance = Geom::infinity(); - _second_tolerance = 1; - _second_always_snap = false; - _transformation = Geom::Point(1,1); - _tangent = Geom::Point(0,0); - _pointer_distance = Geom::infinity(); - _target_bbox = p.getTargetBBox(); - } -Inkscape::SnappedPoint::SnappedPoint(Geom::Point const &p, SnapSourceType const &source, long source_num, SnapTargetType const &target, Geom::Coord const &d, Geom::Coord const &t, bool const &a, bool const &at_intersection, bool const &constrained_snap, bool const &fully_constrained, Geom::Coord const &d2, Geom::Coord const &t2, bool const &a2) - : _point(p), _source(source), _source_num(source_num), _target(target), _at_intersection(at_intersection), _constrained_snap(constrained_snap), _fully_constrained(fully_constrained), _distance(d), _tolerance(std::max(t,1.0)), _always_snap(a), - _second_distance(d2), _second_tolerance(std::max(t2,1.0)), _second_always_snap(a2) -{ +Inkscape::SnappedPoint::SnappedPoint(Geom::Point const &p, SnapSourceType const &source, long source_num, SnapTargetType const &target, Geom::Coord const &d, Geom::Coord const &t, bool const &a, bool const &at_intersection, bool const &constrained_snap, bool const &fully_constrained, Geom::Coord const &d2, Geom::Coord const &t2, bool const &a2) : + _point(p), + _tangent (Geom::Point(0,0)), + _source(source), + _source_num(source_num), + _target(target), + _at_intersection(at_intersection), + _constrained_snap(constrained_snap), + _fully_constrained(fully_constrained), + _distance(d), + _tolerance(std::max(t,1.0)), + _always_snap(a), + _second_distance(d2), + _second_tolerance(std::max(t2,1.0)), + _second_always_snap(a2), // tolerance should never be smaller than 1 px, as it is used for normalization in // isOtherSnapBetter. We don't want a division by zero. - _transformation = Geom::Point(1,1); - _tangent = Geom::Point(0,0); - _pointer_distance = Geom::infinity(); - _target_bbox = Geom::OptRect(); + _transformation (Geom::Point(1,1)), + _pointer_distance (Geom::infinity()), + _target_bbox (Geom::OptRect()) +{ } -Inkscape::SnappedPoint::SnappedPoint() +Inkscape::SnappedPoint::SnappedPoint(): + _point (Geom::Point(0,0)), + _tangent (Geom::Point(0,0)), + _source (SNAPSOURCE_UNDEFINED), + _source_num (-1), + _target (SNAPTARGET_UNDEFINED), + _at_intersection (false), + _constrained_snap (false), + _fully_constrained (false), + _distance (Geom::infinity()), + _tolerance (1), + _always_snap (false), + _second_distance (Geom::infinity()), + _second_tolerance (1), + _second_always_snap (false), + _transformation (Geom::Point(1,1)), + _pointer_distance (Geom::infinity()), + _target_bbox (Geom::OptRect()) { - _point = Geom::Point(0,0); - _source = SNAPSOURCE_UNDEFINED, - _source_num = -1, - _target = SNAPTARGET_UNDEFINED, - _at_intersection = false; - _constrained_snap = false; - _fully_constrained = false; - _distance = Geom::infinity(); - _tolerance = 1; - _always_snap = false; - _second_distance = Geom::infinity(); - _second_tolerance = 1; - _second_always_snap = false; - _transformation = Geom::Point(1,1); - _tangent = Geom::Point(0,0); - _pointer_distance = Geom::infinity(); - _target_bbox = Geom::OptRect(); } -Inkscape::SnappedPoint::SnappedPoint(Geom::Point const &p) +Inkscape::SnappedPoint::SnappedPoint(Geom::Point const &p): + _point (p), + _tangent (Geom::Point(0,0)), + _source (SNAPSOURCE_UNDEFINED), + _source_num (-1), + _target (SNAPTARGET_UNDEFINED), + _at_intersection (false), + _constrained_snap (false), + _fully_constrained (false), + _distance (Geom::infinity()), + _tolerance (1), + _always_snap (false), + _second_distance (Geom::infinity()), + _second_tolerance (1), + _second_always_snap (false), + _transformation (Geom::Point(1,1)), + _pointer_distance (Geom::infinity()), + _target_bbox (Geom::OptRect()) { - _point = p; - _source = SNAPSOURCE_UNDEFINED, - _source_num = -1, - _target = SNAPTARGET_UNDEFINED, - _at_intersection = false; - _constrained_snap = false; - _fully_constrained = false; - _distance = Geom::infinity(); - _tolerance = 1; - _always_snap = false; - _second_distance = Geom::infinity(); - _second_tolerance = 1; - _second_always_snap = false; - _transformation = Geom::Point(1,1); - _tangent = Geom::Point(0,0); - _pointer_distance = Geom::infinity(); - _target_bbox = Geom::OptRect(); } Inkscape::SnappedPoint::~SnappedPoint() -- cgit v1.2.3 From f35dbafd9a8dd77dbda1e5f51596c2c68ed2acdb Mon Sep 17 00:00:00 2001 From: John Smith Date: Sun, 21 Apr 2013 22:19:40 +0900 Subject: Fix for 600285 : Zoom slider (bzr r12294) --- src/widgets/desktop-widget.cpp | 20 ++++++++++++++------ src/widgets/widget-sizes.h | 2 +- 2 files changed, 15 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/widgets/desktop-widget.cpp b/src/widgets/desktop-widget.cpp index 4af7c0795..ca76cb568 100644 --- a/src/widgets/desktop-widget.cpp +++ b/src/widgets/desktop-widget.cpp @@ -55,6 +55,7 @@ #include "ui/widget/dock.h" #include "ui/widget/layer-selector.h" #include "ui/widget/selected-style.h" +#include "ui/widget/gimpspinscale.h" #include "ui/uxmanager.h" #include "util/ege-appear-time-tracker.h" #include "sp-root.h" @@ -628,7 +629,14 @@ void SPDesktopWidget::init( SPDesktopWidget *dtw ) gtk_box_pack_end (GTK_BOX (dtw->statusbar), statusbar_tail, FALSE, FALSE, 0); // zoom status spinbutton - dtw->zoom_status = gtk_spin_button_new_with_range (log(SP_DESKTOP_ZOOM_MIN)/log(2), log(SP_DESKTOP_ZOOM_MAX)/log(2), 0.1); +#if WITH_GTKMM_3_0 + Glib::RefPtr _adjustment = Gtk::Adjustment::create(100.0, log(SP_DESKTOP_ZOOM_MIN)/log(2), log(SP_DESKTOP_ZOOM_MAX)/log(2), 0.1, 1.0); +#else + Gtk::Adjustment *_adjustment = new Gtk::Adjustment(100.0, log(SP_DESKTOP_ZOOM_MIN)/log(2), log(SP_DESKTOP_ZOOM_MAX)/log(2), 0.1, 1.0); +#endif + dtw->zoom_status = gimp_spin_scale_new (_adjustment->gobj(), _("Zoom"), 1); + + //dtw->zoom_status = gtk_spin_button_new_with_range (log(SP_DESKTOP_ZOOM_MIN)/log(2), log(SP_DESKTOP_ZOOM_MAX)/log(2), 0.1); gtk_widget_set_tooltip_text (dtw->zoom_status, _("Zoom")); gtk_widget_set_size_request (dtw->zoom_status, STATUS_ZOOM_WIDTH, -1); gtk_entry_set_width_chars (GTK_ENTRY (dtw->zoom_status), 6); @@ -689,18 +697,18 @@ void SPDesktopWidget::init( SPDesktopWidget *dtw ) dtw->coord_status_y = gtk_label_new(NULL); gtk_label_set_markup( GTK_LABEL(dtw->coord_status_y), " 0.00 " ); gtk_misc_set_alignment (GTK_MISC(dtw->coord_status_y), 1.0, 0.5); - GtkWidget* label_z = gtk_label_new(_("Z:")); + //GtkWidget* label_z = gtk_label_new(_("Z:")); #if GTK_CHECK_VERSION(3,0,0) gtk_grid_attach(GTK_GRID(dtw->coord_status), dtw->coord_status_x, 2, 0, 1, 1); gtk_grid_attach(GTK_GRID(dtw->coord_status), dtw->coord_status_y, 2, 1, 1, 1); - gtk_grid_attach(GTK_GRID(dtw->coord_status), label_z, 3, 0, 1, 2); - gtk_grid_attach(GTK_GRID(dtw->coord_status), dtw->zoom_status, 4, 0, 1, 2); + //gtk_grid_attach(GTK_GRID(dtw->coord_status), label_z, 3, 0, 1, 2); + gtk_grid_attach(GTK_GRID(dtw->coord_status), dtw->zoom_status, 3, 0, 1, 2); #else gtk_table_attach(GTK_TABLE(dtw->coord_status), dtw->coord_status_x, 2,3, 0,1, GTK_FILL, GTK_FILL, 0, 0); gtk_table_attach(GTK_TABLE(dtw->coord_status), dtw->coord_status_y, 2,3, 1,2, GTK_FILL, GTK_FILL, 0, 0); - gtk_table_attach(GTK_TABLE(dtw->coord_status), label_z, 3,4, 0,2, GTK_FILL, GTK_FILL, 0, 0); - gtk_table_attach(GTK_TABLE(dtw->coord_status), dtw->zoom_status, 4,5, 0,2, GTK_FILL, GTK_FILL, 0, 0); + //gtk_table_attach(GTK_TABLE(dtw->coord_status), label_z, 3,4, 0,2, GTK_FILL, GTK_FILL, 0, 0); + gtk_table_attach(GTK_TABLE(dtw->coord_status), dtw->zoom_status, 3,4, 0,2, GTK_FILL, GTK_FILL, 0, 0); #endif sp_set_font_size_smaller (dtw->coord_status); diff --git a/src/widgets/widget-sizes.h b/src/widgets/widget-sizes.h index 87c7ca2e0..8db036734 100644 --- a/src/widgets/widget-sizes.h +++ b/src/widgets/widget-sizes.h @@ -27,7 +27,7 @@ #define STATUS_BAR_FONT_SIZE 10000 -#define STATUS_ZOOM_WIDTH 57 +#define STATUS_ZOOM_WIDTH 100 #define SELECTED_STYLE_SB_WIDTH 48 #define SELECTED_STYLE_WIDTH 190 -- cgit v1.2.3 From 3373e6b43bd3c9eab5f2af81b4a175a250fbc025 Mon Sep 17 00:00:00 2001 From: Nicolas Dufour Date: Sun, 21 Apr 2013 17:39:16 +0200 Subject: Fix for Bug #1023797 (Unnecessary scroll bars in swatches dialog) by Slagvi. Fixed bugs: - https://launchpad.net/bugs/1023797 (bzr r12295) --- src/ui/previewholder.cpp | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src') diff --git a/src/ui/previewholder.cpp b/src/ui/previewholder.cpp index b5a1a29a8..38f6f353f 100644 --- a/src/ui/previewholder.cpp +++ b/src/ui/previewholder.cpp @@ -50,6 +50,8 @@ PreviewHolder::PreviewHolder() : _border(BORDER_NONE) { _scroller = manage(new Gtk::ScrolledWindow()); + ((Gtk::ScrolledWindow *)_scroller)->set_policy(Gtk::POLICY_AUTOMATIC, + Gtk::POLICY_AUTOMATIC); #if WITH_GTKMM_3_0 _insides = manage(new Gtk::Grid()); -- cgit v1.2.3 From bf90914fb7f9cef4691c9371ab86200ae8e985b0 Mon Sep 17 00:00:00 2001 From: Kris De Gussem Date: Sun, 21 Apr 2013 21:04:13 +0200 Subject: fix warnings (bzr r12296) --- src/snapped-point.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/snapped-point.cpp b/src/snapped-point.cpp index ca45410c5..ab545bd5f 100644 --- a/src/snapped-point.cpp +++ b/src/snapped-point.cpp @@ -74,8 +74,8 @@ Inkscape::SnappedPoint::SnappedPoint(Geom::Point const &p, SnapSourceType const // tolerance should never be smaller than 1 px, as it is used for normalization in // isOtherSnapBetter. We don't want a division by zero. _transformation (Geom::Point(1,1)), - _pointer_distance (Geom::infinity()), - _target_bbox (Geom::OptRect()) + _target_bbox (Geom::OptRect()), + _pointer_distance (Geom::infinity()) { } @@ -95,8 +95,8 @@ Inkscape::SnappedPoint::SnappedPoint(): _second_tolerance (1), _second_always_snap (false), _transformation (Geom::Point(1,1)), - _pointer_distance (Geom::infinity()), - _target_bbox (Geom::OptRect()) + _target_bbox (Geom::OptRect()), + _pointer_distance (Geom::infinity()) { } @@ -116,8 +116,8 @@ Inkscape::SnappedPoint::SnappedPoint(Geom::Point const &p): _second_tolerance (1), _second_always_snap (false), _transformation (Geom::Point(1,1)), - _pointer_distance (Geom::infinity()), - _target_bbox (Geom::OptRect()) + _target_bbox (Geom::OptRect()), + _pointer_distance (Geom::infinity()) { } -- cgit v1.2.3 From 370881548b1d8f65def9aa03254316aa22c3b670 Mon Sep 17 00:00:00 2001 From: Kris De Gussem Date: Mon, 22 Apr 2013 14:19:57 +0200 Subject: define booleans as booleans (prevent future errors in comparisons) (bzr r12297) --- src/style.cpp | 2 +- src/style.h | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/style.cpp b/src/style.cpp index ca89e6f65..479f30597 100644 --- a/src/style.cpp +++ b/src/style.cpp @@ -4358,7 +4358,7 @@ sp_style_write_ifilter(gchar *p, gint const len, gchar const *key, } SPIPaint::SPIPaint() : - set(0), + set(false), inherit(0), currentcolor(0), colorSet(0), diff --git a/src/style.h b/src/style.h index 534a6ae70..f456eaa61 100644 --- a/src/style.h +++ b/src/style.h @@ -136,11 +136,11 @@ struct SPILength { /// Paint type internal to SPStyle. struct SPIPaint { - unsigned set : 1; - unsigned inherit : 1; - unsigned currentcolor : 1; - unsigned int colorSet : 1; - unsigned int noneSet : 1; + bool set; //todo check if other properties are also booleans + unsigned inherit; + unsigned currentcolor; + unsigned int colorSet; + unsigned int noneSet; struct { SPPaintServerReference *href; SPColor color; -- cgit v1.2.3 From 3c5cd145660b50b8b96bfa8c22bd6b28d72e452c Mon Sep 17 00:00:00 2001 From: Martin Owens Date: Mon, 22 Apr 2013 10:58:19 -0400 Subject: Add balloon symbols and connect defs modified signal. Fixed bugs: - https://launchpad.net/bugs/1170817 (bzr r12298) --- src/selection-chemistry.cpp | 8 +------- src/ui/dialog/symbols.cpp | 17 ++++++++++++++++- src/ui/dialog/symbols.h | 3 +-- 3 files changed, 18 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/selection-chemistry.cpp b/src/selection-chemistry.cpp index fc410897a..28dd51e81 100644 --- a/src/selection-chemistry.cpp +++ b/src/selection-chemistry.cpp @@ -2973,7 +2973,6 @@ void sp_selection_symbol(SPDesktop *desktop, bool /*apply*/ ) */ void sp_selection_unsymbol(SPDesktop *desktop) { - if (desktop == NULL) { return; } @@ -2992,13 +2991,8 @@ void sp_selection_unsymbol(SPDesktop *desktop) SPObject* use = selection->single(); // Make sure we have only one object in selection. - if( use == NULL ) { - desktop->messageStack()->flash(Inkscape::WARNING_MESSAGE, _("Select only one symbol to convert to group.")); - return; - } - // Require that we really have a that references a . - if( !SP_IS_USE( use ) && !SP_IS_SYMBOL( use->firstChild() ) ) { + if( use == NULL || ( !SP_IS_USE( use ) && !SP_IS_SYMBOL( use->firstChild() ))) { desktop->messageStack()->flash(Inkscape::WARNING_MESSAGE, _("Select only one symbol to convert to group.")); return; } diff --git a/src/ui/dialog/symbols.cpp b/src/ui/dialog/symbols.cpp index 57e2e7285..989375bbd 100644 --- a/src/ui/dialog/symbols.cpp +++ b/src/ui/dialog/symbols.cpp @@ -49,6 +49,7 @@ #include "inkscape.h" #include "sp-root.h" #include "sp-use.h" +#include "sp-defs.h" #include "sp-symbol.h" #ifdef WITH_LIBVISIO @@ -246,12 +247,19 @@ SymbolsDialog::SymbolsDialog( gchar const* prefsPath ) : key = SPItem::display_key_new(1); renderDrawing.setRoot(previewDocument->getRoot()->invoke_show(renderDrawing, key, SP_ITEM_SHOW_DISPLAY )); + // This might need to be a global variable so setTargetDesktop can modify it + SPDefs *defs = currentDocument->getDefs(); + sigc::connection defsModifiedConn = (SP_OBJECT(defs))->connectModified( + sigc::mem_fun(*this, &SymbolsDialog::defsModified)); + instanceConns.push_back(defsModifiedConn); + get_symbols(); draw_symbols( currentDocument ); /* Defaults to current document */ - desktopChangeConn = + sigc::connection desktopChangeConn = deskTrack.connectDesktopChanged( sigc::mem_fun(*this, &SymbolsDialog::setTargetDesktop) ); instanceConns.push_back( desktopChangeConn ); + deskTrack.connect(GTK_WIDGET(gobj())); } @@ -304,6 +312,13 @@ void SymbolsDialog::iconDragDataGet(const Glib::RefPtr& /*cont } +void SymbolsDialog::defsModified(SPObject *object, guint flags) +{ + if ( !symbolSets[symbolSet->get_active_text()] ) { + rebuild(); + } +} + void SymbolsDialog::iconChanged() { #if WITH_GTKMM_3_0 std::vector iconArray = iconView->get_selected_items(); diff --git a/src/ui/dialog/symbols.h b/src/ui/dialog/symbols.h index 2d408386f..b81f6981e 100644 --- a/src/ui/dialog/symbols.h +++ b/src/ui/dialog/symbols.h @@ -46,6 +46,7 @@ private: static SymbolColumns *getColumns(); void rebuild(); + void defsModified(SPObject *object, guint flags); void iconChanged(); void iconDragDataGet(const Glib::RefPtr& context, Gtk::SelectionData& selection_data, guint info, guint time); @@ -84,8 +85,6 @@ private: Inkscape::Drawing renderDrawing; std::vector instanceConns; - sigc::connection desktopChangeConn; - }; } //namespace Dialogs -- cgit v1.2.3 From a40d9996c9252ebf79b951e0023340870f0347af Mon Sep 17 00:00:00 2001 From: Martin Owens Date: Tue, 23 Apr 2013 13:40:15 -0400 Subject: Allow multiple groups to be symbolised and replace groups with clones. (bzr r12300) --- src/selection-chemistry.cpp | 70 ++++++++++++++++++++++++++------------------- src/selection-chemistry.h | 3 +- src/verbs.cpp | 2 +- 3 files changed, 44 insertions(+), 31 deletions(-) (limited to 'src') diff --git a/src/selection-chemistry.cpp b/src/selection-chemistry.cpp index 28dd51e81..beafc59a5 100644 --- a/src/selection-chemistry.cpp +++ b/src/selection-chemistry.cpp @@ -2892,45 +2892,52 @@ void sp_selection_to_guides(SPDesktop *desktop) /* * Convert to , leaving all elements referencing group unchanged. */ -void sp_selection_symbol(SPDesktop *desktop, bool /*apply*/ ) +void sp_selection_symbols(SPDesktop *desktop, bool /*apply*/ ) { - if (desktop == NULL) { return; } SPDocument *doc = sp_desktop_document(desktop); - Inkscape::XML::Document *xml_doc = doc->getReprDoc(); + doc->ensureUpToDate(); Inkscape::Selection *selection = sp_desktop_selection(desktop); // Check if something is selected. if (selection->isEmpty()) { - desktop->messageStack()->flash(Inkscape::WARNING_MESSAGE, _("Select one group to convert to symbol.")); - return; + desktop->messageStack()->flash(Inkscape::WARNING_MESSAGE, _("Select groups to convert to symbols.")); + return; } - SPObject* group = selection->single(); + GSList *items = g_slist_copy(const_cast(selection->list())); + bool hasWorked = false; - // Make sure we have only one object in selection. - if( group == NULL ) { - desktop->messageStack()->flash(Inkscape::WARNING_MESSAGE, _("Select only one group to convert to symbol.")); - return; - } + for ( GSList const *iter=items; iter != NULL ; iter = iter->next ) { + SPObject *object = reinterpret_cast( iter->data ); - // Make sure we convert the original. - if( SP_IS_USE( group ) ) { - desktop->messageStack()->flash(Inkscape::WARNING_MESSAGE, _("Select original (Shift+D) to convert to symbol.")); - return; + // Require that we really have a group. + if( SP_IS_GROUP( object ) ) { + sp_selection_symbol( doc, object ); + hasWorked = true; + } } - // Require that we really have a group. - if( !SP_IS_GROUP( group ) ) { - desktop->messageStack()->flash(Inkscape::WARNING_MESSAGE, _("Group selection first to convert to symbol.")); - return; + g_slist_free(items); + + if( !hasWorked ) { + desktop->messageStack()->flash(Inkscape::WARNING_MESSAGE, _("No groups converted to symbols.")); + return; } - doc->ensureUpToDate(); + selection->clear(); + // Group just disappears, nothing to select. + + DocumentUndo::done(doc, SP_VERB_EDIT_SYMBOL, _("Group to symbol")); +} + +void sp_selection_symbol(SPDocument *doc, SPObject *group) +{ + Inkscape::XML::Document *xml_doc = doc->getReprDoc(); Inkscape::XML::Node *symbol = xml_doc->createElement("svg:symbol"); symbol->setAttribute("style", group->getAttribute("style")); @@ -2952,20 +2959,25 @@ void sp_selection_symbol(SPDesktop *desktop, bool /*apply*/ ) // Need to delete ; all elements that referenced should // auto-magically reference . doc->getDefs()->getRepr()->appendChild(symbol); - symbol->setAttribute("id",id.c_str()); // After we delete group with same id. - // Mysterious, must set symbol ID before deleting group or all - // refering to symbol get turned into groups. (Linked to unlinking clones?) - group->deleteObject(true); + // Mysterious, must set symbol ID before deleting group or all items + // get turned into groups. (Linked to unlinking clones?) + symbol->setAttribute("id",id.c_str()); - Inkscape::GC::release(symbol); - selection->clear(); - // Group just disappears, nothing to select. + // Create a clone of the symbol to replace the deleted group. + Inkscape::XML::Node *clone = xml_doc->createElement("svg:use"); + clone->setAttribute("x", "0", false); + clone->setAttribute("y", "0", false); + clone->setAttribute("xlink:href", g_strdup_printf("#%s", id.c_str()), false); - // Need to signal Symbol dialog to update + clone->setAttribute("inkscape:transform-center-x", group->getAttribute("inkscape:transform-center-x"), false); + clone->setAttribute("inkscape:transform-center-y", group->getAttribute("inkscape:transform-center-y"), false); + group->parent->getRepr()->appendChild(clone); + + group->deleteObject(true); g_slist_free(children); - DocumentUndo::done(doc, SP_VERB_EDIT_SYMBOL, _("Group to symbol")); + Inkscape::GC::release(symbol); } /* diff --git a/src/selection-chemistry.h b/src/selection-chemistry.h index 83dd93bdd..1c627fd1a 100644 --- a/src/selection-chemistry.h +++ b/src/selection-chemistry.h @@ -68,7 +68,8 @@ void sp_selection_clone_original_path_lpe(SPDesktop *desktop); void sp_selection_to_marker(SPDesktop *desktop, bool apply = true); void sp_selection_to_guides(SPDesktop *desktop); -void sp_selection_symbol(SPDesktop *desktop, bool apply = true); +void sp_selection_symbols(SPDesktop *desktop, bool apply = true); +void sp_selection_symbol(SPDocument *doc, SPObject *group); void sp_selection_unsymbol(SPDesktop *desktop); void sp_selection_tile(SPDesktop *desktop, bool apply = true); diff --git a/src/verbs.cpp b/src/verbs.cpp index 4777e168c..ec7cad8dd 100644 --- a/src/verbs.cpp +++ b/src/verbs.cpp @@ -955,7 +955,7 @@ void EditVerb::perform(SPAction *action, void *data) sp_selection_untile(dt); break; case SP_VERB_EDIT_SYMBOL: - sp_selection_symbol(dt); + sp_selection_symbols(dt); break; case SP_VERB_EDIT_UNSYMBOL: sp_selection_unsymbol(dt); -- cgit v1.2.3 From f9be42a5e41dc5bb2a1676e9f64e3990624072f4 Mon Sep 17 00:00:00 2001 From: Kris De Gussem Date: Tue, 23 Apr 2013 21:17:26 +0200 Subject: revert r12297 (bzr r12302) --- src/style.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/style.h b/src/style.h index f456eaa61..2b98c9e5d 100644 --- a/src/style.h +++ b/src/style.h @@ -136,11 +136,11 @@ struct SPILength { /// Paint type internal to SPStyle. struct SPIPaint { - bool set; //todo check if other properties are also booleans - unsigned inherit; - unsigned currentcolor; - unsigned int colorSet; - unsigned int noneSet; + unsigned int set : 1; //c++ bitfields are used here as opposed to bools to reduce memory consumption, see http://tinyurl.com/cswh6mq + unsigned int inherit : 1; + unsigned int currentcolor : 1; + unsigned int colorSet : 1; + unsigned int noneSet : 1; struct { SPPaintServerReference *href; SPColor color; -- cgit v1.2.3