From 6da67582635476c239a2edda196017f5b5b83a23 Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Wed, 26 Oct 2016 21:25:47 +0200 Subject: [PATCH] Improve FilenamePrompt widget sizing --- qutebrowser/mainwindow/mainwindow.py | 20 ++++++++++---------- qutebrowser/mainwindow/prompt.py | 14 ++++---------- 2 files changed, 14 insertions(+), 20 deletions(-) diff --git a/qutebrowser/mainwindow/mainwindow.py b/qutebrowser/mainwindow/mainwindow.py index c38ff1548..0880c3389 100644 --- a/qutebrowser/mainwindow/mainwindow.py +++ b/qutebrowser/mainwindow/mainwindow.py @@ -186,7 +186,7 @@ class MainWindow(QWidget): self._prompt_container = prompt.PromptContainer(self.win_id, self) self._add_overlay(self._prompt_container, self._prompt_container.update_geometry, - centered=True) + centered=True, padding=10) objreg.register('prompt-container', self._prompt_container, scope='window', window=self.win_id) self._prompt_container.hide() @@ -213,17 +213,17 @@ class MainWindow(QWidget): objreg.get("app").new_window.emit(self) - def _add_overlay(self, widget, signal, *, centered=False): - self._overlays.append((widget, signal, centered)) + def _add_overlay(self, widget, signal, *, centered=False, padding=0): + self._overlays.append((widget, signal, centered, padding)) - def _update_overlay_geometry(self, widget=None, centered=None): + def _update_overlay_geometry(self, widget=None, centered=None, padding=0): """Reposition/resize the given overlay. If no widget is given, reposition/resize all overlays. """ if widget is None: - for w, _signal, centered in self._overlays: - self._update_overlay_geometry(w, centered) + for w, _signal, centered, padding in self._overlays: + self._update_overlay_geometry(w, centered, padding) return assert centered is not None @@ -233,8 +233,8 @@ class MainWindow(QWidget): size_hint = widget.sizeHint() if widget.sizePolicy().horizontalPolicy() == QSizePolicy.Expanding: - width = self.width() - left = 0 + width = self.width() - 2 * padding + left = padding else: width = size_hint.width() left = (self.width() - size_hint.width()) / 2 if centered else 0 @@ -363,10 +363,10 @@ class MainWindow(QWidget): def _connect_overlay_signals(self): """Connect the resize signal and resize everything once.""" - for widget, signal, centered in self._overlays: + for widget, signal, centered, padding in self._overlays: signal.connect( functools.partial(self._update_overlay_geometry, widget, - centered)) + centered, padding)) self._update_overlay_geometry(widget, centered) def _set_default_geometry(self): diff --git a/qutebrowser/mainwindow/prompt.py b/qutebrowser/mainwindow/prompt.py index ce9542d0a..4e4b0dcc0 100644 --- a/qutebrowser/mainwindow/prompt.py +++ b/qutebrowser/mainwindow/prompt.py @@ -26,7 +26,8 @@ import collections import sip from PyQt5.QtCore import pyqtSlot, pyqtSignal, Qt, QTimer from PyQt5.QtWidgets import (QWidget, QGridLayout, QVBoxLayout, QLineEdit, - QLabel, QWidgetItem, QFileSystemModel, QTreeView) + QLabel, QWidgetItem, QFileSystemModel, QTreeView, + QSizePolicy) from qutebrowser.config import style from qutebrowser.utils import usertypes, log, utils, qtutils, objreg @@ -168,6 +169,7 @@ class PromptContainer(QWidget): 'aborted')) modeman.enter(self._win_id, prompt.KEY_MODE, 'question asked') self._prompt = prompt + self.setSizePolicy(self._prompt.sizePolicy()) self._layout.addWidget(self._prompt) self._prompt.show() self.show() @@ -470,15 +472,7 @@ class FilenamePrompt(_BasePrompt): self._lineedit.setText(question.default) self.setFocusProxy(self._lineedit) self._init_key_label() - - def sizeHint(self): - """Get some more width. - - FIXME do this properly... - """ - orig = super().sizeHint() - orig.setWidth(orig.width() * 3) - return orig + self.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred) @pyqtSlot(str) def _set_fileview_root(self, path):