diff options
Diffstat (limited to 'src/gui_gtk.cc')
| -rw-r--r-- | src/gui_gtk.cc | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/gui_gtk.cc b/src/gui_gtk.cc index 7edd58c..7dd2d42 100644 --- a/src/gui_gtk.cc +++ b/src/gui_gtk.cc @@ -625,6 +625,8 @@ public: return listmodel_ ? list_model_get_model(listmodel_.get()) : nullptr; } + void select_row(size_t row) override; + void set_package(std::unique_ptr<AttributedText>&& text) override; AttributedText* package() const { @@ -1958,6 +1960,20 @@ void GtkGuiMain::show(GuiWindow* window) { gtk_window_present(wnd); } +void GtkGuiMain::select_row(size_t row) { + auto wnd = reinterpret_cast<MainAppWindow*>(window()); + if (wnd) { + auto path = gtk_tree_path_new(); + gtk_tree_path_append_index(path, row); + gtk_tree_selection_select_path( + gtk_tree_view_get_selection(GTK_TREE_VIEW(wnd->top_)), + path); + gtk_tree_view_scroll_to_cell(GTK_TREE_VIEW(wnd->top_), + path, nullptr, false, .0f, .0f); + gtk_tree_path_free(path); + } +} + void GtkGuiMain::set_package(std::unique_ptr<AttributedText>&& text) { package_.swap(text); auto wnd = reinterpret_cast<MainAppWindow*>(window()); |
