Browse Source

Tooltip and completiondialog cleanup

merge-requests/365/head
eidheim 10 years ago
parent
commit
6f47300607
  1. 2
      .gitignore
  2. 20
      src/selectiondialog.cc
  3. 2
      src/selectiondialog.h
  4. 18
      src/source_clang.cc
  5. 2
      src/source_clang.h

2
.gitignore vendored

@ -10,3 +10,5 @@
!CMakeLists.txt
!config.json
!*.py
build

20
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<Gtk::TextBuffer::Mark> 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<Gtk::TextBuffer::Mark> start_mark, bool show_search_entry, bool use_markup) : SelectionDialogBase(text_view, start_mark, show_search_entry, use_markup) {
std::shared_ptr<std::string> 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,11 +283,7 @@ bool SelectionDialog::on_key_press(GdkEventKey* key) {
return false;
}
CompletionDialog::CompletionDialog(Gtk::TextView& text_view, Glib::RefPtr<Gtk::TextBuffer::Mark> start_mark) : SelectionDialogBase(text_view, start_mark, false, false) {}
void CompletionDialog::show() {
SelectionDialogBase::show();
CompletionDialog::CompletionDialog(Gtk::TextView& text_view, Glib::RefPtr<Gtk::TextBuffer::Mark> start_mark) : SelectionDialogBase(text_view, start_mark, false, false) {
show_offset=text_view.get_buffer()->get_insert()->get_iter().get_offset();
std::shared_ptr<std::string> search_key(new std::string());
@ -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) {

2
src/selectiondialog.h

@ -56,13 +56,11 @@ class SelectionDialog : public SelectionDialogBase {
public:
SelectionDialog(Gtk::TextView& text_view, Glib::RefPtr<Gtk::TextBuffer::Mark> 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<Gtk::TextBuffer::Mark> start_mark);
void show();
bool on_key_release(GdkEventKey* key);
bool on_key_press(GdkEventKey* key);

18
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<std::string>(autocomplete_dialog_rows.at(selected).second);
if(tooltip->empty()) {
if(autocomplete_tooltips)
autocomplete_tooltips->hide();
autocomplete_tooltips.hide();
}
else {
autocomplete_tooltips=std::unique_ptr<Tooltips>(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);
}
};
}

2
src/source_clang.h

@ -103,7 +103,7 @@ namespace Source {
std::vector<AutoCompleteData> autocomplete_data;
std::unordered_map<std::string, std::pair<std::string, std::string> > autocomplete_dialog_rows;
std::vector<AutoCompleteData> autocomplete_get_suggestions(const std::string &buffer, int line_number, int column);
std::unique_ptr<Tooltips> autocomplete_tooltips;
Tooltips autocomplete_tooltips;
Glib::Dispatcher autocomplete_done;
Glib::Dispatcher autocomplete_restart;
Glib::Dispatcher autocomplete_error;

Loading…
Cancel
Save