diff options
| author | Jabiertxof <jabier.arraiza@marker.es> | 2019-06-11 18:42:08 +0000 |
|---|---|---|
| committer | Jabiertxof <jabier.arraiza@marker.es> | 2019-06-11 18:42:08 +0000 |
| commit | 66e71cf64c336ea2957d8c5ab912c8c7e81e1e83 (patch) | |
| tree | ce1353866f43c0eadeac114cded6f517f5e48e9f /src/ui/dialog/styledialog.cpp | |
| parent | Fixing coding style (diff) | |
| download | inkscape-66e71cf64c336ea2957d8c5ab912c8c7e81e1e83.tar.gz inkscape-66e71cf64c336ea2957d8c5ab912c8c7e81e1e83.zip | |
Allow not reorder commented styles and refresh stiles on selectors drag
Diffstat (limited to 'src/ui/dialog/styledialog.cpp')
| -rw-r--r-- | src/ui/dialog/styledialog.cpp | 91 |
1 files changed, 47 insertions, 44 deletions
diff --git a/src/ui/dialog/styledialog.cpp b/src/ui/dialog/styledialog.cpp index 89f0efdc6..1a6a9df11 100644 --- a/src/ui/dialog/styledialog.cpp +++ b/src/ui/dialog/styledialog.cpp @@ -607,67 +607,70 @@ void StyleDialog::_readStyleElement() } } std::map<Glib::ustring, Glib::ustring> attr_prop_styleshet = parseStyle(style); + std::map<Glib::ustring, Glib::ustring> attr_prop_styleshet_comments = parseStyle(comments); + std::map<Glib::ustring, std::pair<Glib::ustring, bool> > result_props; + for (auto styled : attr_prop_styleshet) { + result_props[styled.first] = std::make_pair(styled.second, true); + } + for (auto styled : attr_prop_styleshet_comments) { + result_props[styled.first] = std::make_pair(styled.second, false); + } css_selector_event_add->signal_button_release_event().connect( sigc::bind<Glib::RefPtr<Gtk::TreeStore>, Gtk::TreeView *, Glib::ustring, gint>( sigc::mem_fun(*this, &StyleDialog::_addRow), store, css_tree, selector, selectorpos)); if (obj && !_all_css->get_active()) { - for (auto iter : obj->style->properties()) { - if (iter->style_src != SP_STYLE_SRC_UNSET) { - if (attr_prop_styleshet.count(iter->name)) { - Gtk::TreeIter iterstore = store->append(); - Gtk::TreeModel::Path path = (Gtk::TreeModel::Path)iterstore; - Gtk::TreeModel::Row row = *(iterstore); - row[_mColumns._colSelector] = selector; - row[_mColumns._colSelectorPos] = selectorpos; - row[_mColumns._colActive] = true; - row[_mColumns._colName] = iter->name; - row[_mColumns._colValue] = attr_prop_styleshet[iter->name]; - const Glib::ustring value = row[_mColumns._colValue]; - guint32 r1 = 0; // if there's no color, return black - r1 = sp_svg_read_color(value.c_str(), r1); - guint32 r2 = 0; // if there's no color, return black - r2 = sp_svg_read_color(iter->get_value().c_str(), r2); - if (attr_prop.count(iter->name) || - (value != iter->get_value() && ((r1 & 0x000000ff) == 0 || r1 != r2))) { - row[_mColumns._colStrike] = true; - row[_mColumns._colOwner] = Glib::ustring(""); - } else { - row[_mColumns._colStrike] = false; - row[_mColumns._colOwner] = Glib::ustring("Value active"); - _addOwnerStyle(iter->name, selector); + for (auto iter : result_props) { + Gtk::TreeIter iterstore = store->append(); + Gtk::TreeModel::Path path = (Gtk::TreeModel::Path)iterstore; + Gtk::TreeModel::Row row = *(iterstore); + row[_mColumns._colSelector] = selector; + row[_mColumns._colSelectorPos] = selectorpos; + row[_mColumns._colActive] = iter.second.second; + row[_mColumns._colName] = iter.first; + row[_mColumns._colValue] = iter.second.first; + const Glib::ustring value = row[_mColumns._colValue]; + if (iter.second.second) { + Glib::ustring val = ""; + for (auto iterprop : obj->style->properties()) { + if (iterprop->style_src != SP_STYLE_SRC_UNSET && + iterprop->name == iter.first) + { + val = iterprop->get_value(); + break; } } + guint32 r1 = 0; // if there's no color, return black + r1 = sp_svg_read_color(value.c_str(), r1); + guint32 r2 = 0; // if there's no color, return black + r2 = sp_svg_read_color(val.c_str(), r2); + if (attr_prop.count(iter.first) || + (value != val && (r1 == 0 || r1 != r2))) + { + row[_mColumns._colStrike] = true; + row[_mColumns._colOwner] = Glib::ustring(""); + } else { + row[_mColumns._colStrike] = false; + row[_mColumns._colOwner] = Glib::ustring("Value active"); + _addOwnerStyle(iter.first, selector); + } + } else { + row[_mColumns._colStrike] = true; + Glib::ustring tooltiptext = _("This value is comented"); + row[_mColumns._colOwner] = tooltiptext; } } } else { - for (auto iter : attr_prop_styleshet) { + for (auto iter : result_props) { Gtk::TreeModel::Row row = *(store->append()); row[_mColumns._colSelector] = selector; row[_mColumns._colSelectorPos] = selectorpos; - row[_mColumns._colActive] = true; + row[_mColumns._colActive] = iter.second.second; row[_mColumns._colName] = iter.first; - row[_mColumns._colValue] = iter.second; + row[_mColumns._colValue] = iter.second.first; row[_mColumns._colStrike] = false; row[_mColumns._colOwner] = Glib::ustring("Stylesheet value"); } } - std::map<Glib::ustring, Glib::ustring> attr_prop_styleshet_comments = parseStyle(comments); - - for (auto iter : attr_prop_styleshet_comments) { - if (!attr_prop_styleshet.count(iter.first)) { - Gtk::TreeIter iterstore = store->append(); - Gtk::TreeModel::Path path = (Gtk::TreeModel::Path)iterstore; - Gtk::TreeModel::Row row = *(iterstore); - row[_mColumns._colSelector] = selector; - row[_mColumns._colSelectorPos] = selectorpos; - row[_mColumns._colActive] = false; - row[_mColumns._colName] = iter.first; - row[_mColumns._colValue] = iter.second; - row[_mColumns._colStrike] = true; - Glib::ustring tooltiptext = _("This value is comented"); - row[_mColumns._colOwner] = tooltiptext; - } - } _styleBox.pack_start(*css_selector_container, Gtk::PACK_EXPAND_WIDGET); selectorpos++; } |
