Improve FilenamePrompt widget sizing

This commit is contained in:
Florian Bruhin 2016-10-26 21:25:47 +02:00
parent 741ecac9ef
commit 6da6758263
2 changed files with 14 additions and 20 deletions

View File

@ -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):

View File

@ -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):