changeset 83876:37f582a71062

Support for horizontal scroll wheels on some mice: (construct_mouse_wheel): Make HORIZ_WHEEL_EVENT from WM_MOUSEHWHEEL. (w32_read_socket) <WM_MOUSEHWHEEL>: Treat as WM_MOUSEWHEEL. MULTI_KBOARD support: (w32_create_terminal) [MULTI_KBOARD]: Create a new keyboard for the terminal.
author Jason Rumney <jasonr@gnu.org>
date Tue, 04 Sep 2007 21:38:40 +0000
parents fbb5919e6afb
children eed0e69910d6
files src/w32term.c
diffstat 1 files changed, 19 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/w32term.c	Tue Sep 04 15:44:11 2007 +0000
+++ b/src/w32term.c	Tue Sep 04 21:38:40 2007 +0000
@@ -3150,7 +3150,8 @@
   POINT p;
   int delta;
 
-  result->kind = WHEEL_EVENT;
+  result->kind = msg->msg.message == WM_MOUSEHWHEEL ? HORIZ_WHEEL_EVENT
+                                                    : WHEEL_EVENT;
   result->code = 0;
   result->timestamp = msg->msg.time;
 
@@ -4486,6 +4487,7 @@
 	  }
 
 	case WM_MOUSEWHEEL:
+        case WM_MOUSEHWHEEL:
 	  {
 	    if (dpyinfo->grabbed && last_mouse_frame
 		&& FRAME_LIVE_P (last_mouse_frame))
@@ -6302,6 +6304,22 @@
   terminal->memory_below_frame = 0;   /* We don't remember what scrolls
                                         off the bottom. */
 
+#ifdef MULTI_KBOARD
+  /* We don't yet support separate terminals on W32, so don't try to share
+     keyboards between virtual terminals that are on the same physical
+     terminal like X does.  */
+  terminal->kboard = (KBOARD *) xmalloc (sizeof (KBOARD));
+  init_kboard (terminal->kboard);
+  terminal->kboard->next_kboard = all_kboards;
+  all_kboards = terminal->kboard;
+  /* Don't let the initial kboard remain current longer than necessary.
+     That would cause problems if a file loaded on startup tries to
+     prompt in the mini-buffer.  */
+  if (current_kboard == initial_kboard)
+    current_kboard = terminal->kboard;
+  terminal->kboard->reference_count++;
+#endif
+
   return terminal;
 }