From: Jason Rumney Date: Fri, 9 Nov 2007 12:20:55 +0000 (+0000) Subject: (w32_scroll_bar_handle_click): Use SCROLL_BAR_CLICK_EVENT. X-Git-Tag: emacs-pretest-23.0.90~9821 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=4b219faa3b807146947314c47190b3fde09ce4a1;p=emacs.git (w32_scroll_bar_handle_click): Use SCROLL_BAR_CLICK_EVENT. (w32_read_socket): Generate MULTIMEDIA_KEY_EVENT from WM_APPCOMMAND. --- diff --git a/src/ChangeLog b/src/ChangeLog index 90338e217b3..9cf85ff8929 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,30 @@ +2007-11-09 Jason Rumney + + * s/ms-w32.c (USE_TOOLKIT_SCROLL_BARS): Define. + + * w32term.c (w32_scroll_bar_handle_click): Use SCROLL_BAR_CLICK_EVENT. + + * keyboard.c (discard_mouse_events, make_lispy_event) [WINDOWSNT]: + Remove W32_SCROLL_BAR_CLICK_EVENT. + + * termhooks.h (enum event_kind) [WINDOWSNT]: Likewise. + Add MULTIMEDIA_KEY_EVENT. + + * keyboard.c (lispy_function_keys) [WINDOWSNT]: Add more keys. + (lispy_multimedia_keys) [WINDOWSNT]: New array. + (make_lispy_event) [WINDOWSNT]: Use it to translate + MULTIMEDIA_KEY_EVENT. + + * w32term.h (WM_APPCOMMAND): Define if not already. + (GET_APPCOMMAND_LPARAM): Likewise. + + * w32term.c (w32_read_socket): Generate MULTIMEDIA_KEY_EVENT from + WM_APPCOMMAND. + + * w32fns.c (w32_pass_multimedia_buttons_to_system): New user option. + (syms_of_w32fns): Export and initialize it. + (w32_wnd_proc): Pass WM_APPCOMMAND on to w32_read_socket. + 2007-11-09 Chong Yidong * dispextern.h (struct it): Don't define OVERLAY_STRING_CHUNK_SIZE diff --git a/src/w32term.c b/src/w32term.c index a0c595b3a34..4f4701b5f23 100644 --- a/src/w32term.c +++ b/src/w32term.c @@ -3970,7 +3970,7 @@ w32_scroll_bar_handle_click (bar, msg, emacs_event) if (! GC_WINDOWP (bar->window)) abort (); - emacs_event->kind = W32_SCROLL_BAR_CLICK_EVENT; + emacs_event->kind = SCROLL_BAR_CLICK_EVENT; emacs_event->code = 0; /* not really meaningful to distinguish up/down */ emacs_event->modifiers = msg->dwModifiers; @@ -4337,6 +4337,29 @@ w32_read_socket (sd, expected, hold_quit) } break; + case WM_APPCOMMAND: + f = x_window_to_frame (dpyinfo, msg.msg.hwnd); + + if (f && !f->iconified) + { + if (!dpyinfo->mouse_face_hidden && INTEGERP (Vmouse_highlight) + && !EQ (f->tool_bar_window, dpyinfo->mouse_face_window)) + { + clear_mouse_face (dpyinfo); + dpyinfo->mouse_face_hidden = 1; + } + + if (temp_index == sizeof temp_buffer / sizeof (short)) + temp_index = 0; + temp_buffer[temp_index++] = msg.msg.wParam; + inev.kind = MULTIMEDIA_KEY_EVENT; + inev.code = GET_APPCOMMAND_LPARAM(msg.msg.lParam); + inev.modifiers = msg.dwModifiers; + XSETFRAME (inev.frame_or_window, f); + inev.timestamp = msg.msg.time; + } + break; + case WM_MOUSEMOVE: /* Ignore non-movement. */ {