summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJabiertxo Arraiza Cenoz <jtx@jtx-desktop.markerlab.es>2017-10-19 09:15:11 +0000
committerJabiertxo Arraiza Cenoz <jtx@jtx-desktop.markerlab.es>2017-10-19 09:15:11 +0000
commitd1b095af84220d7f46123cdd2a2fae1de79d184e (patch)
tree94f71af613b4ea70a5f2173b08466a399d63b3ff /src
parentMerge remote-tracking branch 'origin/master' into SymbolsSearch (diff)
downloadinkscape-d1b095af84220d7f46123cdd2a2fae1de79d184e.tar.gz
inkscape-d1b095af84220d7f46123cdd2a2fae1de79d184e.zip
Working on current document
Diffstat (limited to 'src')
-rw-r--r--src/ui/dialog/symbols.cpp32
-rw-r--r--src/ui/dialog/symbols.h3
2 files changed, 21 insertions, 14 deletions
diff --git a/src/ui/dialog/symbols.cpp b/src/ui/dialog/symbols.cpp
index d4b460d1d..ccaacd6a3 100644
--- a/src/ui/dialog/symbols.cpp
+++ b/src/ui/dialog/symbols.cpp
@@ -363,7 +363,7 @@ void SymbolsDialog::rebuild() {
}
store->clear();
- SPDocument* symbol_document = selectedSymbols();
+ SPDocument* symbol_document = selectedSymbols(true);
if( !symbol_document ) {
// Symbol must be from Current Document (this method of
// checking should be language independent).
@@ -434,7 +434,7 @@ void SymbolsDialog::documentReplaced(SPDesktop *desktop, SPDocument *document)
rebuild();
}
-SPDocument* SymbolsDialog::selectedSymbols() {
+SPDocument* SymbolsDialog::selectedSymbols(bool ignorecurrent) {
/* OK, we know symbol name... now we need to copy it to clipboard, bon chance! */
Glib::ustring doc_title = selectedSymbolDocTitle();
if (doc_title.empty()) {
@@ -446,6 +446,9 @@ SPDocument* SymbolsDialog::selectedSymbols() {
symbol_document = symbolSets[doc_title];
// Symbol must be from Current Document (this method of checking should be language independent).
if( !symbol_document ) {
+ if (ignorecurrent) {
+ return NULL;
+ }
return currentDocument;
}
}
@@ -769,16 +772,14 @@ gchar const* SymbolsDialog::style_from_use( gchar const* id, SPDocument* documen
}
void SymbolsDialog::add_symbols( SPDocument* symbol_document ) {
- if (symbol_document) {
- std::vector<SPSymbol*> l = symbols_in_doc( symbol_document );
- Glib::ustring doc_title = "";
- if (symbol_document->getRoot()->title()) {
- doc_title = symbol_document->getRoot()->title();
- }
- for(auto symbol:l) {
- if (symbol) {
- add_symbol( symbol, doc_title);
- }
+ std::vector<SPSymbol*> l = symbols_in_doc( symbol_document );
+ Glib::ustring doc_title = "";
+ if (symbol_document->getRoot()->title()) {
+ doc_title = symbol_document->getRoot()->title();
+ }
+ for(auto symbol:l) {
+ if (symbol) {
+ add_symbol( symbol, doc_title);
}
}
}
@@ -790,6 +791,12 @@ void SymbolsDialog::find_symbols(GdkEventKey* evt) {
find_symbols_overload();
}
+void SymbolsDialog::update_search_box(gpointer data)
+{
+ Glib::ustring doc_title = *reinterpret_cast<Glib::ustring *>(data);
+ search->set_text(doc_title);
+}
+
void SymbolsDialog::find_symbols_overload() {
store->clear();
Glib::ustring title = search->get_text();
@@ -802,7 +809,6 @@ void SymbolsDialog::find_symbols_overload() {
Glib::ustring doc_title = symbol_document_map.first;
if (!symbol_document) {
doc_title = get_symbols(symbol_document_map.first);
- search->set_text(doc_title);
symbol_document = symbolSets[doc_title];
}
if (symbol_document) {
diff --git a/src/ui/dialog/symbols.h b/src/ui/dialog/symbols.h
index 0ae8c4fcc..585e8f98f 100644
--- a/src/ui/dialog/symbols.h
+++ b/src/ui/dialog/symbols.h
@@ -75,7 +75,8 @@ private:
void defsModified(SPObject *object, guint flags);
void selectionChanged(Inkscape::Selection *selection);
void documentReplaced(SPDesktop *desktop, SPDocument *document);
- SPDocument* selectedSymbols();
+ SPDocument* selectedSymbols(bool ignorecurrent = false);
+ void update_search_box(gpointer data);
Glib::ustring selectedSymbolId();
Glib::ustring selectedSymbolDocTitle();
void iconChanged();