wayland: Add MetaWaylandSurface::geometry-changed signal
Abstract this instead of having callers connect to notify:: signals on the surface actor.
This commit is contained in:
parent
70036429bd
commit
b12c92e206
@ -664,16 +664,7 @@ meta_pointer_confinement_wayland_maybe_warp (MetaPointerConfinementWayland *self
|
||||
}
|
||||
|
||||
static void
|
||||
surface_actor_allocation_notify (MetaSurfaceActorWayland *surface_actor,
|
||||
GParamSpec *pspec,
|
||||
MetaPointerConfinementWayland *self)
|
||||
{
|
||||
meta_pointer_confinement_wayland_maybe_warp (self);
|
||||
}
|
||||
|
||||
static void
|
||||
surface_actor_position_notify (MetaSurfaceActorWayland *surface_actor,
|
||||
GParamSpec *pspec,
|
||||
surface_actor_geometry_changed (MetaSurfaceActorWayland *surface_actor,
|
||||
MetaPointerConfinementWayland *self)
|
||||
{
|
||||
meta_pointer_confinement_wayland_maybe_warp (self);
|
||||
@ -700,13 +691,8 @@ meta_pointer_confinement_wayland_new (MetaWaylandPointerConstraint *constraint)
|
||||
|
||||
surface = meta_wayland_pointer_constraint_get_surface (constraint);
|
||||
g_signal_connect_object (meta_wayland_surface_get_actor (surface),
|
||||
"notify::allocation",
|
||||
G_CALLBACK (surface_actor_allocation_notify),
|
||||
confinement,
|
||||
0);
|
||||
g_signal_connect_object (meta_wayland_surface_get_actor (surface),
|
||||
"notify::position",
|
||||
G_CALLBACK (surface_actor_position_notify),
|
||||
"geometry-changed",
|
||||
G_CALLBACK (surface_actor_geometry_changed),
|
||||
confinement,
|
||||
0);
|
||||
if (surface->window)
|
||||
|
@ -105,6 +105,7 @@ enum {
|
||||
SURFACE_CONFIGURE,
|
||||
SURFACE_SHORTCUTS_INHIBITED,
|
||||
SURFACE_SHORTCUTS_RESTORED,
|
||||
SURFACE_GEOMETRY_CHANGED,
|
||||
N_SURFACE_SIGNALS
|
||||
};
|
||||
|
||||
@ -1237,7 +1238,7 @@ surface_actor_mapped_notify (MetaSurfaceActorWayland *surface_actor,
|
||||
GParamSpec *pspec,
|
||||
MetaWaylandSurface *surface)
|
||||
{
|
||||
meta_wayland_surface_update_outputs_recursively (surface);
|
||||
g_signal_emit (surface, surface_signals[SURFACE_GEOMETRY_CHANGED], 0);
|
||||
}
|
||||
|
||||
static void
|
||||
@ -1245,7 +1246,7 @@ surface_actor_allocation_notify (MetaSurfaceActorWayland *surface_actor,
|
||||
GParamSpec *pspec,
|
||||
MetaWaylandSurface *surface)
|
||||
{
|
||||
meta_wayland_surface_update_outputs_recursively (surface);
|
||||
g_signal_emit (surface, surface_signals[SURFACE_GEOMETRY_CHANGED], 0);
|
||||
}
|
||||
|
||||
static void
|
||||
@ -1253,7 +1254,7 @@ surface_actor_position_notify (MetaSurfaceActorWayland *surface_actor,
|
||||
GParamSpec *pspec,
|
||||
MetaWaylandSurface *surface)
|
||||
{
|
||||
meta_wayland_surface_update_outputs_recursively (surface);
|
||||
g_signal_emit (surface, surface_signals[SURFACE_GEOMETRY_CHANGED], 0);
|
||||
}
|
||||
|
||||
static void
|
||||
@ -1536,6 +1537,10 @@ static void
|
||||
meta_wayland_surface_init (MetaWaylandSurface *surface)
|
||||
{
|
||||
surface->pending = g_object_new (META_TYPE_WAYLAND_PENDING_STATE, NULL);
|
||||
|
||||
g_signal_connect (surface, "geometry-changed",
|
||||
G_CALLBACK (meta_wayland_surface_update_outputs_recursively),
|
||||
NULL);
|
||||
}
|
||||
|
||||
static void
|
||||
@ -1582,6 +1587,13 @@ meta_wayland_surface_class_init (MetaWaylandSurfaceClass *klass)
|
||||
0, NULL, NULL,
|
||||
g_cclosure_marshal_VOID__VOID,
|
||||
G_TYPE_NONE, 0);
|
||||
surface_signals[SURFACE_GEOMETRY_CHANGED] =
|
||||
g_signal_new ("geometry-changed",
|
||||
G_TYPE_FROM_CLASS (object_class),
|
||||
G_SIGNAL_RUN_LAST,
|
||||
0, NULL, NULL,
|
||||
g_cclosure_marshal_VOID__VOID,
|
||||
G_TYPE_NONE, 0);
|
||||
}
|
||||
|
||||
static void
|
||||
@ -1795,3 +1807,9 @@ meta_wayland_surface_get_actor (MetaWaylandSurface *surface)
|
||||
{
|
||||
return surface->surface_actor;
|
||||
}
|
||||
|
||||
void
|
||||
meta_wayland_surface_notify_geometry_changed (MetaWaylandSurface *surface)
|
||||
{
|
||||
g_signal_emit (surface, surface_signals[SURFACE_GEOMETRY_CHANGED], 0);
|
||||
}
|
||||
|
@ -305,4 +305,6 @@ gboolean meta_wayland_surface_is_shortcuts_inhibited (MetaWaylandSurf
|
||||
|
||||
MetaSurfaceActor * meta_wayland_surface_get_actor (MetaWaylandSurface *surface);
|
||||
|
||||
void meta_wayland_surface_notify_geometry_changed (MetaWaylandSurface *surface);
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user