#include <X11/extensions/Xfixes.h>
#endif
+#define STAGE_X11_IS_MAPPED(s) ((((ClutterStageX11 *) (s))->wm_state & STAGE_X11_WITHDRAWN) == 0)
+
static void clutter_stage_window_iface_init (ClutterStageWindowIface *iface);
G_DEFINE_TYPE_WITH_CODE (ClutterStageX11,
gfloat *natural_width_p)
{
ClutterStageX11 *stage_x11 = CLUTTER_STAGE_X11 (self);
- gboolean resize;
+ gboolean is_fullscreen, resize;
- if (stage_x11->fullscreen_on_map)
+ is_fullscreen = FALSE;
+ g_object_get (G_OBJECT (stage_x11->wrapper),
+ "fullscreen", &is_fullscreen,
+ NULL);
+
+ if (is_fullscreen || stage_x11->fullscreen_on_map)
{
int width;
gfloat *natural_height_p)
{
ClutterStageX11 *stage_x11 = CLUTTER_STAGE_X11 (self);
- gboolean resize;
+ gboolean is_fullscreen, resize;
+
+ is_fullscreen = FALSE;
+ g_object_get (G_OBJECT (stage_x11->wrapper),
+ "fullscreen", &is_fullscreen,
+ NULL);
- if (stage_x11->fullscreen_on_map)
+ if (is_fullscreen || stage_x11->fullscreen_on_map)
{
int height;
ClutterBackendX11 *backend_x11 = stage_x11->backend;
ClutterStage *stage = stage_x11->wrapper;
- if (!stage)
+ if (stage == NULL)
return;
CLUTTER_SET_PRIVATE_FLAGS (stage, CLUTTER_ACTOR_SYNC_MATRICES);
stage_x11->xwin_width = width;
stage_x11->xwin_height = height;
- clutter_actor_set_size (CLUTTER_ACTOR (stage), width, height);
-
- stage_x11->fullscreen_on_map = TRUE;
+ if (!STAGE_X11_IS_MAPPED (stage_x11))
+ stage_x11->fullscreen_on_map = TRUE;
if (stage_x11->xwin != None)
{
}
else
{
- stage_x11->fullscreen_on_map = FALSE;
+ if (!STAGE_X11_IS_MAPPED (stage_x11))
+ stage_x11->fullscreen_on_map = FALSE;
if (stage_x11->xwin != None)
{
}
}
}
+
+ clutter_actor_queue_relayout (CLUTTER_ACTOR (stage));
}
static void
clutter_stage_x11_fix_window_size (stage_x11, -1, -1);
}
-#define STAGE_X11_IS_MAPPED(s) ((((ClutterStageX11 *) (s))->wm_state & STAGE_X11_WITHDRAWN) == 0)
-
static void
update_wm_hints (ClutterStageX11 *stage_x11)
{