[6fc8f95bc6465849249d974d53eecc56c00ffda0fc3c7024bfa5b8e4d794b072/gnome-3-36] keyboard: Request a bigger size in portrait orientation



commit d76c2190263b80c4fd9697e3008282a3710c0f19
Author: Florian Müllner <fmuellner gnome org>
Date:   Sat Jul 4 02:36:10 2020 +0200

    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

 js/ui/keyboard.js | 21 ++++++++++++++++++++-
 1 file changed, 20 insertions(+), 1 deletion(-)
---
diff --git a/js/ui/keyboard.js b/js/ui/keyboard.js
index a3a30c0234..58e857f19c 100644
--- a/js/ui/keyboard.js
+++ b/js/ui/keyboard.js
@@ -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);
         }
     }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]