a03e737
To: vim-dev@vim.org
a03e737
Subject: patch 7.1.007 (extra)
a03e737
Fcc: outbox
a03e737
From: Bram Moolenaar <Bram@moolenaar.net>
a03e737
Mime-Version: 1.0
a03e737
Content-Type: text/plain; charset=ISO-8859-1
a03e737
Content-Transfer-Encoding: 8bit
a03e737
------------
a03e737
a03e737
Patch 7.1.007 (extra)
a03e737
Problem:    Mac: Context menu doesn't work on Intel Macs.
a03e737
            Scrollbars are not dimmed when Vim is not the active application.
a03e737
Solution:   Remove the test whether context menus are supported.  They are
a03e737
            always there in OS/X.  Handle the dimming. (Nicolas Weber)
a03e737
Files:      src/gui_mac.c, src/gui.h
a03e737
a03e737
a03e737
*** ../vim-7.1.006/src/gui_mac.c	Thu May 10 20:07:25 2007
a03e737
--- src/gui_mac.c	Sat Jun  9 14:19:25 2007
a03e737
***************
a03e737
*** 1676,1688 ****
a03e737
  	/* TODO: NEEDED? */
a03e737
  	clickIsPopup = FALSE;
a03e737
  
a03e737
! 	if ((gui.MacOSHaveCntxMenu) && (mouse_model_popup()))
a03e737
! 	    if (IsShowContextualMenuClick(theEvent))
a03e737
! 	    {
a03e737
! 		vimMouseButton = MOUSE_RIGHT;
a03e737
! 		vimModifiers &= ~MOUSE_CTRL;
a03e737
! 		clickIsPopup = TRUE;
a03e737
! 	    }
a03e737
  
a03e737
  	/* Is it a double click ? */
a03e737
  	dblClick = ((theEvent->when - lastMouseTick) < GetDblTime());
a03e737
--- 1676,1687 ----
a03e737
  	/* TODO: NEEDED? */
a03e737
  	clickIsPopup = FALSE;
a03e737
  
a03e737
! 	if (mouse_model_popup() && IsShowContextualMenuClick(theEvent))
a03e737
! 	{
a03e737
! 	    vimMouseButton = MOUSE_RIGHT;
a03e737
! 	    vimModifiers &= ~MOUSE_CTRL;
a03e737
! 	    clickIsPopup = TRUE;
a03e737
! 	}
a03e737
  
a03e737
  	/* Is it a double click ? */
a03e737
  	dblClick = ((theEvent->when - lastMouseTick) < GetDblTime());
a03e737
***************
a03e737
*** 1920,1943 ****
a03e737
      WindowPtr	whichWindow;
a03e737
  
a03e737
      whichWindow = (WindowPtr) event->message;
a03e737
!     if ((event->modifiers) & activeFlag)
a03e737
! 	/* Activate */
a03e737
! 	gui_focus_change(TRUE);
a03e737
!     else
a03e737
      {
a03e737
! 	/* Deactivate */
a03e737
! 	gui_focus_change(FALSE);
a03e737
! /*	DON'T KNOW what the code below was doing
a03e737
! 	found in the deactivate clause, but the
a03e737
! 	clause writing TRUE into in_focus (BUG)
a03e737
!  */
a03e737
! 
a03e737
! #if 0	/* Removed by Dany as per above June 2001 */
a03e737
! 	a_bool = false;
a03e737
! 	SetPreserveGlyph(a_bool);
a03e737
! 	SetOutlinePreferred(a_bool);
a03e737
! #endif
a03e737
      }
a03e737
  }
a03e737
  
a03e737
  
a03e737
--- 1919,1937 ----
a03e737
      WindowPtr	whichWindow;
a03e737
  
a03e737
      whichWindow = (WindowPtr) event->message;
a03e737
!     /* Dim scrollbars */
a03e737
!     if (whichWindow == gui.VimWindow)
a03e737
      {
a03e737
!         ControlRef rootControl;
a03e737
!         GetRootControl(gui.VimWindow, &rootControl);
a03e737
!         if ((event->modifiers) & activeFlag)
a03e737
!             ActivateControl(rootControl);
a03e737
!         else
a03e737
!             DeactivateControl(rootControl);
a03e737
      }
a03e737
+ 
a03e737
+     /* Activate */
a03e737
+     gui_focus_change((event->modifiers) & activeFlag);
a03e737
  }
a03e737
  
a03e737
  
a03e737
***************
a03e737
*** 2559,2574 ****
a03e737
      OSErr	error;
a03e737
  
a03e737
      /* Handle contextual menu right now (if needed) */
a03e737
!     if (gui.MacOSHaveCntxMenu)
a03e737
! 	if (IsShowContextualMenuClick(event))
a03e737
! 	{
a03e737
  # if 0
a03e737
! 	    gui_mac_handle_contextual_menu(event);
a03e737
  # else
a03e737
! 	    gui_mac_doMouseDownEvent(event);
a03e737
  # endif
a03e737
! 	    return;
a03e737
! 	}
a03e737
  
a03e737
      /* Handle normal event */
a03e737
      switch (event->what)
a03e737
--- 2553,2567 ----
a03e737
      OSErr	error;
a03e737
  
a03e737
      /* Handle contextual menu right now (if needed) */
a03e737
!     if (IsShowContextualMenuClick(event))
a03e737
!     {
a03e737
  # if 0
a03e737
!         gui_mac_handle_contextual_menu(event);
a03e737
  # else
a03e737
!         gui_mac_doMouseDownEvent(event);
a03e737
  # endif
a03e737
!         return;
a03e737
!     }
a03e737
  
a03e737
      /* Handle normal event */
a03e737
      switch (event->what)
a03e737
***************
a03e737
*** 2782,2795 ****
a03e737
      (void) InstallAEHandlers();
a03e737
  #endif
a03e737
  
a03e737
-     if (Gestalt(gestaltContextualMenuAttr, &gestalt_rc) == noErr)
a03e737
- 	gui.MacOSHaveCntxMenu = BitTst(&gestalt_rc, 31-gestaltContextualMenuTrapAvailable);
a03e737
-     else
a03e737
- 	gui.MacOSHaveCntxMenu = false;
a03e737
- 
a03e737
-     if (gui.MacOSHaveCntxMenu)
a03e737
- 	gui.MacOSHaveCntxMenu = (InitContextualMenus()==noErr);
a03e737
- 
a03e737
      pomme = NewMenu(256, "\p\024"); /* 0x14= = Apple Menu */
a03e737
  
a03e737
      AppendMenu(pomme, "\pAbout VIM");
a03e737
--- 2775,2780 ----
a03e737
***************
a03e737
*** 2941,2946 ****
a03e737
--- 2926,2932 ----
a03e737
  #ifdef USE_CARBONKEYHANDLER
a03e737
      EventHandlerRef keyEventHandlerRef;
a03e737
  #endif
a03e737
+     ControlRef rootControl;
a03e737
  
a03e737
      if (Gestalt(gestaltSystemVersion, &gMacSystemVersion) != noErr)
a03e737
  	gMacSystemVersion = 0x1000; /* TODO: Default to minimum sensible value */
a03e737
***************
a03e737
*** 2954,2968 ****
a03e737
      (void) InstallAEHandlers();
a03e737
  #endif
a03e737
  
a03e737
-     /* Ctrl click */
a03e737
-     if (Gestalt(gestaltContextualMenuAttr, &gestalt_rc) == noErr)
a03e737
- 	gui.MacOSHaveCntxMenu = BitTst(&gestalt_rc, 31-gestaltContextualMenuTrapAvailable);
a03e737
-     else
a03e737
- 	gui.MacOSHaveCntxMenu = false;
a03e737
- 
a03e737
-     if (gui.MacOSHaveCntxMenu)
a03e737
- 	gui.MacOSHaveCntxMenu = (InitContextualMenus()==noErr);
a03e737
- 
a03e737
      pomme = NewMenu(256, "\p\024"); /* 0x14= = Apple Menu */
a03e737
  
a03e737
      AppendMenu(pomme, "\pAbout VIM");
a03e737
--- 2940,2945 ----
a03e737
***************
a03e737
*** 2981,2986 ****
a03e737
--- 2958,2964 ----
a03e737
      gui.VimWindow = NewCWindow(nil, &windRect, "\pgVim on Macintosh", true,
a03e737
  			zoomDocProc,
a03e737
  			(WindowPtr)-1L, true, 0);
a03e737
+     CreateRootControl(gui.VimWindow, &rootControl);
a03e737
      InstallReceiveHandler((DragReceiveHandlerUPP)receiveHandler,
a03e737
  	    gui.VimWindow, NULL);
a03e737
      SetPortWindowPort(gui.VimWindow);
a03e737
*** ../vim-7.1.006/src/gui.h	Thu May 10 19:18:46 2007
a03e737
--- src/gui.h	Sat Jun  9 14:10:34 2007
a03e737
***************
a03e737
*** 460,466 ****
a03e737
      WindowPtr	VimWindow;
a03e737
      MenuHandle	MacOSHelpMenu;	    /* Help menu provided by the MacOS */
a03e737
      int		MacOSHelpItems;	    /* Nr of help-items supplied by MacOS */
a03e737
-     int		MacOSHaveCntxMenu;  /* Contextual menu available */
a03e737
      WindowPtr	wid;		    /* Window id of text area */
a03e737
      int		visibility;	    /* Is window partially/fully obscured? */
a03e737
  #endif
a03e737
--- 460,465 ----
a03e737
*** ../vim-7.1.006/src/version.c	Tue Jun 19 15:40:51 2007
a03e737
--- src/version.c	Tue Jun 19 15:44:15 2007
a03e737
***************
a03e737
*** 668,669 ****
a03e737
--- 668,671 ----
a03e737
  {   /* Add new patch number below this line */
a03e737
+ /**/
a03e737
+     7,
a03e737
  /**/
a03e737
a03e737
-- 
a03e737
       When danger reared its ugly head,
a03e737
       He bravely turned his tail and fled
a03e737
       Yes, Brave Sir Robin turned about
a03e737
       And gallantly he chickened out
a03e737
       Bravely taking to his feet
a03e737
       He beat a very brave retreat
a03e737
       Bravest of the brave Sir Robin
a03e737
       Petrified of being dead
a03e737
       Soiled his pants then brave Sir Robin
a03e737
       Turned away and fled.
a03e737
                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
a03e737
a03e737
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
a03e737
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
a03e737
\\\        download, build and distribute -- http://www.A-A-P.org        ///
a03e737
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///