A Fix which doesn't let popups be in background when UI scale is changed

This commit is contained in:
Vishal 2025-08-06 17:55:51 +05:30 committed by GitHub
parent 51cccdd228
commit 6242ba4f59
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -46,6 +46,13 @@ HEADERS = {
PLUGIN_DIRECTORY = _env["python_directory_user"] PLUGIN_DIRECTORY = _env["python_directory_user"]
loop = babase._asyncio._asyncio_event_loop loop = babase._asyncio._asyncio_event_loop
open_popups = []
def _add_popup(popup): open_popups.append(popup)
def _remove_popup(popup):
try: open_popups.remove(popup)
except ValueError: pass
def _uiscale(): return bui.app.ui_v1.uiscale def _uiscale(): return bui.app.ui_v1.uiscale
def _regexp_friendly_class_name_shortcut(string): return string.replace(".", "\\.") def _regexp_friendly_class_name_shortcut(string): return string.replace(".", "\\.")
@ -1036,6 +1043,8 @@ class ChangelogWindow(popup.PopupWindow):
scale_origin_stack_offset=self.scale_origin scale_origin_stack_offset=self.scale_origin
) )
_add_popup(self)
bui.textwidget( bui.textwidget(
parent=self._root_widget, parent=self._root_widget,
position=(width * 0.49, height * 0.87), position=(width * 0.49, height * 0.87),
@ -1110,6 +1119,7 @@ class ChangelogWindow(popup.PopupWindow):
def _back(self) -> None: def _back(self) -> None:
bui.getsound('swish').play() bui.getsound('swish').play()
_remove_popup(self)
bui.containerwidget(edit=self._root_widget, transition='out_scale') bui.containerwidget(edit=self._root_widget, transition='out_scale')
@ -1135,6 +1145,8 @@ class AuthorsWindow(popup.PopupWindow):
scale_origin_stack_offset=self.scale_origin scale_origin_stack_offset=self.scale_origin
) )
_add_popup(self)
pos = height * 0.9 pos = height * 0.9
bui.textwidget( bui.textwidget(
parent=self._root_widget, parent=self._root_widget,
@ -1164,7 +1176,7 @@ class AuthorsWindow(popup.PopupWindow):
parent=self._root_widget, parent=self._root_widget,
size=(width * 0.8, height * 0.75), size=(width * 0.8, height * 0.75),
position=(width * 0.1, height * 0.1) position=(width * 0.1, height * 0.1)
) )
self._columnwidget = bui.columnwidget( self._columnwidget = bui.columnwidget(
parent=self._scrollwidget, parent=self._scrollwidget,
border=1, border=1,
@ -1200,6 +1212,7 @@ class AuthorsWindow(popup.PopupWindow):
def _back(self) -> None: def _back(self) -> None:
bui.getsound('swish').play() bui.getsound('swish').play()
_remove_popup(self)
bui.containerwidget(edit=self._root_widget, transition='out_scale') bui.containerwidget(edit=self._root_widget, transition='out_scale')
@ -1261,6 +1274,8 @@ class PluginWindow(popup.PopupWindow):
scale_origin_stack_offset=self.scale_origin scale_origin_stack_offset=self.scale_origin
) )
_add_popup(self)
i = self.plugins_list.index(self.plugin) i = self.plugins_list.index(self.plugin)
self.p_n_plugins = [ self.p_n_plugins = [
self.plugins_list[i-1] if (i-1 > -1) else None, self.plugins_list[i-1] if (i-1 > -1) else None,
@ -1528,10 +1543,12 @@ class PluginWindow(popup.PopupWindow):
) )
def _ok(self) -> None: def _ok(self) -> None:
_remove_popup(self)
bui.containerwidget(edit=self._root_widget, transition='out_scale') bui.containerwidget(edit=self._root_widget, transition='out_scale')
def _cancel(self) -> None: def _cancel(self) -> None:
bui.getsound('swish').play() bui.getsound('swish').play()
_remove_popup(self)
bui.containerwidget(edit=self._root_widget, transition='out_scale') bui.containerwidget(edit=self._root_widget, transition='out_scale')
def button(fn): def button(fn):
@ -1555,6 +1572,7 @@ class PluginWindow(popup.PopupWindow):
def show_previous_plugin(self): def show_previous_plugin(self):
bui.containerwidget(edit=self._root_widget, transition='out_right') bui.containerwidget(edit=self._root_widget, transition='out_right')
_remove_popup(self)
PluginWindow( PluginWindow(
self.p_n_plugins[0], self.p_n_plugins[0],
self._root_widget, self._root_widget,
@ -1565,6 +1583,7 @@ class PluginWindow(popup.PopupWindow):
def show_next_plugin(self): def show_next_plugin(self):
bui.containerwidget(edit=self._root_widget, transition='out_left') bui.containerwidget(edit=self._root_widget, transition='out_left')
_remove_popup(self)
PluginWindow( PluginWindow(
self.p_n_plugins[1], self.p_n_plugins[1],
self._root_widget, self._root_widget,
@ -1598,7 +1617,7 @@ class PluginWindow(popup.PopupWindow):
bui.getsound('shieldUp').play() bui.getsound('shieldUp').play()
class PluginSourcesWindow(popup.PopupWindow): class PluginCustomSourcesWindow(popup.PopupWindow):
def __init__(self, origin_widget): def __init__(self, origin_widget):
self.selected_source = None self.selected_source = None
@ -1617,6 +1636,8 @@ class PluginSourcesWindow(popup.PopupWindow):
on_cancel_call=self._ok on_cancel_call=self._ok
) )
_add_popup(self)
bui.textwidget( bui.textwidget(
parent=self._root_widget, parent=self._root_widget,
position=(155, 300), position=(155, 300),
@ -1780,6 +1801,7 @@ class PluginSourcesWindow(popup.PopupWindow):
def _ok(self) -> None: def _ok(self) -> None:
bui.getsound('swish').play() bui.getsound('swish').play()
_remove_popup(self)
bui.containerwidget(edit=self._root_widget, transition='out_scale') bui.containerwidget(edit=self._root_widget, transition='out_scale')
@ -1814,10 +1836,11 @@ class PluginCategoryWindow(popup.PopupMenuWindow):
def show_sources_window(self): def show_sources_window(self):
self._ok() self._ok()
PluginSourcesWindow(origin_widget=self.root_widget) PluginCustomSourcesWindow(origin_widget=self.root_widget)
def _ok(self) -> None: def _ok(self) -> None:
bui.getsound('swish').play() bui.getsound('swish').play()
_remove_popup(self)
bui.containerwidget(edit=self.root_widget, transition='out_scale') bui.containerwidget(edit=self.root_widget, transition='out_scale')
@ -1833,6 +1856,8 @@ class PluginManagerWindow(bui.MainWindow):
self.plugins_in_current_view = {} self.plugins_in_current_view = {}
self.selected_alphabet_order = 'a_z' self.selected_alphabet_order = 'a_z'
self.alphabet_order_selection_button = None self.alphabet_order_selection_button = None
global open_popups
open_popups = []
loop.create_task(self.draw_index()) loop.create_task(self.draw_index())
@ -1923,6 +1948,12 @@ class PluginManagerWindow(bui.MainWindow):
@override @override
def get_main_window_state(self) -> bui.MainWindowState: def get_main_window_state(self) -> bui.MainWindowState:
# Support recreating our window for back/refresh purposes. # Support recreating our window for back/refresh purposes.
global open_popups
print(open_popups)
for popup in open_popups:
try:
bui.containerwidget(edit=popup._root_widget, transition='out_scale')
except: pass
cls = type(self) cls = type(self)
return bui.BasicMainWindowState( return bui.BasicMainWindowState(
create_call=lambda transition, origin_widget: cls( create_call=lambda transition, origin_widget: cls(
@ -2036,7 +2067,9 @@ class PluginManagerWindow(bui.MainWindow):
text_scale=0.6 text_scale=0.6
) )
bui.buttonwidget( bui.buttonwidget(
edit=b, on_activate_call=lambda: self.show_categories_window(source=b)), edit=b,
on_activate_call=lambda: self.show_categories_window(source=b)
)
else: else:
b = self.category_selection_button b = self.category_selection_button
bui.buttonwidget( bui.buttonwidget(
@ -2380,6 +2413,7 @@ class PluginManagerSettingsWindow(popup.PopupWindow):
if _uiscale() is babase.UIScale.MEDIUM else 1.0), if _uiscale() is babase.UIScale.MEDIUM else 1.0),
scale_origin_stack_offset=self.scale_origin scale_origin_stack_offset=self.scale_origin
) )
_add_popup(self)
pos = height * 0.9 pos = height * 0.9
setting_title = "Settings" setting_title = "Settings"
bui.textwidget( bui.textwidget(
@ -2600,6 +2634,7 @@ class PluginManagerSettingsWindow(popup.PopupWindow):
def _ok(self) -> None: def _ok(self) -> None:
bui.getsound('swish').play() bui.getsound('swish').play()
_remove_popup(self)
bui.containerwidget(edit=self._root_widget, transition='out_scale') bui.containerwidget(edit=self._root_widget, transition='out_scale')