Browse Source

Minor fix to SelectionDialog.

merge-requests/365/head
eidheim 11 years ago
parent
commit
23e1a5992d
  1. 28
      juci/selectiondialog.cc
  2. 8
      juci/selectiondialog.h

28
juci/selectiondialog.cc

@ -58,6 +58,7 @@ void SelectionDialog::show() {
window->show_all();
shown=true;
selected=false;
}
void SelectionDialog::hide() {
@ -66,6 +67,7 @@ void SelectionDialog::hide() {
}
void SelectionDialog::select(bool hide_window) {
selected=true;
auto selected=list_view_text->get_selected();
std::string select;
if(selected.size()>0) {
@ -111,18 +113,20 @@ bool SelectionDialog::on_key_release(GdkEventKey* key) {
}
bool SelectionDialog::on_key_press(GdkEventKey* key) {
if(key->keyval>=GDK_KEY_0 && key->keyval<=GDK_KEY_9)
return false;
if(key->keyval>=GDK_KEY_A && key->keyval<=GDK_KEY_Z)
return false;
if(key->keyval>=GDK_KEY_a && key->keyval<=GDK_KEY_z)
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) ||
key->keyval==GDK_KEY_underscore || key->keyval==GDK_KEY_BackSpace) {
if(selected) {
text_view.get_buffer()->erase(start_mark->get_iter(), text_view.get_buffer()->get_insert()->get_iter());
selected=false;
if(key->keyval==GDK_KEY_BackSpace)
return true;
}
return false;
}
if(key->keyval==GDK_KEY_Shift_L || key->keyval==GDK_KEY_Shift_R || key->keyval==GDK_KEY_Alt_L || key->keyval==GDK_KEY_Alt_R || key->keyval==GDK_KEY_Control_L || key->keyval==GDK_KEY_Control_R || key->keyval==GDK_KEY_Meta_L || key->keyval==GDK_KEY_Meta_R)
return false;
if(key->keyval==GDK_KEY_underscore)
return false;
if(key->keyval==GDK_KEY_BackSpace)
return false;
if(key->keyval==GDK_KEY_Down) {
auto it=list_view_text->get_selection()->get_selected();
if(it) {
@ -147,11 +151,7 @@ bool SelectionDialog::on_key_press(GdkEventKey* key) {
select(false);
return true;
}
if(key->keyval==GDK_KEY_Return) {
select();
return true;
}
if(key->keyval==GDK_KEY_ISO_Left_Tab || key->keyval==GDK_KEY_Tab) {
if(key->keyval==GDK_KEY_Return || key->keyval==GDK_KEY_ISO_Left_Tab || key->keyval==GDK_KEY_Tab) {
select();
return true;
}

8
juci/selectiondialog.h

@ -10,7 +10,6 @@ public:
void show();
void hide();
bool close(GdkEventFocus*);
void select(bool hide_window=true);
void move();
bool on_key_release(GdkEventKey* key);
bool on_key_press(GdkEventKey* key);
@ -18,11 +17,14 @@ public:
std::map<std::string, std::string> rows;
bool shown=false;
private:
void resize();
void select(bool hide_window=true);
Gtk::Entry search_entry;
Glib::RefPtr<Gtk::TextBuffer::Mark> start_mark;
int start_offset;
private:
void resize();
bool selected;
Gtk::TextView& text_view;
std::unique_ptr<Gtk::Window> window;

Loading…
Cancel
Save