slider: Request a size

Sliders (and level bars) currently don't request any size, so it's
up to the caller (or stylesheet) to explicitly set a size big
enough to fit the bar/handle.

That's rather unexpected, we should request the size we need ourselves.

Closes https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/7133

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2994>
This commit is contained in:
Florian Müllner
2023-10-26 13:39:38 +02:00
committed by Marge Bot
parent a6706bd2ca
commit 99d49f787b
2 changed files with 32 additions and 0 deletions

View File

@ -259,6 +259,26 @@ export const BarLevel = GObject.registerClass({
cr.$dispose();
}
vfunc_get_preferred_height(_forWidth) {
const themeNode = this.get_theme_node();
const height = this._getPreferredHeight();
return themeNode.adjust_preferred_height(height, height);
}
vfunc_get_preferred_width(_forHeight) {
const themeNode = this.get_theme_node();
const width = this._getPreferredWidth();
return themeNode.adjust_preferred_width(width, width);
}
_getPreferredHeight() {
return this._barLevelHeight + this._barLevelBorderWidth;
}
_getPreferredWidth() {
return this._overdriveSeparatorWidth + this._barLevelBorderWidth;
}
_getCurrentValue() {
return this._value;
}