diff options
| author | Jabier Arraiza <jabier.arraiza@marker.es> | 2018-12-24 17:20:42 +0000 |
|---|---|---|
| committer | Jabiertxof <jabier.arraiza@marker.es> | 2018-12-26 11:46:58 +0000 |
| commit | e2da4f10af02f457ee51d4da513db51d02d33569 (patch) | |
| tree | 5a3bd95b5804f299a72123a40b4b39fd4f99b122 /src/ui/dialog/cssdialog.cpp | |
| parent | Add messagess to CSS dialog (diff) | |
| download | inkscape-e2da4f10af02f457ee51d4da513db51d02d33569.tar.gz inkscape-e2da4f10af02f457ee51d4da513db51d02d33569.zip | |
add "add" button on same place
Diffstat (limited to 'src/ui/dialog/cssdialog.cpp')
| -rw-r--r-- | src/ui/dialog/cssdialog.cpp | 39 |
1 files changed, 21 insertions, 18 deletions
diff --git a/src/ui/dialog/cssdialog.cpp b/src/ui/dialog/cssdialog.cpp index 54713315b..903bed90d 100644 --- a/src/ui/dialog/cssdialog.cpp +++ b/src/ui/dialog/cssdialog.cpp @@ -50,12 +50,23 @@ CssDialog::CssDialog(): _store = Gtk::ListStore::create(_cssColumns); _treeView.set_model(_store); - Inkscape::UI::Widget::IconRenderer * addRenderer = manage(new Inkscape::UI::Widget::IconRenderer()); + Inkscape::UI::Widget::IconRenderer * addRenderer = manage(new Inkscape::UI::Widget::IconRenderer()); addRenderer->add_icon("edit-delete"); - int addCol = _treeView.append_column("", *addRenderer) - 1; - Gtk::TreeViewColumn *col = _treeView.get_column(addCol); - + _treeView.append_column("", *addRenderer); + Gtk::TreeViewColumn *col = _treeView.get_column(0); + if (col) { + auto add_icon = Gtk::manage(sp_get_icon_image("list-add", Gtk::ICON_SIZE_SMALL_TOOLBAR)); + col->set_clickable(true); + col->set_widget(*add_icon); + add_icon->set_tooltip_text(_("Add a new attribute")); + add_icon->show(); + // This gets the GtkButton inside the GtkBox, inside the GtkAlignment, inside the GtkImage icon. + auto button = add_icon->get_parent()->get_parent()->get_parent(); + // Assign the button event so that create happens BEFORE delete. If this code + // isn't in this exact way, the onAttrDelete is called when the header lines are pressed. + button->signal_button_release_event().connect(sigc::mem_fun(*this, &CssDialog::_addProperty), true); + } _propRenderer = Gtk::manage(new Gtk::CellRendererText()); _propRenderer->property_editable() = true; int nameColNum = _treeView.append_column("CSS Property", *_propRenderer) - 1; @@ -93,22 +104,10 @@ CssDialog::CssDialog(): _message_changed_connection = _message_stack->connectChanged( sigc::bind(sigc::ptr_fun(_set_status_message), GTK_WIDGET(status.gobj()))); - - GtkWidget *child = sp_get_icon_image("list-add", GTK_ICON_SIZE_SMALL_TOOLBAR); - gtk_widget_show(child); - _buttonAddProperty.add(*manage(Glib::wrap(child))); - _buttonAddProperty.set_relief(Gtk::RELIEF_NONE); - _buttonAddProperty.set_tooltip_text("Add a new property"); - - _mainBox.pack_end(_buttonBox, Gtk::PACK_SHRINK); - _buttonBox.pack_start(_buttonAddProperty, Gtk::PACK_SHRINK); - _getContents()->pack_start(_mainBox, Gtk::PACK_EXPAND_WIDGET); css_reset_context(0); setDesktop(getDesktop()); - - _buttonAddProperty.signal_clicked().connect(sigc::mem_fun(*this, &CssDialog::_addProperty)); } @@ -165,9 +164,13 @@ void CssDialog::css_reset_context(gint css) * panel. A new row is added, double clicking which text for new property can be * added. */ -void CssDialog::_addProperty() +bool CssDialog::_addProperty(GdkEventButton *event) { - _propRow = *(_store->append()); + if(event->type == GDK_BUTTON_RELEASE && event->button == 1) { + _propRow = *(_store->append()); + return true; + } + return false; } } // namespace Dialog |
