Fix QV widget not correctly parented when switching layout from one with QV closed to one with QV open

This commit is contained in:
Kovid Goyal 2024-01-05 20:28:21 +05:30
parent a2c105ea4d
commit becdf4ef9f
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
2 changed files with 21 additions and 1 deletions

View File

@ -117,6 +117,9 @@ class ShowQuickviewAction(InterfaceAction):
self.qv_button.blockSignals(True) self.qv_button.blockSignals(True)
self.qv_button.set_state_to_hide() self.qv_button.set_state_to_hide()
self.qv_button.blockSignals(False) self.qv_button.blockSignals(False)
self._create_current_instance()
def _create_current_instance(self):
index = self.gui.library_view.currentIndex() index = self.gui.library_view.currentIndex()
self.current_instance = Quickview(self.gui, index, self.qaction.shortcut(), self.current_instance = Quickview(self.gui, index, self.qaction.shortcut(),
focus_booklist_shortcut=self.focus_bl_action.shortcut()) focus_booklist_shortcut=self.focus_bl_action.shortcut())

View File

@ -396,9 +396,26 @@ class CentralContainer(QWidget):
layout = Layout.wide if is_wide else Layout.narrow layout = Layout.wide if is_wide else Layout.narrow
if layout is self.layout: if layout is self.layout:
return False return False
ss = self.serialized_settings()
before = ss[self.layout.name + '_visibility']
after = ss[layout.name + '_visibility']
gui.book_details.vertical = is_wide gui.book_details.vertical = is_wide
self.layout = layout self.layout = layout
self.write_settings() self.write_settings()
# apply visibility changes by clicking buttons to ensure button
# state is correct and also deals with the case of the QV widget not
# being initialised
changes = set()
if before != after:
for k in before:
if before[k] != after[k]:
changes.add(k)
setattr(self.is_visible, k, before[k])
if changes:
for k in changes:
button = getattr(self, k + '_button')
button.click()
else:
self.relayout() self.relayout()
return True return True