> Am 22.05.2019 um 08:53 schrieb Riccardo Mottola <address@hidden>:
>
> Sergii Stoian wrote:
>> I've wrote tooltips for ProjectCenter PCButton's implementation. After that someone has copied this implementation into NSView.
>> I looked into ProjectCenter sources long time ago. I was convinced that PCButton's private tooltips implementation was replaced with NSView's.
>
> I removed the custom ToolTip implementation in PCButton and removed the custom stuff. Now, very little of PCButton remains, just some graphic settings, essentially.
>
> The good news is that it works as before.
>
> The bad news is that there were certain bugs in the tooltips and they remain :) This means.. that the NSView implementation has taken them over 1 to 1.
>
> With windowmaker, some tooltips work, sometimes they don't show, the behaviour is
> - move pointer over button
> - TT doesn't show
> - while it doesn't show, the WindowMaker icon gets grey (looses Application Icon) and sometimes even jumps (focus lost?)
> - slight mouse move over the same "target", ToolTip appears and WindowMaker shows app icon again, everything fixed
>
> I remember discussing this a while back with Fred. Do you notice that too? I'm testing with ProjectCenter, I will look for other apps that have tooltips, but now PC should be really "standard“.
If I remember correctly the reason for the described behaviour is that the tooltip window shows up, but is behind the normal window. This sadly is a rather general issue in GNUstep we don’t get the window manager to agree on the window stacking.
enum {
// OPENSTEP // MacOS // GNUstep
NSDesktopWindowLevel = -1000, // -- // 2 // -1000
NSNormalWindowLevel = 0, // 0 // 3 // 0
NSFloatingWindowLevel = 3, // 3 // 4 // 3
NSDockWindowLevel = 5, // 5 // 6 // 21
NSSubmenuWindowLevel = 10, // 10 // 5 // 3
NSTornOffMenuWindowLevel = 10, // -- // 5 // 3
NSMainMenuWindowLevel = 20, // 20 // 7 // 20
NSStatusWindowLevel = 21, // -- // 8 // 21
NSModalPanelWindowLevel = 100, // -- // 9 // 100
NSPopUpMenuWindowLevel = 101, // -- // 10 // 101
NSScreenSaverWindowLevel = 1000 // -- // 12 // 1000
};