keyboard: Request a bigger size in portrait orientation
In portrait orientation, we set the height to the preferred height for the monitor width (or, if smaller, a third o the screen height). However as the forWidth currently doesn't make a difference, the height is effectively controlled by the natural height of the keys - which is rather small. Address this by making AspectContainer request an appropriate preferred size based on the fixed ratio. https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2349
This commit is contained in:
parent
d26b320ab7
commit
d76c219026
@ -61,6 +61,24 @@ class AspectContainer extends St.Widget {
|
||||
this.queue_relayout();
|
||||
}
|
||||
|
||||
vfunc_get_preferred_width(forHeight) {
|
||||
let [min, nat] = super.vfunc_get_preferred_width(forHeight);
|
||||
|
||||
if (forHeight > 0)
|
||||
nat = forHeight * this._ratio;
|
||||
|
||||
return [min, nat];
|
||||
}
|
||||
|
||||
vfunc_get_preferred_height(forWidth) {
|
||||
let [min, nat] = super.vfunc_get_preferred_height(forWidth);
|
||||
|
||||
if (forWidth > 0)
|
||||
nat = forWidth / this._ratio;
|
||||
|
||||
return [min, nat];
|
||||
}
|
||||
|
||||
vfunc_allocate(box, flags) {
|
||||
if (box.get_width() > 0 && box.get_height() > 0) {
|
||||
let sizeRatio = box.get_width() / box.get_height();
|
||||
@ -1609,7 +1627,8 @@ class Keyboard extends St.BoxLayout {
|
||||
* we allow the OSK being smaller than 1/3rd of the monitor height
|
||||
* there.
|
||||
*/
|
||||
const [, natHeight] = this.get_preferred_height(monitor.width);
|
||||
const forWidth = this.get_theme_node().adjust_for_width(monitor.width);
|
||||
const [, natHeight] = this.get_preferred_height(forWidth);
|
||||
this.height = Math.min(maxHeight, natHeight);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user