Browse Source

Fixed a bug where tooltips got shown when no row were found

merge-requests/365/head
eidheim 10 years ago
parent
commit
7380ecf544
  1. 65
      src/selectiondialog.cc
  2. 2
      src/selectiondialog.h

65
src/selectiondialog.cc

@ -68,20 +68,20 @@ list_view_text(use_markup), start_mark(start_mark), show_search_entry(show_searc
dialog->get_vbox()->pack_start(scrolled_window, true, true); dialog->get_vbox()->pack_start(scrolled_window, true, true);
dialog->set_transient_for((Gtk::Window&)(*text_view.get_toplevel())); dialog->set_transient_for((Gtk::Window&)(*text_view.get_toplevel()));
} }
}
list_view_text.signal_cursor_changed().connect([this]() { void SelectionDialogBase::cursor_changed() {
if(!shown) if(!shown)
return; return;
auto it=list_view_text.get_selection()->get_selected(); auto it=list_view_text.get_selection()->get_selected();
std::string row; std::string row;
if(it) if(it)
it->get_value(0, row); it->get_value(0, row);
if(last_row==row) if(last_row==row)
return; return;
if(on_changed) if(on_changed)
on_changed(row); on_changed(row);
last_row=row; last_row=row;
});
} }
SelectionDialogBase::~SelectionDialogBase() { SelectionDialogBase::~SelectionDialogBase() {
@ -97,8 +97,10 @@ void SelectionDialogBase::show() {
move(); move();
window->show_all(); window->show_all();
if(list_view_text.get_model()->children().size()>0) 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())); list_view_text.set_cursor(list_view_text.get_model()->get_path(list_view_text.get_model()->children().begin()));
cursor_changed();
}
} }
void SelectionDialogBase::hide() { void SelectionDialogBase::hide() {
@ -183,6 +185,7 @@ SelectionDialog::SelectionDialog(Gtk::TextView& text_view, Glib::RefPtr<Gtk::Tex
if(list_view_text.get_model()->children().size()>0) 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())); list_view_text.set_cursor(list_view_text.get_model()->get_path(list_view_text.get_model()->children().begin()));
} }
cursor_changed();
}); });
search_entry.signal_event().connect([this](GdkEvent* event) { search_entry.signal_event().connect([this](GdkEvent* event) {
@ -194,10 +197,13 @@ SelectionDialog::SelectionDialog(Gtk::TextView& text_view, Glib::RefPtr<Gtk::Tex
it++; it++;
if(it) { if(it) {
list_view_text.set_cursor(list_view_text.get_model()->get_path(it)); list_view_text.set_cursor(list_view_text.get_model()->get_path(it));
cursor_changed();
} }
} }
else else {
list_view_text.set_cursor(list_view_text.get_model()->get_path(list_view_text.get_model()->children().begin())); list_view_text.set_cursor(list_view_text.get_model()->get_path(list_view_text.get_model()->children().begin()));
cursor_changed();
}
return true; return true;
} }
if(key->keyval==GDK_KEY_Up && list_view_text.get_model()->children().size()>0) { if(key->keyval==GDK_KEY_Up && list_view_text.get_model()->children().size()>0) {
@ -206,13 +212,16 @@ SelectionDialog::SelectionDialog(Gtk::TextView& text_view, Glib::RefPtr<Gtk::Tex
it--; it--;
if(it) { if(it) {
list_view_text.set_cursor(list_view_text.get_model()->get_path(it)); list_view_text.set_cursor(list_view_text.get_model()->get_path(it));
cursor_changed();
} }
} }
else { else {
auto last_it=list_view_text.get_model()->children().end(); auto last_it=list_view_text.get_model()->children().end();
last_it--; last_it--;
if(last_it) if(last_it) {
list_view_text.set_cursor(list_view_text.get_model()->get_path(last_it)); list_view_text.set_cursor(list_view_text.get_model()->get_path(last_it));
cursor_changed();
}
} }
return true; return true;
} }
@ -249,10 +258,13 @@ bool SelectionDialog::on_key_press(GdkEventKey* key) {
it++; it++;
if(it) { if(it) {
list_view_text.set_cursor(list_view_text.get_model()->get_path(it)); list_view_text.set_cursor(list_view_text.get_model()->get_path(it));
cursor_changed();
} }
} }
else else {
list_view_text.set_cursor(list_view_text.get_model()->get_path(list_view_text.get_model()->children().begin())); list_view_text.set_cursor(list_view_text.get_model()->get_path(list_view_text.get_model()->children().begin()));
cursor_changed();
}
return true; return true;
} }
if(key->keyval==GDK_KEY_Up && list_view_text.get_model()->children().size()>0) { if(key->keyval==GDK_KEY_Up && list_view_text.get_model()->children().size()>0) {
@ -261,13 +273,16 @@ bool SelectionDialog::on_key_press(GdkEventKey* key) {
it--; it--;
if(it) { if(it) {
list_view_text.set_cursor(list_view_text.get_model()->get_path(it)); list_view_text.set_cursor(list_view_text.get_model()->get_path(it));
cursor_changed();
} }
} }
else { else {
auto last_it=list_view_text.get_model()->children().end(); auto last_it=list_view_text.get_model()->children().end();
last_it--; last_it--;
if(last_it) if(last_it) {
list_view_text.set_cursor(list_view_text.get_model()->get_path(last_it)); list_view_text.set_cursor(list_view_text.get_model()->get_path(last_it));
cursor_changed();
}
} }
return true; return true;
} }
@ -355,10 +370,10 @@ bool CompletionDialog::on_key_release(GdkEventKey* key) {
search_entry.set_text(text); search_entry.set_text(text);
list_view_text.set_search_entry(search_entry); list_view_text.set_search_entry(search_entry);
if(text=="") { if(text=="") {
if(list_view_text.get_model()->children().size()>0) { 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())); list_view_text.set_cursor(list_view_text.get_model()->get_path(list_view_text.get_model()->children().begin()));
}
} }
cursor_changed();
} }
return false; return false;
} }
@ -384,10 +399,13 @@ bool CompletionDialog::on_key_press(GdkEventKey* key) {
it++; it++;
if(it) { if(it) {
list_view_text.set_cursor(list_view_text.get_model()->get_path(it)); list_view_text.set_cursor(list_view_text.get_model()->get_path(it));
cursor_changed();
} }
} }
else else {
list_view_text.set_cursor(list_view_text.get_model()->get_path(list_view_text.get_model()->children().begin())); list_view_text.set_cursor(list_view_text.get_model()->get_path(list_view_text.get_model()->children().begin()));
cursor_changed();
}
select(false); select(false);
return true; return true;
} }
@ -397,13 +415,16 @@ bool CompletionDialog::on_key_press(GdkEventKey* key) {
it--; it--;
if(it) { if(it) {
list_view_text.set_cursor(list_view_text.get_model()->get_path(it)); list_view_text.set_cursor(list_view_text.get_model()->get_path(it));
cursor_changed();
} }
} }
else { else {
auto last_it=list_view_text.get_model()->children().end(); auto last_it=list_view_text.get_model()->children().end();
last_it--; last_it--;
if(last_it) if(last_it) {
list_view_text.set_cursor(list_view_text.get_model()->get_path(last_it)); list_view_text.set_cursor(list_view_text.get_model()->get_path(last_it));
cursor_changed();
}
} }
select(false); select(false);
return true; return true;

2
src/selectiondialog.h

@ -40,6 +40,8 @@ public:
bool shown=false; bool shown=false;
protected: protected:
void cursor_changed();
void resize(); void resize();
Gtk::TextView& text_view; Gtk::TextView& text_view;

Loading…
Cancel
Save