aboutsummaryrefslogtreecommitdiff
path: root/main/src/ui/widgets
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/ui/widgets')
-rw-r--r--main/src/ui/widgets/natural_size_increase.vala27
1 files changed, 21 insertions, 6 deletions
diff --git a/main/src/ui/widgets/natural_size_increase.vala b/main/src/ui/widgets/natural_size_increase.vala
index 2b04d748..3aad486a 100644
--- a/main/src/ui/widgets/natural_size_increase.vala
+++ b/main/src/ui/widgets/natural_size_increase.vala
@@ -1,21 +1,31 @@
using Gtk;
public class Dino.Ui.NaturalSizeIncrease : Gtk.Widget {
- public int min_natural_height { get; set; default = -1; }
- public int min_natural_width { get; set; default = -1; }
+ public uint min_natural_height { get; set; default = 0; }
+ public uint min_natural_width { get; set; default = 0; }
construct {
this.notify.connect(queue_resize);
}
+ public override void compute_expand_internal(out bool hexpand, out bool vexpand) {
+ hexpand = false;
+ vexpand = false;
+ Widget child = get_first_child();
+ while (child != null) {
+ hexpand = hexpand || child.compute_expand(Orientation.HORIZONTAL);
+ vexpand = vexpand || child.compute_expand(Orientation.VERTICAL);
+ child = child.get_next_sibling();
+ }
+ }
+
public override void measure(Orientation orientation, int for_size, out int minimum, out int natural, out int minimum_baseline, out int natural_baseline) {
minimum = 0;
if (orientation == Orientation.HORIZONTAL) {
- natural = min_natural_width;
+ natural = (int) min_natural_width;
} else {
- natural = min_natural_height;
+ natural = (int) min_natural_height;
}
- natural = int.max(0, natural);
minimum_baseline = -1;
natural_baseline = -1;
Widget child = get_first_child();
@@ -25,7 +35,7 @@ public class Dino.Ui.NaturalSizeIncrease : Gtk.Widget {
int child_nat = 0;
int child_min_baseline = -1;
int child_nat_baseline = -1;
- child.measure(orientation, -1, out child_min, out child_nat, out child_min_baseline, out child_nat_baseline);
+ child.measure(orientation, for_size, out child_min, out child_nat, out child_min_baseline, out child_nat_baseline);
minimum = int.max(minimum, child_min);
natural = int.max(natural, child_nat);
if (child_min_baseline > 0) {
@@ -56,4 +66,9 @@ public class Dino.Ui.NaturalSizeIncrease : Gtk.Widget {
}
return SizeRequestMode.CONSTANT_SIZE;
}
+
+ public override void dispose() {
+ var child = this.get_first_child();
+ if (child != null) child.unparent();
+ }
} \ No newline at end of file