![]() ![]() (I guess you don't want to implement this functionality by hand, I mean by taking screenshots of all windows in the parent-child hierarchy, consulting CG private APIs for their relative positions and compositing them by hand). If CGSGetParentWindowList is not helpful. I looked at the disassembly of AppKit framework and they are doing something like this. So in theory you should be able to use CGSCopyWindowGroup with magic "movementGroup" to detect parent-child relationships. Var_38 appears to be a plain C array of CG window IDs (don't forget to free it) and var_2C appears to be the count. Thanks for the effort in making a test app and the video. Please look at this more explanatory screenshot: I lay original Finder window on top of background "framing" TotalFinder window to achieve tabbed interface. In AltTab UI you see two Finder windows without frames. And one TotalFinder window with tabs, window framing and gray background. ![]() In this case TotalFinder is in dual mode. It has one parent window which renders tab and two "glued on" Finder windows on the left and right side (with removed borders). Finder is unaware of this, it still thinks it has separate windows, but TotalFinder does this trick to turn them into child windows and compose them over its own parent window. I agree with your point that in general maybe you want to treat child windows as separate windows and make special case for TotalFinder and XtraFinder only.Ī) if window belongs to Finder process and window has some child windows and window has no parent window => do not display it in AltTab UI Finder windows are hacked to ignore dragging and instead redirect dragging to the parent window. This would work pretty well even in dual mode. #Install xtrafinder windowsĪltTab UI would display two child Finder windows without frames and when selected TotalFinder would get activated and focus would properly go to the left or right side depending on which Finder window was selected. The tricky part is to determine if a window is parent window / has child windows. But you have the test app where you can figure this out. ![]() I'm not fluent in Swift so I cannot really help with the code at this point, but I can definitely test it here on my machine when you have something working with your test app. ![]()
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |