shithub: choc

Download patch

ref: 954eeae87efa9967164ce3c0543c45b823c40a21
parent: eac4192d1bd74b61475ecfd3d5bee703b68ec09d
author: Simon Howard <[email protected]>
date: Mon Apr 4 16:30:17 EDT 2011

Close dropdown list popup windows when clicking outside the window.

Subversion-branch: /trunk/chocolate-doom
Subversion-revision: 2323

--- a/NEWS
+++ b/NEWS
@@ -57,6 +57,8 @@
        panes.
      * Clicking on scroll bars now moves the scroll handle to a
        matching location.
+     * Clicking outside a dropdown list popup window now dismisses the
+       window.
 
 1.5.0 (2011-01-02):
 
--- a/textscreen/txt_dropdown.c
+++ b/textscreen/txt_dropdown.c
@@ -99,6 +99,22 @@
     return 0;
 }
 
+static int SelectorMouseListener(txt_window_t *window, int x, int y, int b,
+                                 void *unused)
+{
+    txt_widget_t *win;
+
+    win = (txt_widget_t *) window;
+
+    if (x < win->x || x > win->x + win->w || y < win->y || y > win->y + win->h)
+    {
+        TXT_CloseWindow(window);
+        return 1;
+    }
+
+    return 0;
+}
+
 // Open the dropdown list window to select an item
 
 static void OpenSelectorWindow(txt_dropdown_list_t *list)
@@ -158,6 +174,7 @@
     // Catch presses of escape in this window and close it.
 
     TXT_SetKeyListener(window, SelectorWindowListener, NULL);
+    TXT_SetMouseListener(window, SelectorMouseListener, NULL);
 }
 
 static int DropdownListWidth(txt_dropdown_list_t *list)