diff options
| author | Adrian Boguszewski <adrbogus1@student.pg.gda.pl> | 2016-03-11 01:06:39 +0000 |
|---|---|---|
| committer | Marc Jeanmougin <marcjeanmougin@free.fr> | 2016-03-11 01:06:39 +0000 |
| commit | 43884ced57f56cf41ad2d7fac3a8f5ba87f78276 (patch) | |
| tree | 0710dc639779467aa9140c6933846ba4da17a594 /src/ui/dialog/template-load-tab.cpp | |
| parent | Displays filename instead of blank string in unnamed palettes (diff) | |
| download | inkscape-43884ced57f56cf41ad2d7fac3a8f5ba87f78276.tar.gz inkscape-43884ced57f56cf41ad2d7fac3a8f5ba87f78276.zip | |
Improvements on the "new from template" dialog
-> greyed buttons when no dialogs selected (bug 1363450)
-> selected template deselects when filtered out
-> filtering down to 1 template selects it
-> selected template keeps looking selected when filtered
Fixed bugs:
- https://launchpad.net/bugs/1363450
(bzr r14698)
Diffstat (limited to 'src/ui/dialog/template-load-tab.cpp')
| -rw-r--r-- | src/ui/dialog/template-load-tab.cpp | 38 |
1 files changed, 30 insertions, 8 deletions
diff --git a/src/ui/dialog/template-load-tab.cpp b/src/ui/dialog/template-load-tab.cpp index fca1f7b30..7eb04ff79 100644 --- a/src/ui/dialog/template-load-tab.cpp +++ b/src/ui/dialog/template-load-tab.cpp @@ -35,10 +35,11 @@ namespace Inkscape { namespace UI { -TemplateLoadTab::TemplateLoadTab() +TemplateLoadTab::TemplateLoadTab(NewFromTemplate* parent) : _current_keyword("") , _keywords_combo(true) , _current_search_type(ALL) + , _parent_widget(parent) { set_border_width(10); @@ -94,7 +95,8 @@ void TemplateLoadTab::_displayTemplateInfo() if (templateSelectionRef->get_selected()) { _current_template = (*templateSelectionRef->get_selected())[_columns.textValue]; - _info_widget->display(_tdata[_current_template]); + _info_widget->display(_tdata[_current_template]); + _parent_widget->setCreateButtonSensitive(true); } } @@ -148,11 +150,10 @@ void TemplateLoadTab::_keywordSelected() void TemplateLoadTab::_refreshTemplatesList() { - _tlist_store->clear(); - + _tlist_store->clear(); + switch (_current_search_type){ case ALL :{ - for (std::map<Glib::ustring, TemplateData>::iterator it = _tdata.begin() ; it != _tdata.end() ; ++it) { Gtk::TreeModel::iterator iter = _tlist_store->append(); Gtk::TreeModel::Row row = *iter; @@ -160,7 +161,7 @@ void TemplateLoadTab::_refreshTemplatesList() } break; } - + case LIST_KEYWORD: { for (std::map<Glib::ustring, TemplateData>::iterator it = _tdata.begin() ; it != _tdata.end() ; ++it) { if (it->second.keywords.count(_current_keyword.lowercase()) != 0){ @@ -171,10 +172,10 @@ void TemplateLoadTab::_refreshTemplatesList() } break; } - + case USER_SPECIFIED : { for (std::map<Glib::ustring, TemplateData>::iterator it = _tdata.begin() ; it != _tdata.end() ; ++it) { - if (it->second.keywords.count(_current_keyword.lowercase()) != 0 || + if (it->second.keywords.count(_current_keyword.lowercase()) != 0 || it->second.display_name.lowercase().find(_current_keyword.lowercase()) != Glib::ustring::npos || it->second.author.lowercase().find(_current_keyword.lowercase()) != Glib::ustring::npos || it->second.short_description.lowercase().find(_current_keyword.lowercase()) != Glib::ustring::npos || @@ -188,6 +189,27 @@ void TemplateLoadTab::_refreshTemplatesList() break; } } + + // reselect item + Gtk::TreeIter* item_to_select = NULL; + for (Gtk::TreeModel::Children::iterator it = _tlist_store->children().begin(); it != _tlist_store->children().end(); ++it) { + Gtk::TreeModel::Row row = *it; + if (_current_template == row[_columns.textValue]) { + item_to_select = new Gtk::TreeIter(it); + break; + } + } + if (_tlist_store->children().size() == 1) { + item_to_select = new Gtk::TreeIter(_tlist_store->children().begin()); + } + if (item_to_select) { + _tlist_view.get_selection()->select(*item_to_select); + delete item_to_select; + } else { + _current_template = ""; + _info_widget->clear(); + _parent_widget->setCreateButtonSensitive(false); + } } |
