Skip to content

Commit 4f2743c

Browse files
committed
Fixed a bug: created a mechanism to prevent feedback between slider changes and brightness updates from the service.
1 parent 390c11c commit 4f2743c

File tree

2 files changed

+19
-8
lines changed

2 files changed

+19
-8
lines changed

src/mewline/widgets/combined_controls.py

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@ def __init__(self, anchor_widget: GObject.GObject, osd_widget=None, **kwargs):
3030
self.config = cfg.modules
3131
self.osd_widget = osd_widget
3232

33+
self._updating_brightness_from_service = False
34+
self._updating_brightness = False
35+
3336
# Check if brightness control is available
3437
self.brightness_available = self._is_brightness_available()
3538

@@ -253,7 +256,7 @@ def _bind_microphone(self, *_):
253256
self._update_mic_from_service()
254257

255258
def _on_brightness_service(self, *_):
256-
if not self.brightness_available or self._brightness_apply_src:
259+
if not self.brightness_available or self._brightness_apply_src or self._updating_brightness_from_service:
257260
return # Don't update while we have a pending change
258261
val = self._get_brightness()
259262
self.brightness_scale.set_value(val)
@@ -346,6 +349,8 @@ def _apply_mic(self):
346349
def _apply_brightness(self):
347350
if not self.brightness_available:
348351
return False
352+
353+
self._updating_brightness_from_service = True
349354
val = int(self.brightness_scale.value)
350355
val = max(0, min(100, val))
351356
# translate percent back to raw units
@@ -355,6 +360,12 @@ def _apply_brightness(self):
355360
if self.osd_widget:
356361
self.osd_widget.show_brightness()
357362
self._brightness_apply_src = None
363+
364+
GLib.timeout_add(100, self.unblock_service_updates)
365+
return False
366+
367+
def _unblock_service_updates(self):
368+
self._updating_brightness_from_service = False
358369
return False
359370

360371

@@ -513,11 +524,14 @@ def _apply_scroll_updates(self):
513524
if self.osd_widget:
514525
self.osd_widget.show_audio_microphone()
515526
elif device == "brightness" and self._is_brightness_available():
527+
self._updating_brightness = True
516528
target = int((value / 100.0) * self.brightness.max_brightness_level)
517529
self.brightness.screen_brightness = target
518530
if self.osd_widget:
519531
self.osd_widget.show_brightness()
520532

533+
GLib.timeout_add(100, lambda: setattr(self, '_updating_brightness', False))
534+
521535
self._pending_scroll_updates.clear()
522536
self._scroll_debounce_src = None
523537
return False
@@ -564,7 +578,7 @@ def _bind_microphone(self, *_):
564578
self._update_mic_icon()
565579

566580
def _on_brightness_changed(self, *_):
567-
if self._is_brightness_available():
581+
if self._is_brightness_available() and not self._updating_brightness:
568582
self.icon_brightness.set_text(get_brightness_icon(self._get_brightness()))
569583

570584
def _update_speaker_icon(self, *_):

whitelist-vulture

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,24 @@
11
XDG_STATE_HOME # unused variable (src/mewline/constants.py:14)
22
_._duration # unused attribute (src/mewline/shared/animator.py:76)
3-
step_size # unused variable (src/mewline/utils/config_structure.py:61)
4-
step_size # unused variable (src/mewline/utils/config_structure.py:67)
5-
step_size # unused variable (src/mewline/utils/config_structure.py:79)
6-
speakers # unused variable (src/mewline/utils/config_structure.py:129)
73
_.rowstride # unused attribute (src/mewline/utils/temporary_fixes.py:29)
84
_.has_alpha # unused attribute (src/mewline/utils/temporary_fixes.py:30)
95
_.bits_per_sample # unused attribute (src/mewline/utils/temporary_fixes.py:31)
106
_.channels # unused attribute (src/mewline/utils/temporary_fixes.py:32)
117
_._pixbuf # unused attribute (src/mewline/utils/temporary_fixes.py:43)
128
_.byte_array # unused attribute (src/mewline/utils/temporary_fixes.py:44)
13-
_.xalign # unused attribute (src/mewline/widgets/dynamic_island/app_launcher.py:52)
9+
_.xalign # unused attribute (src/mewline/widgets/dynamic_island/app_launcher.py:59)
1410
_.xalign # unused attribute (src/mewline/widgets/dynamic_island/clipboard.py:59)
1511
_.xalign # unused attribute (src/mewline/widgets/dynamic_island/emoji.py:57)
1612
_.xalign # unused attribute (src/mewline/widgets/dynamic_island/pawlette_themes.py:81)
1713
_.xalign # unused attribute (src/mewline/widgets/dynamic_island/wallpapers.py:159)
1814
_.toggle_shuffle # unused method (src/mewline/services/mpris.py:87)
1915
_.set_pointing_to # unused method (src/mewline/shared/popover.py:107)
2016
_.set_content # unused method (src/mewline/shared/popover.py:110)
17+
_._unblock_service_updates # unused method (src/mewline/widgets/combined_controls.py:367)
2118
_.show_for_device # unused method (src/mewline/widgets/osd.py:158)
2219
_.get_profile_icon # unused method (src/mewline/services/battery.py:176)
2320
popover_opened # unused function (src/mewline/shared/popover.py:76)
2421
popover_closed # unused function (src/mewline/shared/popover.py:82)
2522
_.stop # unused method (src/mewline/shared/animator.py:174)
2623
_.return_popover_window # unused method (src/mewline/shared/popover.py:60)
27-
_._detach_nav # unused method (src/mewline/widgets/dynamic_island/notifications.py:525)
24+
_._detach_nav # unused method (src/mewline/widgets/dynamic_island/notifications.py:555)

0 commit comments

Comments
 (0)