Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit7af3314

Browse files
authored
Merge pull request#158 from Video-Nomad/fix/systray-thread-timer-fix
fix(systray): added a delay for send_taskbar_created
2 parentsf5085f4 +2cb98c1 commit7af3314

File tree

2 files changed

+36
-29
lines changed

2 files changed

+36
-29
lines changed

‎src/core/utils/systray/tray_monitor.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -118,8 +118,8 @@ class IconData:
118118
classTrayMonitor(QObject):
119119
"""Main class to handle systray message interception and forwarding"""
120120

121-
icon_modified=pyqtSignal(object)
122-
icon_deleted=pyqtSignal(object)
121+
icon_modified=pyqtSignal(IconData)
122+
icon_deleted=pyqtSignal(IconData)
123123

124124
def__init__(self,parent:QObject|None=None):
125125
super().__init__(parent)

‎src/core/widgets/yasb/systray.py

Lines changed: 34 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,13 @@
77
fromtypingimportAny,override
88
fromuuidimportUUID
99

10-
fromPyQt6.QtCoreimportQt,QThread,QTimer,pyqtSlot# pyright: ignore [reportUnknownVariableType]
11-
fromPyQt6.QtGuiimportQGuiApplication,QShowEvent
10+
fromPyQt6.QtCoreimport (
11+
Qt,
12+
QThread,
13+
QTimer,
14+
pyqtSlot,# pyright: ignore [reportUnknownVariableType]
15+
)
16+
fromPyQt6.QtGuiimportQShowEvent
1217
fromPyQt6.QtWidgetsimport (
1318
QApplication,
1419
QHBoxLayout,
@@ -73,9 +78,8 @@ def get_client_instance(cls):
7378
ifcls._instanceisNone:
7479
cls._instance=TrayMonitor()
7580
cls._thread=TrayMonitorThread(cls._instance)
76-
cls._thread.start()
7781

78-
returncls._instance
82+
returncls._instance,cls._thread
7983

8084
def__init__(
8185
self,
@@ -89,7 +93,7 @@ def __init__(
8993
show_battery:bool,
9094
show_volume:bool,
9195
):
92-
super().__init__(class_name=class_name)#pyright: ignore [reportArgumentType]
96+
super().__init__(class_name=class_name)#type: ignore
9397
self.label_collapsed=label_collapsed
9498
self.label_expanded=label_expanded
9599
self.label_position=label_positioniflabel_positionin {"left","right"}else"left"
@@ -117,16 +121,16 @@ def __init__(
117121

118122
# This timer will check if icons are still valid and have actual process attached
119123
self.icon_check_timer=QTimer(self)
120-
self.icon_check_timer.timeout.connect(self.check_icons)#pyright: ignore [reportUnknownMemberType]
124+
self.icon_check_timer.timeout.connect(self.check_icons)#type: ignore
121125
self.icon_check_timer.start(5000)
122126

123127
self.sort_timer=QTimer(self)
124-
self.sort_timer.timeout.connect(self.sort_icons)#pyright: ignore [reportUnknownMemberType]
128+
self.sort_timer.timeout.connect(self.sort_icons)#type: ignore
125129
self.sort_timer.setSingleShot(True)
126130

127131
self.unpinned_vis_btn=QPushButton()
128132
self.unpinned_vis_btn.setCheckable(True)
129-
self.unpinned_vis_btn.clicked.connect(self.toggle_unpinned_widget_visibility)#pyright: ignore [reportUnknownMemberType]
133+
self.unpinned_vis_btn.clicked.connect(self.toggle_unpinned_widget_visibility)#type: ignore
130134

131135
self.unpinned_widget=DropWidget(self)
132136
self.unpinned_layout=self.unpinned_widget.main_layout
@@ -140,10 +144,10 @@ def __init__(
140144
self.unpinned_widget.setProperty("class","unpinned-container")
141145
self.unpinned_vis_btn.setProperty("class","unpinned-visibility-btn")
142146

143-
self.unpinned_widget.drag_started.connect(self.on_drag_started)#pyright: ignore [reportUnknownMemberType]
144-
self.unpinned_widget.drag_ended.connect(self.on_drag_ended)#pyright: ignore [reportUnknownMemberType]
145-
self.pinned_widget.drag_started.connect(self.on_drag_started)#pyright: ignore [reportUnknownMemberType]
146-
self.pinned_widget.drag_ended.connect(self.on_drag_ended)#pyright: ignore [reportUnknownMemberType]
147+
self.unpinned_widget.drag_started.connect(self.on_drag_started)#type: ignore
148+
self.unpinned_widget.drag_ended.connect(self.on_drag_ended)#type: ignore
149+
self.pinned_widget.drag_started.connect(self.on_drag_started)#type: ignore
150+
self.pinned_widget.drag_ended.connect(self.on_drag_ended)#type: ignore
147151

148152
self.widget_layout.addWidget(self.unpinned_widget)
149153
self.widget_layout.addWidget(self.pinned_widget)
@@ -152,22 +156,25 @@ def __init__(
152156
self.widget_layout.insertWidget(0,self.unpinned_vis_btn)
153157
else:
154158
self.widget_layout.insertWidget(-1,self.unpinned_vis_btn)
155-
159+
156160
QTimer.singleShot(0,self.setup_client)# pyright: ignore [reportUnknownMemberType]
157161

158162
defsetup_client(self):
159163
"""Setup the tray monitor client and connect signals"""
160164
self.load_state()
161-
client=SystrayWidget.get_client_instance()
162-
client.icon_modified.connect(self.on_icon_modified)#pyright: ignore [reportUnknownMemberType]
163-
client.icon_deleted.connect(self.on_icon_deleted)#pyright: ignore [reportUnknownMemberType]
165+
client,thread=SystrayWidget.get_client_instance()
166+
client.icon_modified.connect(self.on_icon_modified)#type: ignore
167+
client.icon_deleted.connect(self.on_icon_deleted)#type: ignore
164168

165169
app_inst=QApplication.instance()
166170
ifapp_instisnotNone:
167-
app_inst.aboutToQuit.connect(self.save_state)# pyright: ignore [reportUnknownMemberType]
171+
app_inst.aboutToQuit.connect(self.save_state)# type: ignore
172+
173+
ifthreadisnotNoneandnotthread.isRunning():
174+
thread.start()
168175

169176
# We need to send this message for each instance of the taskbar widget on init
170-
client.send_taskbar_created()
177+
QTimer.singleShot(200,client.send_taskbar_created)# pyright: ignore [reportUnknownMemberType]
171178

172179
@override
173180
defshowEvent(self,a0:QShowEvent|None)->None:
@@ -177,19 +184,19 @@ def showEvent(self, a0: QShowEvent | None) -> None:
177184
self.unpinned_vis_btn.setText(self.label_expandedifself.show_unpinnedelseself.label_collapsed)
178185
self.unpinned_widget.setVisible(self.show_unpinned)
179186

180-
@pyqtSlot()# pyright: ignore [reportUntypedFunctionDecorator]
187+
@pyqtSlot()
181188
defon_drag_started(self):
182189
"""Handle drag started signal for drag-and-drop functionality"""
183190
# Always show pinned widget during drag operations
184191
self.update_pinned_widget_visibility(force_show=True)
185192

186-
@pyqtSlot()# pyright: ignore [reportUntypedFunctionDecorator]
193+
@pyqtSlot()
187194
defon_drag_ended(self):
188195
"""Handle drag ended signal for drag-and-drop functionality"""
189196
# Update visibility based on content
190197
self.update_pinned_widget_visibility()
191198

192-
@pyqtSlot(IconData)# pyright: ignore [reportUntypedFunctionDecorator]
199+
@pyqtSlot(IconData)
193200
defon_icon_modified(self,data:IconData):
194201
"""Handle icon modified signal sent by the tray monitor"""
195202
ifdata.guidinself.filtered_guids:
@@ -198,8 +205,8 @@ def on_icon_modified(self, data: IconData):
198205
ificonisNone:
199206
icon=IconWidget()
200207
icon.data=IconData()
201-
icon.pinned_changed.connect(self.on_icon_pinned_changed)#pyright: ignore [reportUnknownMemberType]
202-
icon.icon_moved.connect(self.on_icon_moved)#pyright: ignore [reportUnknownMemberType]
208+
icon.pinned_changed.connect(self.on_icon_pinned_changed)#type: ignore
209+
icon.icon_moved.connect(self.on_icon_moved)#type: ignore
203210
self.icons.append(icon)
204211

205212
# Check if the saved data exists for the icon by uuid and exe path
@@ -226,16 +233,16 @@ def on_icon_modified(self, data: IconData):
226233
icon.setHidden(data.uFlags&NIF_STATE!=0anddata.dwState==1)
227234
self.update_pinned_widget_visibility()
228235

229-
@pyqtSlot(IconData)# pyright: ignore [reportUntypedFunctionDecorator]
230-
defon_icon_deleted(self,data:IconData):
236+
@pyqtSlot(IconData)
237+
defon_icon_deleted(self,data:IconData)->None:
231238
"""Handles the icon deleted signal sent by the tray monitor"""
232239
icon=self.find_icon(data.guid,data.hWnd,data.uID)
233240
ificonisnotNone:
234241
self.icons.remove(icon)
235242
icon.deleteLater()
236243
self.update_pinned_widget_visibility()
237244

238-
@pyqtSlot(object)# pyright: ignore [reportUntypedFunctionDecorator]
245+
@pyqtSlot(object)
239246
defon_icon_pinned_changed(self,icon:IconWidget):
240247
"""Handles the icon pinned changed signal sent when user [Mod]+Clicks on the icon"""
241248
ificon.parent()isself.unpinned_widget:
@@ -253,7 +260,7 @@ def on_icon_pinned_changed(self, icon: IconWidget):
253260
self.save_state()
254261
self.update_pinned_widget_visibility()
255262

256-
@pyqtSlot(object)# pyright: ignore [reportUntypedFunctionDecorator]
263+
@pyqtSlot(object)
257264
defon_icon_moved(self,icon:IconWidget):
258265
"""Handle icon moved signal"""
259266
ificon.parent()isself.unpinned_widget:

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp