@@ -8,7 +8,12 @@ enum UpdateLocationStrategy {
88 mainScreen: NSScreen ,
99 activeScreen: NSScreen ,
1010 editor: AXUIElement
11- ) -> ( widgetFrame: CGRect , panelFrame: CGRect , alignPanelTopToAnchor: Bool ) {
11+ ) -> (
12+ widgetFrame: CGRect ,
13+ panelFrame: CGRect ,
14+ tabFrame: CGRect ,
15+ alignPanelTopToAnchor: Bool
16+ ) {
1217 guard let selectedRange: AXValue = try ? editor
1318 . copyValue ( key: kAXSelectedTextRangeAttribute) ,
1419 let rect: AXValue = try ? editor. copyParameterizedValue (
@@ -46,7 +51,12 @@ enum UpdateLocationStrategy {
4651 editorFrame: CGRect ,
4752 mainScreen: NSScreen ,
4853 activeScreen: NSScreen
49- ) -> ( widgetFrame: CGRect , panelFrame: CGRect , alignPanelTopToAnchor: Bool ) {
54+ ) -> (
55+ widgetFrame: CGRect ,
56+ panelFrame: CGRect ,
57+ tabFrame: CGRect ,
58+ alignPanelTopToAnchor: Bool
59+ ) {
5060 return HorizontalMovable ( ) . framesForWindows (
5161 y: activeScreen. frame. height - editorFrame. maxY + Style. widgetPadding,
5262 alignPanelTopToAnchor: false ,
@@ -64,7 +74,12 @@ enum UpdateLocationStrategy {
6474 editorFrame: CGRect ,
6575 mainScreen: NSScreen ,
6676 activeScreen: NSScreen
67- ) -> ( widgetFrame: CGRect , panelFrame: CGRect , alignPanelTopToAnchor: Bool ) {
77+ ) -> (
78+ widgetFrame: CGRect ,
79+ panelFrame: CGRect ,
80+ tabFrame: CGRect ,
81+ alignPanelTopToAnchor: Bool
82+ ) {
6883 let maxY = max (
6984 y,
7085 activeScreen. frame. height - editorFrame. maxY + Style. widgetPadding,
@@ -98,7 +113,16 @@ enum UpdateLocationStrategy {
98113 width: Style . panelWidth,
99114 height: Style . panelHeight
100115 )
101- return ( anchorFrame, panelFrame, alignPanelTopToAnchor)
116+ let tabFrame = CGRect (
117+ x: anchorFrame. origin. x,
118+ y: alignPanelTopToAnchor
119+ ? anchorFrame. minY - Style. widgetHeight - Style. widgetPadding
120+ : anchorFrame. maxY + Style. widgetPadding,
121+ width: Style . widgetWidth,
122+ height: Style . widgetHeight
123+ )
124+
125+ return ( anchorFrame, panelFrame, tabFrame, alignPanelTopToAnchor)
102126 } else {
103127 let proposedAnchorFrameOnTheLeftSide = CGRect (
104128 x: editorFrame. minX + Style. widgetPadding,
@@ -120,7 +144,15 @@ enum UpdateLocationStrategy {
120144 width: Style . panelWidth,
121145 height: Style . panelHeight
122146 )
123- return ( anchorFrame, panelFrame, alignPanelTopToAnchor)
147+ let tabFrame = CGRect (
148+ x: anchorFrame. origin. x,
149+ y: alignPanelTopToAnchor
150+ ? anchorFrame. minY - Style. widgetHeight - Style. widgetPadding
151+ : anchorFrame. maxY + Style. widgetPadding,
152+ width: Style . widgetWidth,
153+ height: Style . widgetHeight
154+ )
155+ return ( anchorFrame, panelFrame, tabFrame, alignPanelTopToAnchor)
124156 } else {
125157 let anchorFrame = proposedAnchorFrameOnTheRightSide
126158 let panelFrame = CGRect (
@@ -131,7 +163,15 @@ enum UpdateLocationStrategy {
131163 width: Style . panelWidth,
132164 height: Style . panelHeight
133165 )
134- return ( anchorFrame, panelFrame, alignPanelTopToAnchor)
166+ let tabFrame = CGRect (
167+ x: anchorFrame. origin. x,
168+ y: alignPanelTopToAnchor
169+ ? anchorFrame. minY - Style. widgetHeight - Style. widgetPadding
170+ : anchorFrame. maxY + Style. widgetPadding,
171+ width: Style . widgetWidth,
172+ height: Style . widgetHeight
173+ )
174+ return ( anchorFrame, panelFrame, tabFrame, alignPanelTopToAnchor)
135175 }
136176 }
137177 }
0 commit comments