To: Johannes Zellner <[email protected]>
Cc: [email protected]
Subject: patch 5.4n.13 (was: Mouse Mappings)
In-Reply-To: <Pine.LNX.4.10.9907071441520.556-100000@krispc6.physik.uni-karlsruhe.de>
Fcc: outbox
From: Bram Moolenaar <[email protected]>
------------

Johannes Zellner wrote:

> works:
>     :nnoremap <LeftMouse> :echo "bla"<cr>
>
> works not:
>     :nnoremap <S-LeftMouse> :echo "bla"<cr>
>
> (same for insert mode mappings)
> Any ideas ?
>
> Or: HOWTO map <S-SomeMouse>

Using the GTK GUI?  It has a mixup of modifiers for the mouse.  Strange that
nobody ran into this: Using <S-LeftMouse> results in <RightMouse>!


Patch 5.4n.13
Problem:    GTK: Using modifiers with the mouse didn't work.
Solution:   Use MOUSE_SHIFT/CTRL/ALT instead of MOD_MASK_SHIFT/CTRL/ALT, three
           times.
Files:      src/gui_gtk_x11.


*** ../vim-5.4n/src/gui_gtk_x11.c       Sun Jul  4 20:35:52 1999
--- src/gui_gtk_x11.c   Wed Jul  7 18:26:03 1999
***************
*** 2541,2551 ****

     vim_modifiers = 0x0;
     if (event->state & GDK_SHIFT_MASK)
!       vim_modifiers |= MOD_MASK_SHIFT;
     if (event->state & GDK_CONTROL_MASK)
!       vim_modifiers |= MOD_MASK_CTRL;
     if (event->state & GDK_MOD1_MASK)
!       vim_modifiers |= MOD_MASK_ALT;

     gui_send_mouse_event(button, x, y, repeated_click, vim_modifiers);
     if (gtk_main_level() > 0)
--- 2549,2559 ----

     vim_modifiers = 0x0;
     if (event->state & GDK_SHIFT_MASK)
!       vim_modifiers |= MOUSE_SHIFT;
     if (event->state & GDK_CONTROL_MASK)
!       vim_modifiers |= MOUSE_CTRL;
     if (event->state & GDK_MOD1_MASK)
!       vim_modifiers |= MOUSE_ALT;

     gui_send_mouse_event(button, x, y, repeated_click, vim_modifiers);
     if (gtk_main_level() > 0)
***************
*** 2617,2627 ****

     vim_modifiers = 0x0;
     if (event->state & GDK_SHIFT_MASK)
!       vim_modifiers |= MOD_MASK_SHIFT;
     if (event->state & GDK_CONTROL_MASK)
!       vim_modifiers |= MOD_MASK_CTRL;
     if (event->state & GDK_MOD1_MASK)
!       vim_modifiers |= MOD_MASK_ALT;

     gui_send_mouse_event(MOUSE_RELEASE, x, y, FALSE, vim_modifiers);
     if (gtk_main_level() > 0)
--- 2625,2635 ----

     vim_modifiers = 0x0;
     if (event->state & GDK_SHIFT_MASK)
!       vim_modifiers |= MOUSE_SHIFT;
     if (event->state & GDK_CONTROL_MASK)
!       vim_modifiers |= MOUSE_CTRL;
     if (event->state & GDK_MOD1_MASK)
!       vim_modifiers |= MOUSE_ALT;

     gui_send_mouse_event(MOUSE_RELEASE, x, y, FALSE, vim_modifiers);
     if (gtk_main_level() > 0)
***************
*** 2664,2674 ****

     vim_modifiers = 0x0;
     if (state & GDK_SHIFT_MASK)
!       vim_modifiers |= MOD_MASK_SHIFT;
     if (state & GDK_CONTROL_MASK)
!       vim_modifiers |= MOD_MASK_CTRL;
     if (state & GDK_MOD1_MASK)
!       vim_modifiers |= MOD_MASK_ALT;

     /* inform the editor egine about the occurence of this event */
     gui_send_mouse_event(button, x, y, FALSE, vim_modifiers);
--- 2672,2682 ----

     vim_modifiers = 0x0;
     if (state & GDK_SHIFT_MASK)
!       vim_modifiers |= MOUSE_SHIFT;
     if (state & GDK_CONTROL_MASK)
!       vim_modifiers |= MOUSE_CTRL;
     if (state & GDK_MOD1_MASK)
!       vim_modifiers |= MOUSE_ALT;

     /* inform the editor egine about the occurence of this event */
     gui_send_mouse_event(button, x, y, FALSE, vim_modifiers);

--
INSPECTOR END OF FILM: Move along.  There's nothing to see!  Keep moving!
  [Suddenly he notices the cameras.]
INSPECTOR END OF FILM: (to Camera) All right, put that away sonny.
  [He walks over to it and puts his hand over the lens.]
                "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

--/-/---- Bram Moolenaar ---- [email protected] ---- [email protected] ---\-\--
 \ \    www.vim.org/iccf      www.moolenaar.net       www.vim.org    / /