diff --git a/share/ui/Adwaita-dark.css b/share/ui/Adwaita-dark.css index 1cd4ddb506bd24dc2018559b9b12d74258f8da95..6f7a67eb7c5af6a07361f7a0cab6f81088deb51d 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 d544e7cfd6a2cdd8f76777923622cff3931ad1f7..05e5c47ff60617e81433a95d2337efc87f38a790 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 c92da612d8f84dfb5e961f60258d7e8fbe6cc6f4..e5b3ef8a42d9e9d4a5ffe30e33167c26974c6d06 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 9eee5a82ca7fc82052eef92b0af450dcdf74ecc7..874553f7275b1e6ecfcce500dfba22c1a8f9513b 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);