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