From 8307b546b771ba15a021e117d2da38583615d8d5 Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Mon, 9 Mar 2015 19:34:31 +0100 Subject: [PATCH] Adjust prompt size hint based on content. See #26. Fixes #506. Related to 06cc982ab51cc9e3142765f6429fdfa5869664b4. --- qutebrowser/mainwindow/statusbar/prompt.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/qutebrowser/mainwindow/statusbar/prompt.py b/qutebrowser/mainwindow/statusbar/prompt.py index 7e1296141..3b6f211ec 100644 --- a/qutebrowser/mainwindow/statusbar/prompt.py +++ b/qutebrowser/mainwindow/statusbar/prompt.py @@ -21,7 +21,8 @@ import functools -from PyQt5.QtWidgets import QHBoxLayout, QWidget, QLineEdit +from PyQt5.QtCore import QSize +from PyQt5.QtWidgets import QHBoxLayout, QWidget, QLineEdit, QSizePolicy from qutebrowser.mainwindow.statusbar import textbase, prompter from qutebrowser.utils import objreg, utils @@ -35,6 +36,16 @@ class PromptLineEdit(misc.MinimalLineEditMixin, QLineEdit): def __init__(self, parent=None): QLineEdit.__init__(self, parent) misc.MinimalLineEditMixin.__init__(self) + self.textChanged.connect(self.updateGeometry) + + def sizeHint(self): + """Dynamically calculate the needed size.""" + height = super().sizeHint().height() + text = self.text() + if not text: + text = 'x' + width = self.fontMetrics().width(text) + return QSize(width, height) class Prompt(QWidget): @@ -58,6 +69,8 @@ class Prompt(QWidget): self._hbox.addWidget(self.txt) self.lineedit = PromptLineEdit() + self.lineedit.setSizePolicy(QSizePolicy.MinimumExpanding, + QSizePolicy.Fixed) self._hbox.addWidget(self.lineedit) prompter_obj = prompter.Prompter(win_id)