From 6f47300607bd32a361971ab06c5d74965072ee47 Mon Sep 17 00:00:00 2001 From: eidheim Date: Fri, 15 Jan 2016 14:51:10 +0100 Subject: [PATCH] Tooltip and completiondialog cleanup --- .gitignore | 2 ++ src/selectiondialog.cc | 22 ++++++---------------- src/selectiondialog.h | 2 -- src/source_clang.cc | 18 +++++++----------- src/source_clang.h | 2 +- 5 files changed, 16 insertions(+), 30 deletions(-) diff --git a/.gitignore b/.gitignore index c30b100..ad5aad3 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,5 @@ !CMakeLists.txt !config.json !*.py + +build \ No newline at end of file diff --git a/src/selectiondialog.cc b/src/selectiondialog.cc index 3b19342..b9d5e3b 100644 --- a/src/selectiondialog.cc +++ b/src/selectiondialog.cc @@ -96,6 +96,9 @@ void SelectionDialogBase::show() { shown=true; move(); window->show_all(); + + if(list_view_text.get_model()->children().size()>0) + list_view_text.set_cursor(list_view_text.get_model()->get_path(list_view_text.get_model()->children().begin())); } void SelectionDialogBase::hide() { @@ -143,10 +146,7 @@ void SelectionDialogBase::resize() { } } -SelectionDialog::SelectionDialog(Gtk::TextView& text_view, Glib::RefPtr start_mark, bool show_search_entry, bool use_markup) : SelectionDialogBase(text_view, start_mark, show_search_entry, use_markup) {} - -void SelectionDialog::show() { - SelectionDialogBase::show(); +SelectionDialog::SelectionDialog(Gtk::TextView& text_view, Glib::RefPtr start_mark, bool show_search_entry, bool use_markup) : SelectionDialogBase(text_view, start_mark, show_search_entry, use_markup) { std::shared_ptr search_key(new std::string()); auto filter_model=Gtk::TreeModelFilter::create(list_view_text.get_model()); @@ -240,9 +240,6 @@ void SelectionDialog::show() { hide(); return true; }); - - if(list_view_text.get_model()->children().size()>0) - list_view_text.set_cursor(list_view_text.get_model()->get_path(list_view_text.get_model()->children().begin())); } bool SelectionDialog::on_key_press(GdkEventKey* key) { @@ -286,13 +283,9 @@ bool SelectionDialog::on_key_press(GdkEventKey* key) { return false; } -CompletionDialog::CompletionDialog(Gtk::TextView& text_view, Glib::RefPtr start_mark) : SelectionDialogBase(text_view, start_mark, false, false) {} - -void CompletionDialog::show() { - SelectionDialogBase::show(); - +CompletionDialog::CompletionDialog(Gtk::TextView& text_view, Glib::RefPtr start_mark) : SelectionDialogBase(text_view, start_mark, false, false) { show_offset=text_view.get_buffer()->get_insert()->get_iter().get_offset(); - + std::shared_ptr search_key(new std::string()); auto filter_model=Gtk::TreeModelFilter::create(list_view_text.get_model()); if(show_offset==start_mark->get_iter().get_offset()) { @@ -332,9 +325,6 @@ void CompletionDialog::show() { search_entry.set_text(text); list_view_text.set_search_entry(search_entry); } - - if(list_view_text.get_model()->children().size()>0) - list_view_text.set_cursor(list_view_text.get_model()->get_path(list_view_text.get_model()->children().begin())); } void CompletionDialog::select(bool hide_window) { diff --git a/src/selectiondialog.h b/src/selectiondialog.h index 07a7dd9..1b8c6cf 100644 --- a/src/selectiondialog.h +++ b/src/selectiondialog.h @@ -56,13 +56,11 @@ class SelectionDialog : public SelectionDialogBase { public: SelectionDialog(Gtk::TextView& text_view, Glib::RefPtr start_mark, bool show_search_entry=true, bool use_markup=false); bool on_key_press(GdkEventKey* key); - void show(); }; class CompletionDialog : public SelectionDialogBase { public: CompletionDialog(Gtk::TextView& text_view, Glib::RefPtr start_mark); - void show(); bool on_key_release(GdkEventKey* key); bool on_key_press(GdkEventKey* key); diff --git a/src/source_clang.cc b/src/source_clang.cc index 354d8e1..b5a4bb8 100644 --- a/src/source_clang.cc +++ b/src/source_clang.cc @@ -795,10 +795,8 @@ void Source::ClangViewAutocomplete::autocomplete_dialog_setup() { autocomplete_dialog_rows.clear(); autocomplete_dialog->on_hide=[this](){ get_source_buffer()->end_user_action(); - if(autocomplete_tooltips) { - autocomplete_tooltips->hide(); - autocomplete_tooltips.reset(); - } + autocomplete_tooltips.hide(); + autocomplete_tooltips.clear(); parsed=false; soft_reparse(); }; @@ -855,17 +853,15 @@ void Source::ClangViewAutocomplete::autocomplete_dialog_setup() { autocomplete_dialog->on_changed=[this](const std::string &selected) { if(selected.empty()) { - if(autocomplete_tooltips) - autocomplete_tooltips->hide(); + autocomplete_tooltips.hide(); return; } auto tooltip=std::make_shared(autocomplete_dialog_rows.at(selected).second); if(tooltip->empty()) { - if(autocomplete_tooltips) - autocomplete_tooltips->hide(); + autocomplete_tooltips.hide(); } else { - autocomplete_tooltips=std::unique_ptr(new Tooltips()); + autocomplete_tooltips.clear(); auto create_tooltip_buffer=[this, tooltip]() { auto tooltip_buffer=Gtk::TextBuffer::create(get_buffer()->get_tag_table()); @@ -875,9 +871,9 @@ void Source::ClangViewAutocomplete::autocomplete_dialog_setup() { }; auto iter=autocomplete_dialog->start_mark->get_iter(); - autocomplete_tooltips->emplace_back(create_tooltip_buffer, *this, get_buffer()->create_mark(iter), get_buffer()->create_mark(iter)); + autocomplete_tooltips.emplace_back(create_tooltip_buffer, *this, get_buffer()->create_mark(iter), get_buffer()->create_mark(iter)); - autocomplete_tooltips->show(true); + autocomplete_tooltips.show(true); } }; } diff --git a/src/source_clang.h b/src/source_clang.h index 12e4ee4..93b226d 100644 --- a/src/source_clang.h +++ b/src/source_clang.h @@ -103,7 +103,7 @@ namespace Source { std::vector autocomplete_data; std::unordered_map > autocomplete_dialog_rows; std::vector autocomplete_get_suggestions(const std::string &buffer, int line_number, int column); - std::unique_ptr autocomplete_tooltips; + Tooltips autocomplete_tooltips; Glib::Dispatcher autocomplete_done; Glib::Dispatcher autocomplete_restart; Glib::Dispatcher autocomplete_error;