Determining if a window should be highlighted
By Thom McGrath on
I've been working on a window designed to look similar to Safari. This means a window with a "Unified" toolbar and tabs that blend into said toolbar.
The issue I have been having though is when sheets are involved. If you bring up the "Report Bug" sheet in Safari, you will notice that the window stays "active" - it's still drawn like it's in the foreground. So I used the code I posted earlier to determine if the window had a sheet attached, and drew the tabs active in that case.
But wait, it's not that simple. What if the window has a sheet attached, but the sheet is not the foreground window? This was becoming complicated.
That is, until I found the IsWindowHilited() Carbon function. This function, very simply, gives you a boolean stating wether or not to draw your controls in the foreground or background.
Function IsHighlighted(Extends w As Window) As Boolean #If TargetMacOS Soft Declare Function IsWindowHilited Lib "Carbon.framework" (window As WindowPtr) As Boolean Return IsWindowHilited(w) #Else Return False #EndIf End Function