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/ui/dialog/xml-tree.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'src/ui') 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/ui') 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 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/ui') 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/ui/dialog/symbols.cpp | 58 ++++++++++++++++++++--------------------------- src/ui/dialog/symbols.h | 5 ++-- 2 files changed, 26 insertions(+), 37 deletions(-) (limited to 'src/ui') 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 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/ui') 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 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/ui/dialog/symbols.cpp | 17 ++++++++++++++++- src/ui/dialog/symbols.h | 3 +-- 2 files changed, 17 insertions(+), 3 deletions(-) (limited to 'src/ui') 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