This commit is contained in:
team3
2026-10-09 22:13:54 +02:00
parent 59f39729fc
commit 1923567c62
5 changed files with 148 additions and 69 deletions

View File

@@ -1,4 +1,5 @@
import Clutter from 'gi://Clutter';
import GObject from 'gi://GObject';
import Pango from 'gi://Pango';
import St from 'gi://St';
@@ -50,8 +51,19 @@ export function scrollBox(styleClass) {
// Mehrzeiliges Eingabefeld in einem Scrollbereich. Der Scrollbereich ist der sichtbare Rahmen,
// ein Klick in die freie Fläche darunter setzt den Cursor ans Ende. Der Cursor bleibt beim Tippen sichtbar.
// Ein mehrzeiliges Feld ist so hoch wie sein Text. Themes wie Yaru geben StEntry eine min-height.
// Die ersetzt die Mindesthöhe, der Scrollbereich richtet sich aber genau danach: er hielte das
// Feld für schrumpfbar und ließe nichts zu scrollen.
const MultilineEntry = GObject.registerClass(
class MultilineEntry extends St.Entry {
vfunc_get_preferred_height(forWidth) {
const [, natural] = super.vfunc_get_preferred_height(forWidth);
return [natural, natural];
}
});
export function multilineEntry(text, styleClass, scrollClass, hint = '') {
const entry = new St.Entry({can_focus: true, text, hint_text: hint, style_class: `${styleClass} multiline`, x_expand: true});
const entry = new MultilineEntry({can_focus: true, text, hint_text: hint, style_class: `${styleClass} multiline`, x_expand: true});
const clutterText = entry.clutter_text;
clutterText.single_line_mode = false;
clutterText.line_wrap = true;