summaryrefslogtreecommitdiffstats
path: root/src/shell-square-bin.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/shell-square-bin.c')
-rw-r--r--src/shell-square-bin.c43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/shell-square-bin.c b/src/shell-square-bin.c
new file mode 100644
index 0000000..06587fb
--- /dev/null
+++ b/src/shell-square-bin.c
@@ -0,0 +1,43 @@
+#include "config.h"
+
+#include "shell-square-bin.h"
+
+struct _ShellSquareBin
+{
+ /*< private >*/
+ StBin parent_instance;
+};
+
+G_DEFINE_TYPE (ShellSquareBin, shell_square_bin, ST_TYPE_BIN);
+
+static void
+shell_square_bin_get_preferred_width (ClutterActor *actor,
+ float for_height,
+ float *min_width_p,
+ float *natural_width_p)
+{
+ float min_width, nat_width;
+
+ /* Return the actual height to keep the squared aspect */
+ clutter_actor_get_preferred_height (actor, -1,
+ &min_width, &nat_width);
+
+ if (min_width_p)
+ *min_width_p = min_width;
+
+ if (natural_width_p)
+ *natural_width_p = nat_width;
+}
+
+static void
+shell_square_bin_init (ShellSquareBin *self)
+{
+}
+
+static void
+shell_square_bin_class_init (ShellSquareBinClass *klass)
+{
+ ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass);
+
+ actor_class->get_preferred_width = shell_square_bin_get_preferred_width;
+}