diff options
author | fiaxh <git@lightrise.org> | 2022-02-14 14:55:59 +0100 |
---|---|---|
committer | fiaxh <git@lightrise.org> | 2022-07-27 20:34:20 +0200 |
commit | 7e7dcedaf31ee35499875491c9f569c575d28435 (patch) | |
tree | 0c5fee2b28baf320775fbc92b3c252e97d9d054f /main/src/ui/util/sizing_bin.vala | |
parent | f25bfb00969a7e09996da2d5500e6718f4cc0148 (diff) | |
download | dino-7e7dcedaf31ee35499875491c9f569c575d28435.tar.gz dino-7e7dcedaf31ee35499875491c9f569c575d28435.zip |
Port from GTK3 to GTK4
Diffstat (limited to 'main/src/ui/util/sizing_bin.vala')
-rw-r--r-- | main/src/ui/util/sizing_bin.vala | 38 |
1 files changed, 20 insertions, 18 deletions
diff --git a/main/src/ui/util/sizing_bin.vala b/main/src/ui/util/sizing_bin.vala index 9c5ff4c7..939022a1 100644 --- a/main/src/ui/util/sizing_bin.vala +++ b/main/src/ui/util/sizing_bin.vala @@ -1,7 +1,7 @@ using Gtk; namespace Dino.Ui { -public class SizingBin : Bin { +public class SizingBin : Widget { public int min_width { get; set; default = -1; } public int target_width { get; set; default = -1; } public int max_width { get; set; default = -1; } @@ -9,27 +9,29 @@ public class SizingBin : Bin { public int target_height { get; set; default = -1; } public int max_height { get; set; default = -1; } - public override void size_allocate(Allocation allocation) { - if (max_height != -1) allocation.height = int.min(allocation.height, max_height); - if (max_width != -1) allocation.width = int.min(allocation.width, max_width); - base.size_allocate(allocation); + construct { + layout_manager = new BinLayout(); } - public override void get_preferred_width(out int minimum_width, out int natural_width) { - base.get_preferred_width(out minimum_width, out natural_width); - if (min_width != -1) minimum_width = int.max(minimum_width, min_width); - if (max_width != -1) natural_width = int.min(natural_width, max_width); - if (target_width != -1) natural_width = int.max(natural_width, target_width); - natural_width = int.max(natural_width, minimum_width); + public override void size_allocate(int width, int height, int baseline) { + if (max_height != -1) height = int.min(height, max_height); + if (max_width != -1) width = int.min(width, max_width); + base.size_allocate(width, height, baseline); } - public override void get_preferred_height_for_width(int width, out int minimum_height, out int natural_height) { - base.get_preferred_height_for_width(width, out minimum_height, out natural_height); - if (min_height != -1) minimum_height = int.max(minimum_height, min_height); - if (max_height != -1) natural_height = int.min(natural_height, max_height); - if (target_height != -1) natural_height = int.max(natural_height, target_height); - natural_height = int.max(natural_height, minimum_height); + public override void measure(Orientation orientation, int for_size, out int minimum, out int natural, out int minimum_baseline, out int natural_baseline) { + base.measure(orientation, for_size, out minimum, out natural, out minimum_baseline, out natural_baseline); + if (orientation == Orientation.HORIZONTAL) { + if (min_width != -1) minimum = int.max(minimum, min_width); + if (max_width != -1) natural = int.min(natural, max_width); + if (target_width != -1) natural = int.max(natural, target_width); + natural = int.max(natural, minimum); + } else { + if (min_height != -1) minimum = int.max(minimum, min_height); + if (max_height != -1) natural = int.min(natural, max_height); + if (target_height != -1) natural = int.max(natural, target_height); + natural = int.max(natural, minimum); + } } - } } |