Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 463664

Summary: [Cocoa][GTK]most of SWT.CURSOR* mouse cursors are incorrect
Product: [Eclipse Project] Platform Reporter: Neeme Praks <neeme.praks>
Component: SWTAssignee: Platform-SWT-Inbox <platform-swt-inbox>
Status: CLOSED WONTFIX QA Contact:
Severity: normal    
Priority: P3 CC: lshanmug
Version: 4.4Keywords: triaged
Target Milestone: ---   
Hardware: PC   
OS: Mac OS X   
Whiteboard: stalebug
Attachments:
Description Flags
some code for quickly trying out all different mouse pointers none

Description Neeme Praks CLA 2015-04-01 06:53:28 EDT
I implemented a NO_TRIM window with custom logic for resizing the window and noticed that the mouse cursor support on OSX is severely lacking.
On Linux, there are also a couple of issues, but OSX is bad.
On Windows, everything looked as it is supposed to look.

The details:
CURSOR_WAIT - I would expect to see the system native colorful "beachball". Not possible?
CURSOR_APPSTARTING - At least, I would expect the same as CURSOR_WAIT (currently, the regular pointer).
CURSOR_HELP - CURSOR_CROSS is shown. Should show a questionmark or something like that.
CURSOR_SIZEALL - CURSOR_CROSS is shown. Should show a cross with arrowheads at each end.
CURSOR_SIZENESW - CURSOR_CROSS is shown. Should show diagonal arrow (NE-SW) with arrowheads at both ends.
CURSOR_SIZENS - Linux-like cursor is shown, horizontal bar in the middle, with up and down arrows extending from it. Should show just vertical arrow with arrowheads at both ends.
CURSOR_SIZENWSE - CURSOR_CROSS is shown.  Should show diagonal arrow (NW-SE) with arrowheads at both ends.
CURSOR_SIZEWE - Linux-like cursor is shown, vertical bar in the middle, with left and right arrows extending from it. Should show just horizontal arrow with arrowheads at both ends.
CURSOR_SIZEN - Linux-like cursor is shown, horizontal bar at the bottom, with up arrow extending from it. Should show just vertical arrow with arrowhead at upper end.
CURSOR_SIZES - Linux-like cursor is shown, horizontal bar at the top, with down arrow extending from it. Should show just vertical arrow with arrowhead at lower end.
CURSOR_SIZEE - Linux-like cursor is shown, horizontal bar at the left, with right arrow extending from it. Should show just horizontal arrow with arrowhead pointing to right.
CURSOR_SIZEW - Linux-like cursor is shown, horizontal bar at the right, with left arrow extending from it. Should show just horizontal arrow with arrowhead pointing to left.
CURSOR_SIZENE - CURSOR_CROSS is shown. Should show diagonal arrow (NE-SW) with arrowhead at lower end.
CURSOR_SIZESE - CURSOR_CROSS is shown. Should show diagonal arrow (NW-SE) with arrowhead at higher end.
CURSOR_SIZESW - CURSOR_CROSS is shown. Should show diagonal arrow (NE-SW) with arrowhead at higher end.
CURSOR_SIZENW - CURSOR_CROSS is shown. Should show diagonal arrow (NW-SE) with arrowhead at lower end.

Linux:
CURSOR_SIZEALL - some hand is shown. I would expect a cross with arrowheads at each end. But maybe this is how it is supposed to look like on Linux.
CURSOR_SIZENESW - some strange cursor is shown. Should show diagonal arrow (NE-SW) with arrowheads at both ends.
CURSOR_SIZENWSE - some strange cursor is shown.  Should show diagonal arrow (NW-SE) with arrowheads at both ends.
Comment 1 Neeme Praks CLA 2015-04-01 06:55:57 EDT
Created attachment 252076 [details]
some code for quickly trying out all different mouse pointers
Comment 2 Lakshmi P Shanmugam CLA 2015-04-01 07:21:31 EDT
(In reply to Neeme Praks from comment #0)
> I implemented a NO_TRIM window with custom logic for resizing the window and
> noticed that the mouse cursor support on OSX is severely lacking.
> On Linux, there are also a couple of issues, but OSX is bad.
> On Windows, everything looked as it is supposed to look.
> 
> The details:
> CURSOR_WAIT - I would expect to see the system native colorful "beachball".
> Not possible?
> CURSOR_APPSTARTING - At least, I would expect the same as CURSOR_WAIT
> (currently, the regular pointer).
> CURSOR_HELP - CURSOR_CROSS is shown. Should show a questionmark or something
> like that.
> CURSOR_SIZEALL - CURSOR_CROSS is shown. Should show a cross with arrowheads
> at each end.
> CURSOR_SIZENESW - CURSOR_CROSS is shown. Should show diagonal arrow (NE-SW)
> with arrowheads at both ends.
> CURSOR_SIZENS - Linux-like cursor is shown, horizontal bar in the middle,
> with up and down arrows extending from it. Should show just vertical arrow
> with arrowheads at both ends.
> CURSOR_SIZENWSE - CURSOR_CROSS is shown.  Should show diagonal arrow (NW-SE)
> with arrowheads at both ends.
> CURSOR_SIZEWE - Linux-like cursor is shown, vertical bar in the middle, with
> left and right arrows extending from it. Should show just horizontal arrow
> with arrowheads at both ends.
> CURSOR_SIZEN - Linux-like cursor is shown, horizontal bar at the bottom,
> with up arrow extending from it. Should show just vertical arrow with
> arrowhead at upper end.
> CURSOR_SIZES - Linux-like cursor is shown, horizontal bar at the top, with
> down arrow extending from it. Should show just vertical arrow with arrowhead
> at lower end.
> CURSOR_SIZEE - Linux-like cursor is shown, horizontal bar at the left, with
> right arrow extending from it. Should show just horizontal arrow with
> arrowhead pointing to right.
> CURSOR_SIZEW - Linux-like cursor is shown, horizontal bar at the right, with
> left arrow extending from it. Should show just horizontal arrow with
> arrowhead pointing to left.
> CURSOR_SIZENE - CURSOR_CROSS is shown. Should show diagonal arrow (NE-SW)
> with arrowhead at lower end.
> CURSOR_SIZESE - CURSOR_CROSS is shown. Should show diagonal arrow (NW-SE)
> with arrowhead at higher end.
> CURSOR_SIZESW - CURSOR_CROSS is shown. Should show diagonal arrow (NE-SW)
> with arrowhead at higher end.
> CURSOR_SIZENW - CURSOR_CROSS is shown. Should show diagonal arrow (NW-SE)
> with arrowhead at lower end.
> 

That is because, Cocoa (NSCursor class) doesn't have the APIs to get those cursors and they would have to be created by SWT.
Comment 3 Neeme Praks CLA 2015-04-01 07:35:10 EDT
Even then, the situation could be improved a lot:

All the cases when CURSOR_CROSS is shown are clearly bugs (except, of course, for CURSOR_CROSS itself):
CURSOR_SIZEALL, CURSOR_SIZENESW, CURSOR_SIZENWSE, CURSOR_SIZENE, CURSOR_SIZESE, CURSOR_SIZESW, CURSOR_SIZENW

The cases of "Linux-like cursor" can be debated -- they do not look like OSX native cursors but at least they convey the meaning. However, I would still prefer if they looked like OSX ones, even if they are actually some custom bitmaps.
Comment 4 Leo Ufimtsev CLA 2015-04-02 12:57:28 EDT
@Linux.

Mouse cursors often come from Gtk themes in form of icons. If an icon for a theme is not defined, you might get odd behaviour.

Would you at all be able to try out alternative themes? (e.g Adwaita usually has a lot of icons). 

Also, what linux/gtk did you test this on. Gtk2/Gtk3, do you know which theme?
Comment 5 Neeme Praks CLA 2015-04-04 04:15:16 EDT
> Also, what linux/gtk did you test this on. Gtk2/Gtk3, do you know which theme?

I simply installed Ubuntu, no special customizations. So whatever themes comes as default on Ubuntu. How can I check it?
Comment 6 Eclipse Genie CLA 2020-12-11 14:04:54 EST
This bug hasn't had any activity in quite some time. Maybe the problem got resolved, was a duplicate of something else, or became less pressing for some reason - or maybe it's still relevant but just hasn't been looked at yet. As such, we're closing this bug.

If you have further information on the current state of the bug, please add it and reopen this bug. The information can be, for example, that the problem still occurs, that you still want the feature, that more information is needed, or that the bug is (for whatever reason) no longer relevant.

--
The automated Eclipse Genie.