Use minimum lines to affect minimum size hint

This commit is contained in:
Jakub Trllo 2023-04-08 17:24:07 +02:00
parent 986def10ad
commit e4e6b8dc9a
2 changed files with 27 additions and 4 deletions

View file

@ -360,14 +360,16 @@ class TextWidget(InputWidget):
def _add_inputs_to_layout(self):
multiline = self.entity.multiline
if multiline:
self.input_field = SettingsPlainTextEdit(self.content_widget)
input_field = SettingsPlainTextEdit(self.content_widget)
if self.entity.minimum_lines_count:
input_field.set_minimum_lines(self.entity.minimum_lines_count)
else:
self.input_field = SettingsLineEdit(self.content_widget)
input_field = SettingsLineEdit(self.content_widget)
placeholder_text = self.entity.placeholder_text
if placeholder_text:
self.input_field.setPlaceholderText(placeholder_text)
input_field.setPlaceholderText(placeholder_text)
self.input_field = input_field
self.setFocusProxy(self.input_field)
layout_kwargs = {}

View file

@ -300,11 +300,32 @@ class SettingsLineEdit(PlaceholderLineEdit):
class SettingsPlainTextEdit(QtWidgets.QPlainTextEdit):
focused_in = QtCore.Signal()
_min_lines = 0
def focusInEvent(self, event):
super(SettingsPlainTextEdit, self).focusInEvent(event)
self.focused_in.emit()
def set_minimum_lines(self, lines):
self._min_lines = lines
self.update()
def minimumSizeHint(self):
result = super(SettingsPlainTextEdit, self).minimumSizeHint()
if self._min_lines < 1:
return result
document = self.document()
margins = self.contentsMargins()
d_margin = (
((document.documentMargin() + self.frameWidth()) * 2)
+ margins.top() + margins.bottom()
)
font = document.defaultFont()
font_metrics = QtGui.QFontMetrics(font)
result.setHeight(
d_margin + (font_metrics.lineSpacing() * self._min_lines))
return result
class SettingsToolBtn(ImageButton):
_mask_pixmap = None