From a5cfaeaa55419c38a7df0daf2140febd7f8e0f37 Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Date: Sun, 20 Feb 2022 21:05:21 +0100 Subject: [PATCH] Add search to objects dialog --- share/ui/Adwaita-dark.css | 8 +++++++- share/ui/Adwaita.css | 6 ++++++ share/ui/Minwaita-Inkscape.css | 6 ++++++ src/ui/dialog/objects.cpp | 28 +++++++++++++++++++++++----- 4 files changed, 42 insertions(+), 6 deletions(-) diff --git a/share/ui/Adwaita-dark.css b/share/ui/Adwaita-dark.css index 1cd4ddb506..6f7a67eb7c 100644 --- a/share/ui/Adwaita-dark.css +++ b/share/ui/Adwaita-dark.css @@ -94,4 +94,10 @@ notebook notebook header image { #AlignDistribute #align { margin-top:-15px; -} \ No newline at end of file +} + +#Objects .search { + padding:3px 4px; + min-height:16px; + font-size:small; +} diff --git a/share/ui/Adwaita.css b/share/ui/Adwaita.css index d544e7cfd6..05e5c47ff6 100644 --- a/share/ui/Adwaita.css +++ b/share/ui/Adwaita.css @@ -72,3 +72,9 @@ notebook notebook header image { padding:0px; margin:0px; } + +#Objects .search { + padding:3px 4px; + min-height:16px; + font-size:small; +} \ No newline at end of file diff --git a/share/ui/Minwaita-Inkscape.css b/share/ui/Minwaita-Inkscape.css index c92da612d8..e5b3ef8a42 100644 --- a/share/ui/Minwaita-Inkscape.css +++ b/share/ui/Minwaita-Inkscape.css @@ -143,3 +143,9 @@ button.toggle:checked { background-color: transparent; background-image: image(@theme_selected_bg_color); } + +#Objects .search { + padding:2px 4px; + min-height:16px; + font-size:small; +} diff --git a/src/ui/dialog/objects.cpp b/src/ui/dialog/objects.cpp index 9eee5a82ca..874553f727 100644 --- a/src/ui/dialog/objects.cpp +++ b/src/ui/dialog/objects.cpp @@ -685,6 +685,24 @@ ObjectsPanel::ObjectsPanel() : // when at least one row is selected _tree.set_reorderable(true); _tree.enable_model_drag_dest (Gdk::ACTION_MOVE); + _tree.get_selection()->set_mode(Gtk::SELECTION_NONE); + // Search + auto *search = Gtk::manage(new Gtk::SearchEntry()); + search->signal_focus_in_event().connect([=](GdkEventFocus*) { + _tree.get_selection()->set_mode(Gtk::SELECTION_SINGLE); + _tree.expand_all(); + return false; + }); + search->signal_focus_out_event().connect([=](GdkEventFocus*) { + _tree.get_selection()->set_mode(Gtk::SELECTION_NONE); + return false; + }); + search->set_margin_end(3); + search->set_valign(Gtk::ALIGN_CENTER); + + _tree.set_search_entry(*search); + _tree.set_search_column(1); + _tree.set_enable_search(true); //Label _name_column = Gtk::manage(new Gtk::TreeViewColumn()); @@ -768,10 +786,6 @@ ObjectsPanel::ObjectsPanel() : //Set the expander and search columns _tree.set_expander_column(*_name_column); - // Disable search (it doesn't make much sense) - _tree.set_search_column(-1); - _tree.set_enable_search(false); - _tree.get_selection()->set_mode(Gtk::SELECTION_NONE); //Set up tree signals _tree.signal_button_press_event().connect(sigc::mem_fun(*this, &ObjectsPanel::_handleButtonEvent), false); @@ -843,7 +857,11 @@ ObjectsPanel::ObjectsPanel() : _buttonsSecondary.pack_end(*_addBarButton(INKSCAPE_ICON("edit-delete"), _("Remove object"), "app.delete-selection"), Gtk::PACK_SHRINK); _buttonsSecondary.pack_end(*_addBarButton(INKSCAPE_ICON("go-down"), _("Move Down"), "app.selection-stack-down"), Gtk::PACK_SHRINK); _buttonsSecondary.pack_end(*_addBarButton(INKSCAPE_ICON("go-up"), _("Move Up"), "app.selection-stack-up"), Gtk::PACK_SHRINK); - + _buttonsSecondary.pack_start(*search, Gtk::PACK_SHRINK); + _buttonsSecondary.set_margin_top(1); + _buttonsSecondary.set_margin_bottom(1); + _buttonsPrimary.set_margin_top(1); + _buttonsPrimary.set_margin_bottom(1); _buttonsRow.pack_start(_buttonsPrimary, Gtk::PACK_SHRINK); _buttonsRow.pack_end(_buttonsSecondary, Gtk::PACK_SHRINK); -- GitLab