Add a MetaScreen:restacked signal and expose MetaWindow.layer
Expose restacking and a window's stack layer to allow a compositor to insert elements into the window stack in the right location. (See Bug 571827 – hide panel when screensaver is active) src/core/stack.h src/include/common.h: Move MetaStackLayer to a public header. src/core/screen.c src/core/screen-private.h src/core/stack.c: Add a ::restacked signal emitted after we finish restracking. src/core/window.h src/include/window.h: Add meta_window_get_layer()
This commit is contained in:
parent
0e256a21a5
commit
a47bb96536
@ -144,6 +144,8 @@ struct _MetaScreen
|
|||||||
struct _MetaScreenClass
|
struct _MetaScreenClass
|
||||||
{
|
{
|
||||||
GObjectClass parent_class;
|
GObjectClass parent_class;
|
||||||
|
|
||||||
|
void (*restacked) (MetaScreen *);
|
||||||
};
|
};
|
||||||
|
|
||||||
MetaScreen* meta_screen_new (MetaDisplay *display,
|
MetaScreen* meta_screen_new (MetaDisplay *display,
|
||||||
@ -229,4 +231,6 @@ gboolean meta_screen_apply_startup_properties (MetaScreen *screen,
|
|||||||
MetaWindow *window);
|
MetaWindow *window);
|
||||||
void meta_screen_composite_all_windows (MetaScreen *screen);
|
void meta_screen_composite_all_windows (MetaScreen *screen);
|
||||||
|
|
||||||
|
void meta_screen_restacked (MetaScreen *screen);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -74,6 +74,15 @@ enum
|
|||||||
PROP_N_WORKSPACES = 1
|
PROP_N_WORKSPACES = 1
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
RESTACKED,
|
||||||
|
|
||||||
|
LAST_SIGNAL
|
||||||
|
};
|
||||||
|
|
||||||
|
static guint screen_signals[LAST_SIGNAL] = { 0 };
|
||||||
|
|
||||||
G_DEFINE_TYPE (MetaScreen, meta_screen, G_TYPE_OBJECT);
|
G_DEFINE_TYPE (MetaScreen, meta_screen, G_TYPE_OBJECT);
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -129,6 +138,15 @@ meta_screen_class_init (MetaScreenClass *klass)
|
|||||||
object_class->set_property = meta_screen_set_property;
|
object_class->set_property = meta_screen_set_property;
|
||||||
object_class->finalize = meta_screen_finalize;
|
object_class->finalize = meta_screen_finalize;
|
||||||
|
|
||||||
|
screen_signals[RESTACKED] =
|
||||||
|
g_signal_new ("restacked",
|
||||||
|
G_TYPE_FROM_CLASS (object_class),
|
||||||
|
G_SIGNAL_RUN_LAST,
|
||||||
|
G_STRUCT_OFFSET (MetaScreenClass, restacked),
|
||||||
|
NULL, NULL,
|
||||||
|
g_cclosure_marshal_VOID__VOID,
|
||||||
|
G_TYPE_NONE, 0);
|
||||||
|
|
||||||
pspec = g_param_spec_int ("n-workspaces",
|
pspec = g_param_spec_int ("n-workspaces",
|
||||||
"N Workspaces",
|
"N Workspaces",
|
||||||
"Number of workspaces",
|
"Number of workspaces",
|
||||||
@ -2997,3 +3015,9 @@ meta_screen_get_active_workspace (MetaScreen *screen)
|
|||||||
{
|
{
|
||||||
return screen->active_workspace;
|
return screen->active_workspace;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
meta_screen_restacked (MetaScreen *screen)
|
||||||
|
{
|
||||||
|
g_signal_emit (screen, screen_signals[RESTACKED], 0);
|
||||||
|
}
|
||||||
|
@ -1287,6 +1287,8 @@ stack_sync_to_server (MetaStack *stack)
|
|||||||
g_array_free (stack->last_root_children_stacked, TRUE);
|
g_array_free (stack->last_root_children_stacked, TRUE);
|
||||||
stack->last_root_children_stacked = root_children_stacked;
|
stack->last_root_children_stacked = root_children_stacked;
|
||||||
|
|
||||||
|
meta_screen_restacked (stack->screen);
|
||||||
|
|
||||||
/* That was scary... */
|
/* That was scary... */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -43,23 +43,6 @@
|
|||||||
|
|
||||||
#include "screen-private.h"
|
#include "screen-private.h"
|
||||||
|
|
||||||
/**
|
|
||||||
* Layers a window can be in.
|
|
||||||
* These MUST be in the order of stacking.
|
|
||||||
*/
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
META_LAYER_DESKTOP = 0,
|
|
||||||
META_LAYER_BOTTOM = 1,
|
|
||||||
META_LAYER_NORMAL = 2,
|
|
||||||
META_LAYER_TOP = 4, /* Same as DOCK; see EWMH and bug 330717 */
|
|
||||||
META_LAYER_DOCK = 4,
|
|
||||||
META_LAYER_FULLSCREEN = 5,
|
|
||||||
META_LAYER_FOCUSED_WINDOW = 6,
|
|
||||||
META_LAYER_OVERRIDE_REDIRECT = 7,
|
|
||||||
META_LAYER_LAST = 8
|
|
||||||
} MetaStackLayer;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A sorted list of windows bearing some level of resemblance to the stack of
|
* A sorted list of windows bearing some level of resemblance to the stack of
|
||||||
* windows on the X server.
|
* windows on the X server.
|
||||||
|
@ -8673,3 +8673,8 @@ meta_window_get_role (MetaWindow *window)
|
|||||||
return window->role;
|
return window->role;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MetaStackLayer
|
||||||
|
meta_window_get_layer (MetaWindow *window)
|
||||||
|
{
|
||||||
|
return window->layer;
|
||||||
|
}
|
||||||
|
@ -289,4 +289,21 @@ struct _MetaButtonLayout
|
|||||||
(ycoord) >= (rect).y && \
|
(ycoord) >= (rect).y && \
|
||||||
(ycoord) < ((rect).y + (rect).height))
|
(ycoord) < ((rect).y + (rect).height))
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Layers a window can be in.
|
||||||
|
* These MUST be in the order of stacking.
|
||||||
|
*/
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
META_LAYER_DESKTOP = 0,
|
||||||
|
META_LAYER_BOTTOM = 1,
|
||||||
|
META_LAYER_NORMAL = 2,
|
||||||
|
META_LAYER_TOP = 4, /* Same as DOCK; see EWMH and bug 330717 */
|
||||||
|
META_LAYER_DOCK = 4,
|
||||||
|
META_LAYER_FULLSCREEN = 5,
|
||||||
|
META_LAYER_FOCUSED_WINDOW = 6,
|
||||||
|
META_LAYER_OVERRIDE_REDIRECT = 7,
|
||||||
|
META_LAYER_LAST = 8
|
||||||
|
} MetaStackLayer;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -97,6 +97,7 @@ GObject *meta_window_get_compositor_private (MetaWindow *window);
|
|||||||
void meta_window_set_compositor_private (MetaWindow *window, GObject *priv);
|
void meta_window_set_compositor_private (MetaWindow *window, GObject *priv);
|
||||||
void meta_window_configure_notify (MetaWindow *window, XConfigureEvent *event);
|
void meta_window_configure_notify (MetaWindow *window, XConfigureEvent *event);
|
||||||
const char *meta_window_get_role (MetaWindow *window);
|
const char *meta_window_get_role (MetaWindow *window);
|
||||||
|
MetaStackLayer meta_window_get_layer (MetaWindow *window);
|
||||||
MetaWindow* meta_window_find_root_ancestor (MetaWindow *window);
|
MetaWindow* meta_window_find_root_ancestor (MetaWindow *window);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user