diff options
| author | Jason Rumney | 2000-05-30 21:49:28 +0000 |
|---|---|---|
| committer | Jason Rumney | 2000-05-30 21:49:28 +0000 |
| commit | 1f2fca4bd1d9cae1085e4fea45f9dce4099af83a (patch) | |
| tree | e5d24f71968d7d141c06ca4ce692d5aaabd9e743 | |
| parent | af3a67854b367830661511f213e3105e96cdea32 (diff) | |
| download | emacs-1f2fca4bd1d9cae1085e4fea45f9dce4099af83a.tar.gz emacs-1f2fca4bd1d9cae1085e4fea45f9dce4099af83a.zip | |
(NUM_TRANSLATED_MOUSE_BUTTONS): New constant.
(emacs_button_translation): Use it.
(do_mouse_event): Allow up to 32 mouse buttons by allowing any bit
in `mask' to be set.
| -rw-r--r-- | src/w32inevt.c | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/src/w32inevt.c b/src/w32inevt.c index 1b2b6624314..99e3ead3ae3 100644 --- a/src/w32inevt.c +++ b/src/w32inevt.c | |||
| @@ -550,9 +550,10 @@ mouse_moved_to (int x, int y) | |||
| 550 | Right == 2 | 550 | Right == 2 |
| 551 | Others increase from there. */ | 551 | Others increase from there. */ |
| 552 | 552 | ||
| 553 | static int emacs_button_translation[NUM_MOUSE_BUTTONS] = | 553 | #define NUM_TRANSLATED_MOUSE_BUTTONS 3 |
| 554 | static int emacs_button_translation[NUM_TRANSLATED_MOUSE_BUTTONS] = | ||
| 554 | { | 555 | { |
| 555 | 0, 2, 1, 3, 4, | 556 | 0, 2, 1 |
| 556 | }; | 557 | }; |
| 557 | 558 | ||
| 558 | static int | 559 | static int |
| @@ -581,18 +582,16 @@ do_mouse_event (MOUSE_EVENT_RECORD *event, | |||
| 581 | /* Find out what button has changed state since the last button event. */ | 582 | /* Find out what button has changed state since the last button event. */ |
| 582 | but_change = button_state ^ event->dwButtonState; | 583 | but_change = button_state ^ event->dwButtonState; |
| 583 | mask = 1; | 584 | mask = 1; |
| 584 | for (i = 0; i < NUM_MOUSE_BUTTONS; i++, mask <<= 1) | 585 | for (i = 0; mask; i++, mask <<= 1) |
| 585 | if (but_change & mask) | 586 | if (but_change & mask) |
| 586 | { | 587 | { |
| 587 | XSETINT (emacs_ev->code, emacs_button_translation[i]); | 588 | if (i < NUM_TRANSLATED_MOUSE_BUTTONS) |
| 589 | XSETINT (emacs_ev->code, emacs_button_translation[i]); | ||
| 590 | else | ||
| 591 | XSETINT (emacs_ev->code, i); | ||
| 588 | break; | 592 | break; |
| 589 | } | 593 | } |
| 590 | 594 | ||
| 591 | /* If the changed button is out of emacs' range (highly unlikely) | ||
| 592 | ignore this event. */ | ||
| 593 | if (i == NUM_MOUSE_BUTTONS) | ||
| 594 | return 0; | ||
| 595 | |||
| 596 | button_state = event->dwButtonState; | 595 | button_state = event->dwButtonState; |
| 597 | emacs_ev->timestamp = GetTickCount (); | 596 | emacs_ev->timestamp = GetTickCount (); |
| 598 | emacs_ev->modifiers = w32_kbd_mods_to_emacs (event->dwControlKeyState, 0) | | 597 | emacs_ev->modifiers = w32_kbd_mods_to_emacs (event->dwControlKeyState, 0) | |