[gtk+/wip/csoriano/pathbar-bin-view-window] gtkpathbar: minimum size
- From: Carlos Soriano Sánchez <csoriano src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/wip/csoriano/pathbar-bin-view-window] gtkpathbar: minimum size
- Date: Wed, 10 Aug 2016 20:14:54 +0000 (UTC)
commit dea27ade7c81650f7c846b3adc7489240f99c865
Author: Carlos Soriano <csoriano gnome org>
Date: Wed Aug 10 22:14:34 2016 +0200
gtkpathbar: minimum size
gtk/gtkpathbar.c | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 64 insertions(+), 0 deletions(-)
---
diff --git a/gtk/gtkpathbar.c b/gtk/gtkpathbar.c
index 4d0b1aa..5f22f54 100644
--- a/gtk/gtkpathbar.c
+++ b/gtk/gtkpathbar.c
@@ -889,6 +889,68 @@ get_request_mode (GtkWidget *self)
return GTK_SIZE_REQUEST_WIDTH_FOR_HEIGHT;
}
+static void
+get_preferred_width (GtkWidget *widget,
+ gint *minimum_width,
+ gint *natural_width)
+{
+ GtkPathBar *self = GTK_PATH_BAR (widget);
+ GtkWidget *root_button;
+ GtkWidget *tail_button;
+ GtkWidget *tail_overflow_button;
+ GtkWidget *root_overflow_button;
+ GtkWidget *path_bar_container;
+ gint widget_minimum_width;
+ gint widget_natural_width;
+
+g_print ("#################WE ARE GOING HERE\n");
+ /* We want to reserve space for the root and tail too, so we don't enter in
+ * loops when the path has only root, tail and one item in the path bar container
+ */
+ get_path_bar_widgets (GTK_PATH_BAR (self), NULL, &root_overflow_button,
+ &tail_overflow_button, &root_button, &tail_button,
+ &path_bar_container, TRUE);
+
+ gtk_widget_get_preferred_width (root_overflow_button,
+ &widget_minimum_width,
+ &widget_natural_width);
+ *minimum_width += widget_minimum_width;
+ *natural_width += widget_natural_width;
+
+ gtk_widget_get_preferred_width (root_button,
+ &widget_minimum_width,
+ &widget_natural_width);
+ *minimum_width += widget_minimum_width;
+ *natural_width += widget_natural_width;
+
+ gtk_widget_get_preferred_width (path_bar_container,
+ &widget_minimum_width,
+ &widget_natural_width);
+ *minimum_width += widget_minimum_width;
+ *natural_width += widget_natural_width;
+
+ gtk_widget_get_preferred_width (tail_overflow_button,
+ &widget_minimum_width,
+ &widget_natural_width);
+ *minimum_width += widget_minimum_width;
+ *natural_width += widget_natural_width;
+
+ gtk_widget_get_preferred_width (tail_button,
+ &widget_minimum_width,
+ &widget_natural_width);
+ *minimum_width += widget_minimum_width;
+ *natural_width += widget_natural_width;
+}
+
+static void
+get_preferred_width_for_height (GtkWidget *widget,
+ gint height,
+ gint *minimum_width_out,
+ gint *natural_width_out)
+{
+ get_preferred_width (widget, minimum_width_out, natural_width_out);
+}
+
static gboolean
set_real_inverted (GtkPathBar *self)
{
@@ -932,6 +994,8 @@ gtk_path_bar_class_init (GtkPathBarClass *klass)
object_class->set_property = gtk_path_bar_set_property;
widget_class->get_request_mode = get_request_mode;
+ widget_class->get_preferred_width = get_preferred_width;
+ widget_class->get_preferred_width_for_height = get_preferred_width_for_height;
widget_class->size_allocate = gtk_path_bar_size_allocate;
/**
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]