Skip to content

Commit b1b5e4a

Browse files
committed
Merge branch 'testing'
2 parents fe530f6 + 17cf4b8 commit b1b5e4a

2 files changed

Lines changed: 674 additions & 672 deletions

File tree

src/views/main_window.py

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -203,10 +203,6 @@ def _load_ui(self) -> None:
203203
self._main_splitter = _require(
204204
self.ui.findChild(QSplitter, "mainSplitter"), "mainSplitter"
205205
)
206-
self._left_splitter = _require(
207-
self.ui.findChild(QSplitter, "leftPanelSplitter"), "leftPanelSplitter"
208-
)
209-
210206
# Merge tab widgets
211207
self._merge_file_list = _require(
212208
self.ui.findChild(QListWidget, "mergeFileList"), "mergeFileList"
@@ -255,6 +251,11 @@ def _setup_merge_tab(self) -> None:
255251

256252
def _connect_signals(self) -> None:
257253
"""Wire UI events to ViewModel slots and ViewModel signals to UI handlers."""
254+
# Tab widget: resize to current tab's content height so shorter tabs
255+
# (Clean) don't show dead space reserved for taller tabs (Merge/Find).
256+
self._tab_widget.currentChanged.connect(self._on_tab_changed)
257+
self._on_tab_changed(self._tab_widget.currentIndex())
258+
258259
# File tree → load file (directories are filtered inside the slot)
259260
self._file_tree_view.clicked.connect(self._on_tree_item_clicked)
260261

@@ -344,6 +345,21 @@ def _connect_signals(self) -> None:
344345

345346
# ---------------------------------------------------------- user actions
346347

348+
def _on_tab_changed(self, index: int) -> None:
349+
"""Cap tab widget height to the current page's content.
350+
351+
QTabWidget internally uses QStackedWidget whose sizeHint() always
352+
returns the max of ALL children — ignoring per-page size policies.
353+
setMaximumHeight is the only reliable way to shrink the widget for
354+
shorter pages (Clean tab) while letting taller pages expand.
355+
"""
356+
page = self._tab_widget.widget(index)
357+
if page is None:
358+
return
359+
tab_bar_h = self._tab_widget.tabBar().sizeHint().height()
360+
page_h = page.sizeHint().height()
361+
self._tab_widget.setMaximumHeight(tab_bar_h + page_h)
362+
347363
def _focus_find_edit(self) -> None:
348364
"""Switch to Find/Replace tab and focus the find field (Ctrl+F target)."""
349365
if self._find_replace_tab_index >= 0:
@@ -555,8 +571,6 @@ def _load_settings(self) -> None:
555571
self.ui.restoreGeometry(geometry)
556572
if main_state := settings.value("splitter/main"):
557573
self._main_splitter.restoreState(main_state)
558-
if left_state := settings.value("splitter/left"):
559-
self._left_splitter.restoreState(left_state)
560574

561575
def _save_settings(self) -> None:
562576
"""Save window geometry and splitter positions to QSettings.
@@ -566,7 +580,6 @@ def _save_settings(self) -> None:
566580
settings = QSettings()
567581
settings.setValue("window/geometry", self.ui.saveGeometry())
568582
settings.setValue("splitter/main", self._main_splitter.saveState())
569-
settings.setValue("splitter/left", self._left_splitter.saveState())
570583

571584
def _apply_preferences(self) -> None:
572585
"""Apply user preferences from QSettings to the editor.

0 commit comments

Comments
 (0)