mirror of
https://github.com/brl/mutter.git
synced 2024-12-24 12:02:04 +00:00
[test-interactive] Add a stage sizing test
Add an interactive stage sizing test to test the interaction of fullscreening/resizing/expanding/shrinking a visible stage.
This commit is contained in:
parent
1117b6a9ac
commit
d42f928c43
@ -47,7 +47,8 @@ UNIT_TESTS = \
|
|||||||
test-cogl-vertex-buffer.c \
|
test-cogl-vertex-buffer.c \
|
||||||
test-bin-layout.c \
|
test-bin-layout.c \
|
||||||
test-flow-layout.c \
|
test-flow-layout.c \
|
||||||
test-box-layout.c
|
test-box-layout.c \
|
||||||
|
test-stage-sizing.c
|
||||||
|
|
||||||
if X11_TESTS
|
if X11_TESTS
|
||||||
UNIT_TESTS += test-pixmap.c
|
UNIT_TESTS += test-pixmap.c
|
||||||
|
113
tests/interactive/test-stage-sizing.c
Normal file
113
tests/interactive/test-stage-sizing.c
Normal file
@ -0,0 +1,113 @@
|
|||||||
|
#include <stdlib.h>
|
||||||
|
#include <gmodule.h>
|
||||||
|
#include <clutter/clutter.h>
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
fullscreen_clicked_cb (ClutterStage *stage)
|
||||||
|
{
|
||||||
|
clutter_stage_set_fullscreen (stage, !clutter_stage_get_fullscreen (stage));
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
resize_clicked_cb (ClutterStage *stage)
|
||||||
|
{
|
||||||
|
clutter_stage_set_user_resizable (stage,
|
||||||
|
!clutter_stage_get_user_resizable (stage));
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
shrink_clicked_cb (ClutterActor *stage)
|
||||||
|
{
|
||||||
|
gfloat width, height;
|
||||||
|
clutter_actor_get_size (stage, &width, &height);
|
||||||
|
clutter_actor_set_size (stage, MAX (0, width - 10.f), MAX (0, height - 10.f));
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
expand_clicked_cb (ClutterActor *stage)
|
||||||
|
{
|
||||||
|
gfloat width, height;
|
||||||
|
clutter_actor_get_size (stage, &width, &height);
|
||||||
|
clutter_actor_set_size (stage, width + 10.f, height + 10.f);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
G_MODULE_EXPORT int
|
||||||
|
test_stage_sizing_main (int argc, char *argv[])
|
||||||
|
{
|
||||||
|
gfloat width;
|
||||||
|
ClutterColor color;
|
||||||
|
ClutterActor *stage, *rect, *label;
|
||||||
|
|
||||||
|
clutter_init (&argc, &argv);
|
||||||
|
|
||||||
|
stage = clutter_stage_get_default ();
|
||||||
|
|
||||||
|
label = clutter_text_new_with_text ("Sans 16", "Toggle fullscreen");
|
||||||
|
clutter_color_from_string (&color, "light red");
|
||||||
|
rect = clutter_rectangle_new_with_color (&color);
|
||||||
|
clutter_actor_set_size (rect,
|
||||||
|
clutter_actor_get_width (label) + 20,
|
||||||
|
clutter_actor_get_height (label) + 20);
|
||||||
|
clutter_container_add (CLUTTER_CONTAINER (stage), rect, label, NULL);
|
||||||
|
clutter_actor_set_position (label, 10, 10);
|
||||||
|
clutter_actor_set_reactive (rect, TRUE);
|
||||||
|
g_signal_connect_swapped (rect, "button-press-event",
|
||||||
|
G_CALLBACK (fullscreen_clicked_cb), stage);
|
||||||
|
width = clutter_actor_get_width (rect);
|
||||||
|
|
||||||
|
label = clutter_text_new_with_text ("Sans 16", "Toggle resizable");
|
||||||
|
clutter_color_from_string (&color, "light green");
|
||||||
|
rect = clutter_rectangle_new_with_color (&color);
|
||||||
|
clutter_actor_set_size (rect,
|
||||||
|
clutter_actor_get_width (label) + 20,
|
||||||
|
clutter_actor_get_height (label) + 20);
|
||||||
|
clutter_container_add (CLUTTER_CONTAINER (stage), rect, label, NULL);
|
||||||
|
clutter_actor_set_x (rect, width);
|
||||||
|
clutter_actor_set_position (label, 10 + width, 10);
|
||||||
|
clutter_actor_set_reactive (rect, TRUE);
|
||||||
|
g_signal_connect_swapped (rect, "button-press-event",
|
||||||
|
G_CALLBACK (resize_clicked_cb), stage);
|
||||||
|
width += clutter_actor_get_width (rect);
|
||||||
|
|
||||||
|
label = clutter_text_new_with_text ("Sans 16", "Shrink");
|
||||||
|
clutter_color_from_string (&color, "light blue");
|
||||||
|
rect = clutter_rectangle_new_with_color (&color);
|
||||||
|
clutter_actor_set_size (rect,
|
||||||
|
clutter_actor_get_width (label) + 20,
|
||||||
|
clutter_actor_get_height (label) + 20);
|
||||||
|
clutter_container_add (CLUTTER_CONTAINER (stage), rect, label, NULL);
|
||||||
|
clutter_actor_set_x (rect, width);
|
||||||
|
clutter_actor_set_position (label, 10 + width, 10);
|
||||||
|
clutter_actor_set_reactive (rect, TRUE);
|
||||||
|
g_signal_connect_swapped (rect, "button-press-event",
|
||||||
|
G_CALLBACK (shrink_clicked_cb), stage);
|
||||||
|
width += clutter_actor_get_width (rect);
|
||||||
|
|
||||||
|
label = clutter_text_new_with_text ("Sans 16", "Expand");
|
||||||
|
clutter_color_from_string (&color, "light yellow");
|
||||||
|
rect = clutter_rectangle_new_with_color (&color);
|
||||||
|
clutter_actor_set_size (rect,
|
||||||
|
clutter_actor_get_width (label) + 20,
|
||||||
|
clutter_actor_get_height (label) + 20);
|
||||||
|
clutter_container_add (CLUTTER_CONTAINER (stage), rect, label, NULL);
|
||||||
|
clutter_actor_set_x (rect, width);
|
||||||
|
clutter_actor_set_position (label, 10 + width, 10);
|
||||||
|
clutter_actor_set_reactive (rect, TRUE);
|
||||||
|
g_signal_connect_swapped (rect, "button-press-event",
|
||||||
|
G_CALLBACK (expand_clicked_cb), stage);
|
||||||
|
width += clutter_actor_get_width (rect);
|
||||||
|
|
||||||
|
clutter_stage_set_minimum_size (CLUTTER_STAGE (stage),
|
||||||
|
width,
|
||||||
|
clutter_actor_get_height (rect));
|
||||||
|
|
||||||
|
clutter_actor_show (stage);
|
||||||
|
|
||||||
|
clutter_main ();
|
||||||
|
|
||||||
|
return EXIT_SUCCESS;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user