diff --git a/juci/selectiondialog.cc b/juci/selectiondialog.cc index 49b15f4..52a673a 100644 --- a/juci/selectiondialog.cc +++ b/juci/selectiondialog.cc @@ -61,7 +61,6 @@ void SelectionDialogBase::show() { window->show_all(); search_entry->show(); shown=true; - row_in_entry=false; } void SelectionDialogBase::hide() { @@ -213,9 +212,9 @@ void SelectionDialog::show() { list_view_text->set_cursor(list_view_text->get_model()->get_path(list_view_text->get_model()->children().begin())); } -CompleteDialog::CompleteDialog(Gtk::TextView& text_view) : SelectionDialogBase(text_view, true) {} +CompletionDialog::CompletionDialog(Gtk::TextView& text_view) : SelectionDialogBase(text_view, true) {} -void CompleteDialog::show() { +void CompletionDialog::show() { SelectionDialogBase::show(); show_offset=text_view.get_buffer()->get_insert()->get_iter().get_offset(); @@ -231,9 +230,11 @@ void CompleteDialog::show() { search_entry->set_text(text); list_view_text->set_search_entry(*search_entry); } + + row_in_entry=false; } -void CompleteDialog::select(bool hide_window) { +void CompletionDialog::select(bool hide_window) { row_in_entry=true; auto selected=list_view_text->get_selected(); std::pair select; @@ -261,7 +262,7 @@ void CompleteDialog::select(bool hide_window) { } } -bool CompleteDialog::on_key_release(GdkEventKey* key) { +bool CompletionDialog::on_key_release(GdkEventKey* key) { if(key->keyval==GDK_KEY_Down || key->keyval==GDK_KEY_Up) return false; @@ -279,7 +280,7 @@ bool CompleteDialog::on_key_release(GdkEventKey* key) { return false; } -bool CompleteDialog::on_key_press(GdkEventKey* key) { +bool CompletionDialog::on_key_press(GdkEventKey* key) { if((key->keyval>=GDK_KEY_0 && key->keyval<=GDK_KEY_9) || (key->keyval>=GDK_KEY_A && key->keyval<=GDK_KEY_Z) || (key->keyval>=GDK_KEY_a && key->keyval<=GDK_KEY_z) || diff --git a/juci/selectiondialog.h b/juci/selectiondialog.h index 0f1c793..ffb631f 100644 --- a/juci/selectiondialog.h +++ b/juci/selectiondialog.h @@ -20,8 +20,6 @@ protected: virtual void resize(); virtual void cursor_changed(); - bool row_in_entry; - Gtk::TextView& text_view; std::unique_ptr window; std::unique_ptr scrolled_window; @@ -40,9 +38,9 @@ public: std::function on_select; }; -class CompleteDialog : public SelectionDialogBase { +class CompletionDialog : public SelectionDialogBase { public: - CompleteDialog(Gtk::TextView& text_view); + CompletionDialog(Gtk::TextView& text_view); void show(); bool on_key_release(GdkEventKey* key); bool on_key_press(GdkEventKey* key); diff --git a/juci/source.cc b/juci/source.cc index 8f1bdc9..ea1e34f 100644 --- a/juci/source.cc +++ b/juci/source.cc @@ -547,32 +547,32 @@ bool Source::ClangViewParse::on_key_press_event(GdkEventKey* key) { //// ClangViewAutocomplete /// ////////////////////////////// Source::ClangViewAutocomplete::ClangViewAutocomplete(const std::string& file_path, const std::string& project_path): -Source::ClangViewParse(file_path, project_path), complete_dialog(*this), autocomplete_cancel_starting(false) { - complete_dialog.on_hide=[this](){ +Source::ClangViewParse(file_path, project_path), completion_dialog(*this), autocomplete_cancel_starting(false) { + completion_dialog.on_hide=[this](){ start_reparse(); }; get_buffer()->signal_changed().connect([this](){ - if(complete_dialog.shown) + if(completion_dialog.shown) delayed_reparse_connection.disconnect(); start_autocomplete(); }); get_buffer()->signal_mark_set().connect([this](const Gtk::TextBuffer::iterator& iterator, const Glib::RefPtr& mark){ if(mark->get_name()=="insert") { autocomplete_cancel_starting=true; - if(complete_dialog.shown) { - complete_dialog.hide(); + if(completion_dialog.shown) { + completion_dialog.hide(); } } }); signal_scroll_event().connect([this](GdkEventScroll* event){ - if(complete_dialog.shown) - complete_dialog.hide(); + if(completion_dialog.shown) + completion_dialog.hide(); return false; }, false); signal_key_release_event().connect([this](GdkEventKey* key){ - if(complete_dialog.shown) { - if(complete_dialog.on_key_release(key)) + if(completion_dialog.shown) { + if(completion_dialog.on_key_release(key)) return true; } @@ -582,16 +582,16 @@ Source::ClangViewParse(file_path, project_path), complete_dialog(*this), autocom bool Source::ClangViewAutocomplete::on_key_press_event(GdkEventKey *key) { last_keyval=key->keyval; - if(complete_dialog.shown) { - if(complete_dialog.on_key_press(key)) + if(completion_dialog.shown) { + if(completion_dialog.on_key_press(key)) return true; } return ClangViewParse::on_key_press_event(key); } bool Source::ClangViewAutocomplete::on_focus_out_event(GdkEventFocus* event) { - if(complete_dialog.shown) { - complete_dialog.hide(); + if(completion_dialog.shown) { + completion_dialog.hide(); } return Source::ClangViewParse::on_focus_out_event(event); @@ -613,7 +613,7 @@ void Source::ClangViewAutocomplete::start_autocomplete() { prefix_mutex.lock(); prefix=sm[3].str(); prefix_mutex.unlock(); - if((prefix.size()==0 || prefix[0]<'0' || prefix[0]>'9') && !autocomplete_starting && !complete_dialog.shown) { + if((prefix.size()==0 || prefix[0]<'0' || prefix[0]>'9') && !autocomplete_starting && !completion_dialog.shown) { autocomplete(); } else if(last_keyval=='.' && autocomplete_starting) @@ -623,13 +623,13 @@ void Source::ClangViewAutocomplete::start_autocomplete() { prefix_mutex.lock(); prefix=sm[3].str(); prefix_mutex.unlock(); - if((prefix.size()==0 || prefix[0]<'0' || prefix[0]>'9') && !autocomplete_starting && !complete_dialog.shown) { + if((prefix.size()==0 || prefix[0]<'0' || prefix[0]>'9') && !autocomplete_starting && !completion_dialog.shown) { autocomplete(); } } else autocomplete_cancel_starting=true; - if(autocomplete_starting || complete_dialog.shown) + if(autocomplete_starting || completion_dialog.shown) delayed_reparse_connection.disconnect(); } } @@ -644,12 +644,12 @@ void Source::ClangViewAutocomplete::autocomplete() { autocomplete_done_connection=autocomplete_done.connect([this, ac_data](){ autocomplete_starting=false; if(!autocomplete_cancel_starting) { - if(complete_dialog.start_mark) - get_buffer()->delete_mark(complete_dialog.start_mark); + if(completion_dialog.start_mark) + get_buffer()->delete_mark(completion_dialog.start_mark); auto start_iter=get_buffer()->get_insert()->get_iter(); for(size_t c=0;ccreate_mark(start_iter); + completion_dialog.start_mark=get_buffer()->create_mark(start_iter); std::map > rows; for (auto &data : *ac_data) { @@ -673,8 +673,8 @@ void Source::ClangViewAutocomplete::autocomplete() { if (rows.empty()) { rows["No suggestions found..."] = std::pair(); } - complete_dialog.rows=std::move(rows); - complete_dialog.show(); + completion_dialog.rows=std::move(rows); + completion_dialog.show(); } else start_autocomplete(); diff --git a/juci/source.h b/juci/source.h index 1a3683d..2ead12c 100644 --- a/juci/source.h +++ b/juci/source.h @@ -120,7 +120,7 @@ public: private: void start_autocomplete(); void autocomplete(); - CompleteDialog complete_dialog; + CompletionDialog completion_dialog; std::vector get_autocomplete_suggestions(int line_number, int column, std::map& buffer_map); Glib::Dispatcher autocomplete_done; sigc::connection autocomplete_done_connection;