changeset 62284:9715f859c614

(readable_events) [USE_TOOLKIT_SCROLL_BARS]: Regard toolkit scroll bar thumb drag events as squeezable and prevent redisplay from being paused by them.
author YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
date Fri, 13 May 2005 08:44:49 +0000
parents 988827be383c
children 296a69e064b3
files src/keyboard.c
diffstat 1 files changed, 26 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/src/keyboard.c	Fri May 13 08:44:20 2005 +0000
+++ b/src/keyboard.c	Fri May 13 08:44:49 2005 +0000
@@ -3531,9 +3531,11 @@
      READABLE_EVENTS_FILTER_EVENTS is set, report it as empty.  */
   if (kbd_fetch_ptr != kbd_store_ptr)
     {
-      int have_live_event = 1;
-
-      if (flags & READABLE_EVENTS_FILTER_EVENTS)
+      if (flags & (READABLE_EVENTS_FILTER_EVENTS
+#ifdef USE_TOOLKIT_SCROLL_BARS
+		   | READABLE_EVENTS_IGNORE_SQUEEZABLES
+#endif
+		   ))
         {
           struct input_event *event;
 
@@ -3541,16 +3543,29 @@
                    ? kbd_fetch_ptr
                    : kbd_buffer);
 
-          while (have_live_event && event->kind == FOCUS_IN_EVENT)
-            {
-              event++;
+	  do
+	    {
+	      if (!(
+#ifdef USE_TOOLKIT_SCROLL_BARS
+		    (flags & READABLE_EVENTS_FILTER_EVENTS) &&
+#endif
+		    event->kind == FOCUS_IN_EVENT)
+#ifdef USE_TOOLKIT_SCROLL_BARS
+		  && !((flags & READABLE_EVENTS_IGNORE_SQUEEZABLES)
+		       && event->kind == SCROLL_BAR_CLICK_EVENT
+		       && event->part == scroll_bar_handle
+		       && event->modifiers == 0)
+#endif
+		  )
+		return 1;
+	      event++;
               if (event == kbd_buffer + KBD_BUFFER_SIZE)
                 event = kbd_buffer;
-              if (event == kbd_store_ptr)
-                have_live_event = 0;
-            }
+	    }
+	  while (event != kbd_store_ptr);
         }
-      if (have_live_event) return 1;
+      else
+	return 1;
     }
 
 #ifdef HAVE_MOUSE
@@ -6545,7 +6560,7 @@
    If READABLE_EVENTS_FILTER_EVENTS is set in FLAGS, ignore internal
    events (FOCUS_IN_EVENT).
    If READABLE_EVENTS_IGNORE_SQUEEZABLES is set in FLAGS, ignore mouse
-   movements. */
+   movements and toolkit scroll bar thumb drags. */
 
 static void
 get_input_pending (addr, flags)