aboutsummaryrefslogtreecommitdiffhomepage
path: root/gtk/PlatGTK.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'gtk/PlatGTK.cxx')
-rw-r--r--gtk/PlatGTK.cxx15
1 files changed, 14 insertions, 1 deletions
diff --git a/gtk/PlatGTK.cxx b/gtk/PlatGTK.cxx
index 3e2d10f99..47e32118c 100644
--- a/gtk/PlatGTK.cxx
+++ b/gtk/PlatGTK.cxx
@@ -670,7 +670,8 @@ void Window::SetTitle(const char *s) {
gtk_window_set_title(GTK_WINDOW(id), s);
}
-ListBox::ListBox() : list(0), current(0), desiredVisibleRows(5), maxItemCharacters(0) {}
+ListBox::ListBox() : list(0), current(0), desiredVisibleRows(5), maxItemCharacters(0),
+ doubleClickAction(NULL), doubleClickActionData(NULL) {}
ListBox::~ListBox() {}
@@ -680,6 +681,16 @@ static void SelectionAC(GtkWidget *, gint row, gint,
*pi = row;
}
+static gboolean ButtonPress(GtkWidget *, GdkEventButton* ev, gpointer p) {
+ ListBox* lb = reinterpret_cast<ListBox*>(p);
+ if (ev->type == GDK_2BUTTON_PRESS && lb->doubleClickAction != NULL) {
+ lb->doubleClickAction(lb->doubleClickActionData);
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
void ListBox::Create(Window &, int) {
id = gtk_window_new(GTK_WINDOW_POPUP);
@@ -703,6 +714,8 @@ void ListBox::Create(Window &, int) {
gtk_clist_set_selection_mode(GTK_CLIST(list), GTK_SELECTION_BROWSE);
gtk_signal_connect(GTK_OBJECT(list), "select_row",
GTK_SIGNAL_FUNC(SelectionAC), &current);
+ gtk_signal_connect(GTK_OBJECT(list), "button_press_event",
+ GTK_SIGNAL_FUNC(ButtonPress), this);
gtk_clist_set_shadow_type(GTK_CLIST(list), GTK_SHADOW_NONE);
gtk_widget_realize(id);