diff --git a/src/selection_dialog.cpp b/src/selection_dialog.cpp index 9d85c6c..e9f2cb1 100644 --- a/src/selection_dialog.cpp +++ b/src/selection_dialog.cpp @@ -182,10 +182,11 @@ void SelectionDialogBase::show() { cursor_changed(); } else if(list_view_text.get_model()->children().begin() != list_view_text.get_selection()->get_selected()) { - while(Gtk::Main::events_pending()) - Gtk::Main::iteration(); - if(is_visible()) - list_view_text.scroll_to_row(list_view_text.get_model()->get_path(list_view_text.get_selection()->get_selected()), 0.5); + Glib::signal_idle().connect([this] { + if((this == SelectionDialog::get().get() || this == CompletionDialog::get().get()) && is_visible()) + list_view_text.scroll_to_row(list_view_text.get_model()->get_path(list_view_text.get_selection()->get_selected()), 0.5); + return false; + }); } } if(on_show)