@@ -14,6 +14,7 @@ DccObject {
1414 property var activeDialogs: []
1515 property bool screensFormRect: dccData .screensFormRect
1616 property bool isExtendMode: dccData .displayMode === " EXTEND"
17+ property var indicatorScreen: null // 用于显示屏幕边框指示器的属性
1718 property var scaleModelConst: [{
1819 " text" : qsTr (" 100%" ),
1920 " value" : 1.0
@@ -141,14 +142,6 @@ DccObject {
141142 closeInvalidDialogs ()
142143 }
143144 }
144- Component {
145- id: indicator
146- ScreenIndicator {}
147- }
148- Component {
149- id: recognize
150- ScreenRecognize {}
151- }
152145 DccTitleObject {
153146 name: " multipleDisplays"
154147 parentName: " display"
@@ -245,11 +238,9 @@ DccObject {
245238 function pressedItem (item ) {
246239 hasMove = false
247240 root .screen = item .screen
248- if (dccData .isX11 ) {
249- indicator .createObject (this , {
250- " screen" : getQtScreen (item .screen )
251- }).show ()
252- }
241+ // 使用 indicatorScreen 属性统一显示边框指示器
242+ root .indicatorScreen = null
243+ root .indicatorScreen = getQtScreen (item .screen )
253244 }
254245 function positionChangedItem (item ) {
255246 monitorControl .effective = false
@@ -359,43 +350,38 @@ DccObject {
359350 }
360351 D .Button {
361352 id: identifyBut
362- property var recognizes : []
353+ property bool identifyActive : false
363354 implicitHeight: 24
364355 implicitWidth: 72
365356 anchors .right : parent .right
366357 anchors .verticalCenter : parent .verticalCenter
367358 anchors .rightMargin : 7
368359 text: dccObj .displayName
369- function closeWindow () {
370- recognizeTimer .stop ()
371- for (var obj of identifyBut .recognizes ) {
372- obj .close ()
373- }
374- identifyBut .recognizes = []
375- }
376360 Timer {
377361 id: recognizeTimer
378362 repeat: false
379363 interval: 5000
380- onTriggered: identifyBut .closeWindow ()
364+ onTriggered: identifyBut .identifyActive = false
381365 }
382366 onClicked: {
383- // if (!dccData.isX11) {
384- // return
385- // }
386- identifyBut .closeWindow ()
387- for (var i = 0 ; i < dccData .virtualScreens .length ; i++ ) {
388- var item = dccData .virtualScreens [i]
389- var obj = recognize .createObject (this , {
390- " screen" : getQtScreen (item),
391- " name" : item .name
392- })
393- obj .show ()
394- obj .escPressed .connect (identifyBut .closeWindow )
395- recognizes .push (obj)
396- }
367+ identifyBut .identifyActive = true
397368 recognizeTimer .restart ()
398369 }
370+ // 使用 Repeater + Loader 创建多个 ScreenRecognize 窗口
371+ Repeater {
372+ id: recognizeRepeater
373+ model: identifyBut .identifyActive ? dccData .virtualScreens : []
374+ Loader {
375+ sourceComponent: ScreenRecognize {
376+ onEscPressed: identifyBut .identifyActive = false
377+ }
378+ onLoaded: {
379+ item .screen = getQtScreen (modelData)
380+ item .name = modelData .name
381+ item .show ()
382+ }
383+ }
384+ }
399385 }
400386 }
401387 }
@@ -595,14 +581,16 @@ DccObject {
595581 onScreenClicked : function (screen ) {
596582 if (screen && screen !== root .screen ) {
597583 root .screen = screen
598- if (dccData .isX11 ) {
599- indicator .createObject (this , {
600- " screen" : getQtScreen (root .screen )
601- }).show ()
602- }
584+ // 设置 indicatorScreen 属性显示边框指示器
585+ root .indicatorScreen = null
586+ root .indicatorScreen = getQtScreen (root .screen )
603587 }
604588 }
605589 }
590+ ScreenIndicator{
591+ screen : root .indicatorScreen
592+ onClosed: root .indicatorScreen = null
593+ }
606594 }
607595 component BrightnessComponent: RowLayout {
608596 property var screenItem
0 commit comments