@@ -4,15 +4,13 @@ import { gettext as _ } from 'gettext';
44import St from '@girs/st-18' ;
55import GObject from '@girs/gobject-2.0' ;
66import Clutter from '@girs/clutter-18' ;
7- import type Meta from '@girs/meta-18' ;
87import * as Main from '@girs/gnome-shell/ui/main' ;
98
109import type { ClipboardEntry , ClipboardStore } from '~/clipboard/clipboardStore.ts' ;
1110import { ClipboardList } from '~/clipboard/clipboardList.ts' ;
1211import {
12+ findClipboardPanelMonitorAtPoint ,
1313 placeClipboardPanelNearPointer ,
14- resolveClipboardPanelAnchor ,
15- type ClipboardPanelWindowPlacement ,
1614} from '~/clipboard/clipboardPosition.ts' ;
1715
1816const PANEL_WIDTH = 360 ;
@@ -101,10 +99,10 @@ export class ClipboardPanel extends St.BoxLayout {
10199 return Clutter . EVENT_STOP ;
102100 } ) ;
103101
104- Main . uiGroup . add_child ( this . _overlay ) ;
105- Main . uiGroup . add_child ( this ) ; // panel sits above overlay
102+ Main . layoutManager . addTopChrome ( this . _overlay , { trackFullscreen : false } ) ;
103+ Main . layoutManager . addTopChrome ( this , { trackFullscreen : false } ) ; // panel sits above overlay
106104
107- this . _positionNearCurrentAnchor ( ) ;
105+ this . _positionNearPointer ( ) ;
108106
109107 this . show ( ) ;
110108 this . _isOpen = true ;
@@ -149,12 +147,12 @@ export class ClipboardPanel extends St.BoxLayout {
149147 }
150148
151149 if ( this . _overlay ) {
152- Main . uiGroup . remove_child ( this . _overlay ) ;
150+ Main . layoutManager . removeChrome ( this . _overlay ) ;
153151 this . _overlay . destroy ( ) ;
154152 this . _overlay = null ;
155153 }
156154
157- Main . uiGroup . remove_child ( this ) ;
155+ Main . layoutManager . removeChrome ( this ) ;
158156 this . hide ( ) ;
159157 this . _isOpen = false ;
160158 }
@@ -235,22 +233,13 @@ export class ClipboardPanel extends St.BoxLayout {
235233 }
236234 }
237235
238- private _positionNearCurrentAnchor ( ) : void {
236+ private _positionNearPointer ( ) : void {
239237 const [ pointerX , pointerY ] = global . get_pointer ( ) ;
240- const pointerMonitorIndex = this . _findMonitorIndexAt ( pointerX , pointerY ) ;
241- const anchor = resolveClipboardPanelAnchor (
242- pointerX ,
243- pointerY ,
244- pointerMonitorIndex ,
245- this . _getFocusedWindowPlacement ( ) ,
246- ) ;
247- const monitorIndex = this . _isMonitorValid ( anchor . monitorIndex )
248- ? anchor . monitorIndex
249- : pointerMonitorIndex ;
238+ const monitorIndex = this . _findMonitorIndexAt ( pointerX , pointerY ) ;
250239 const workArea = Main . layoutManager . getWorkAreaForMonitor ( monitorIndex ) ;
251240 const bounds = placeClipboardPanelNearPointer (
252- anchor . x ,
253- anchor . y ,
241+ pointerX ,
242+ pointerY ,
254243 workArea ,
255244 PANEL_WIDTH ,
256245 PANEL_HEIGHT ,
@@ -263,43 +252,11 @@ export class ClipboardPanel extends St.BoxLayout {
263252 }
264253
265254 private _findMonitorIndexAt ( x : number , y : number ) : number {
266- const monitors = Main . layoutManager . monitors ;
267- for ( let i = 0 ; i < monitors . length ; i ++ ) {
268- const monitor = monitors [ i ] ! ;
269- if (
270- x >= monitor . x &&
271- x < monitor . x + monitor . width &&
272- y >= monitor . y &&
273- y < monitor . y + monitor . height
274- ) {
275- return i ;
276- }
277- }
278-
279- return Main . layoutManager . primaryIndex ;
280- }
281-
282- private _getFocusedWindowPlacement ( ) : ClipboardPanelWindowPlacement | null {
283- const win = global . display . focus_window as Meta . Window | null ;
284- if ( ! win || win . minimized ) return null ;
285-
286- const monitorIndex = win . get_monitor ( ) ;
287- if ( ! this . _isMonitorValid ( monitorIndex ) ) return null ;
288-
289- const frame = win . get_frame_rect ( ) ;
290- return {
291- monitorIndex,
292- frame : {
293- x : frame . x ,
294- y : frame . y ,
295- width : frame . width ,
296- height : frame . height ,
297- } ,
298- } ;
299- }
300-
301- private _isMonitorValid ( monitorIndex : number ) : boolean {
302- const monitors = Main . layoutManager . monitors ?? [ ] ;
303- return monitorIndex >= 0 && monitorIndex < monitors . length ;
255+ return findClipboardPanelMonitorAtPoint (
256+ x ,
257+ y ,
258+ Main . layoutManager . monitors ,
259+ Main . layoutManager . primaryIndex ,
260+ ) ;
304261 }
305262}
0 commit comments