Remove custom I-beam mouse cursor shape and support "no" cursor

The old custom I-beam cursor does not have a HiDPI version, and looks
out of place in MacVim compared to the native I-beam cursor. The
rationale for its addition (add white border around the cursor for
visibility) also seems to not matter anymore as macOS has had its
cursors revamped since 10.7.3. Remove the custom cursor for now.

Also support the "no" cursor shape, which shows up when "Press Enter"
prompt comes up. For the other 'mouseshape' cursors just remove the TODO
and explicitly decide not to implement them as they are a little obscure
and don't have system native shapes. Could add them later as custom
cursors but not worth doing so now.

Fix #755
This commit is contained in:
Yee Cheng Chin
2019-02-19 02:52:13 -08:00
parent 21b29de486
commit 5516843dc6
3 changed files with 28 additions and 31 deletions
+28 -27
View File
@@ -1028,36 +1028,37 @@ KeyboardInputSourcesEqual(TISInputSourceRef a, TISInputSourceRef b)
- (void)setCursor
{
static NSCursor *customIbeamCursor = nil;
if (!customIbeamCursor) {
// Use a custom Ibeam cursor that has better contrast against dark
// backgrounds.
// TODO: Is the hotspot ok?
NSImage *ibeamImage = [NSImage imageNamed:@"ibeam"];
if (ibeamImage) {
NSSize size = [ibeamImage size];
NSPoint hotSpot = { size.width*.5f, size.height*.5f };
customIbeamCursor = [[NSCursor alloc]
initWithImage:ibeamImage hotSpot:hotSpot];
}
if (!customIbeamCursor) {
ASLogWarn(@"Failed to load custom Ibeam cursor");
customIbeamCursor = [NSCursor IBeamCursor];
}
}
// This switch should match mshape_names[] in misc2.c.
//
// TODO: Add missing cursor shapes.
// We don't fill every shape here. Only the ones that make sense and have
// system native cursors to choose from (unless we ship custom cursors).
switch (mouseShape) {
case 2: [customIbeamCursor set]; break;
case 3: case 4: [[NSCursor resizeUpDownCursor] set]; break;
case 5: case 6: [[NSCursor resizeLeftRightCursor] set]; break;
case 9: [[NSCursor crosshairCursor] set]; break;
case 10: [[NSCursor pointingHandCursor] set]; break;
case 11: [[NSCursor openHandCursor] set]; break;
case 0: //arrow
[[NSCursor arrowCursor] set]; break;
//case 1: // blank
case 2: // beam
[[NSCursor IBeamCursor] set]; break;
case 3: // updown
case 4: // udsizing
[[NSCursor resizeUpDownCursor] set]; break;
case 5: // leftright
case 6: // lrsizing
[[NSCursor resizeLeftRightCursor] set]; break;
//case 7: // busy
// This could be implemented using _coreCursorType override on NSCursor.
// See WebKit / Chrome / GDK implementation.
case 8: // no
[[NSCursor operationNotAllowedCursor] set]; break;
case 9: // crosshair
[[NSCursor crosshairCursor] set]; break;
case 10: // hand1
[[NSCursor pointingHandCursor] set]; break;
case 11: // hand2
[[NSCursor openHandCursor] set]; break;
//case 12: // pencil
//case 13: // question
//case 14: // right-arrow
//case 15: // up-arrow
default:
[[NSCursor arrowCursor] set]; break;
}
@@ -53,7 +53,6 @@
1DCD00D30E50B2B700460166 /* Undo.png in Resources */ = {isa = PBXBuildFile; fileRef = 1DCD00BE0E50B2B700460166 /* Undo.png */; };
1DD04DEC0C529C5E006CDC2B /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = 1DD04DEB0C529C5E006CDC2B /* Credits.rtf */; };
1DD0C20C0C60FFB4008CD84A /* gvimrc in Copy Vim Runtime Files */ = {isa = PBXBuildFile; fileRef = 1DD0C20A0C60FF9A008CD84A /* gvimrc */; };
1DD3D51E0D82D4C9006E4320 /* ibeam.png in Resources */ = {isa = PBXBuildFile; fileRef = 1DD3D51D0D82D4C9006E4320 /* ibeam.png */; };
1DD66ECE0C803D3600EBDAB3 /* MMApplication.m in Sources */ = {isa = PBXBuildFile; fileRef = 1DD66ECC0C803D3600EBDAB3 /* MMApplication.m */; };
1DD9F5E50C85D60500E8D5A5 /* SystemColors.plist in Resources */ = {isa = PBXBuildFile; fileRef = 1DD9F5E40C85D60500E8D5A5 /* SystemColors.plist */; };
1DE3F8E70D50F80500052B9E /* Preferences.nib in Resources */ = {isa = PBXBuildFile; fileRef = 1DE3F8E50D50F80500052B9E /* Preferences.nib */; };
@@ -229,7 +228,6 @@
1DCD00BE0E50B2B700460166 /* Undo.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = Undo.png; path = Toolbar/Undo.png; sourceTree = "<group>"; };
1DD04DEB0C529C5E006CDC2B /* Credits.rtf */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; path = Credits.rtf; sourceTree = "<group>"; };
1DD0C20A0C60FF9A008CD84A /* gvimrc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = gvimrc; sourceTree = "<group>"; };
1DD3D51D0D82D4C9006E4320 /* ibeam.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ibeam.png; sourceTree = "<group>"; };
1DD66ECB0C803D3600EBDAB3 /* MMApplication.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = MMApplication.h; sourceTree = "<group>"; };
1DD66ECC0C803D3600EBDAB3 /* MMApplication.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = MMApplication.m; sourceTree = "<group>"; };
1DD9F5E40C85D60500E8D5A5 /* SystemColors.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = SystemColors.plist; sourceTree = "<group>"; };
@@ -424,7 +422,6 @@
1D8BEA73104992290069B072 /* FindAndReplace.nib */,
0395A8A90D72D88B00881434 /* General.png */,
1D22374A0E45DF4800E6FFFF /* Advanced.png */,
1DD3D51D0D82D4C9006E4320 /* ibeam.png */,
1D0F11480D58C77800D5DA09 /* Font */,
1DE9726C0C48050600F96A9F /* Toolbar */,
1DD9F5E40C85D60500E8D5A5 /* SystemColors.plist */,
@@ -567,7 +564,6 @@
1DD9F5E50C85D60500E8D5A5 /* SystemColors.plist in Resources */,
1DE3F8E70D50F80500052B9E /* Preferences.nib in Resources */,
0395A8AA0D72D88B00881434 /* General.png in Resources */,
1DD3D51E0D82D4C9006E4320 /* ibeam.png in Resources */,
1D22374B0E45DF4800E6FFFF /* Advanced.png in Resources */,
1DCD00BF0E50B2B700460166 /* Attention.png in Resources */,
1DCD00C00E50B2B700460166 /* Copy.png in Resources */,
Binary file not shown.

Before

Width:  |  Height:  |  Size: 193 B