mirror of
https://github.com/brl/mutter.git
synced 2025-06-27 07:27:05 +00:00
window: Move surface property to it subclasses
As we have specific window types per display server, having it in the parent class makes building without wayland harder to achieve Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2418>
This commit is contained in:

committed by
Marge Bot

parent
c3a01e4e18
commit
6b77532a23
@ -1437,8 +1437,11 @@ meta_display_sync_wayland_input_focus (MetaDisplay *display)
|
||||
focus_window = NULL;
|
||||
else if (clutter_stage_get_grab_actor (CLUTTER_STAGE (stage)))
|
||||
focus_window = NULL;
|
||||
else if (display->focus_window && display->focus_window->surface)
|
||||
#ifdef HAVE_WAYLAND
|
||||
else if (display->focus_window &&
|
||||
meta_window_get_wayland_surface (display->focus_window))
|
||||
focus_window = display->focus_window;
|
||||
#endif
|
||||
else
|
||||
meta_topic (META_DEBUG_FOCUS, "Focus change has no effect, because there is no matching wayland surface");
|
||||
|
||||
|
@ -170,7 +170,6 @@ struct _MetaWindow
|
||||
MetaLogicalMonitor *monitor;
|
||||
MetaWorkspace *workspace;
|
||||
MetaWindowClientType client_type;
|
||||
MetaWaylandSurface *surface;
|
||||
Window xwindow;
|
||||
/* may be NULL! not all windows get decorated */
|
||||
MetaFrame *frame;
|
||||
@ -619,6 +618,10 @@ struct _MetaWindowClass
|
||||
|
||||
MetaStackLayer (*calculate_layer) (MetaWindow *window);
|
||||
|
||||
#ifdef HAVE_WAYLAND
|
||||
MetaWaylandSurface * (*get_wayland_surface) (MetaWindow *window);
|
||||
#endif
|
||||
|
||||
void (* map) (MetaWindow *window);
|
||||
void (* unmap) (MetaWindow *window);
|
||||
};
|
||||
@ -722,6 +725,11 @@ gboolean meta_window_can_ping (MetaWindow *window);
|
||||
|
||||
MetaStackLayer meta_window_calculate_layer (MetaWindow *window);
|
||||
|
||||
#ifdef HAVE_WAYLAND
|
||||
META_EXPORT_TEST
|
||||
MetaWaylandSurface * meta_window_get_wayland_surface (MetaWindow *window);
|
||||
#endif
|
||||
|
||||
void meta_window_current_workspace_changed (MetaWindow *window);
|
||||
|
||||
void meta_window_show_menu (MetaWindow *window,
|
||||
|
@ -197,7 +197,6 @@ enum
|
||||
PROP_IS_ALIVE,
|
||||
PROP_DISPLAY,
|
||||
PROP_EFFECT,
|
||||
PROP_SURFACE,
|
||||
PROP_XWINDOW,
|
||||
|
||||
PROP_LAST,
|
||||
@ -418,9 +417,6 @@ meta_window_get_property(GObject *object,
|
||||
case PROP_EFFECT:
|
||||
g_value_set_int (value, win->pending_compositor_effect);
|
||||
break;
|
||||
case PROP_SURFACE:
|
||||
g_value_set_pointer (value, win->surface);
|
||||
break;
|
||||
case PROP_XWINDOW:
|
||||
g_value_set_ulong (value, win->xwindow);
|
||||
break;
|
||||
@ -446,9 +442,6 @@ meta_window_set_property(GObject *object,
|
||||
case PROP_EFFECT:
|
||||
win->pending_compositor_effect = g_value_get_int (value);
|
||||
break;
|
||||
case PROP_SURFACE:
|
||||
win->surface = g_value_get_pointer (value);
|
||||
break;
|
||||
case PROP_XWINDOW:
|
||||
win->xwindow = g_value_get_ulong (value);
|
||||
break;
|
||||
@ -834,9 +827,12 @@ static gboolean
|
||||
client_window_should_be_mapped (MetaWindow *window)
|
||||
{
|
||||
#ifdef HAVE_WAYLAND
|
||||
if (window->client_type == META_WINDOW_CLIENT_TYPE_WAYLAND &&
|
||||
!meta_wayland_surface_get_buffer (window->surface))
|
||||
return FALSE;
|
||||
if (window->client_type == META_WINDOW_CLIENT_TYPE_WAYLAND)
|
||||
{
|
||||
MetaWaylandSurface *surface = meta_window_get_wayland_surface (window);
|
||||
if (!meta_wayland_surface_get_buffer (surface))
|
||||
return FALSE;
|
||||
}
|
||||
#endif
|
||||
|
||||
return !window->shaded;
|
||||
@ -1683,9 +1679,12 @@ meta_window_should_be_showing (MetaWindow *window)
|
||||
MetaWorkspaceManager *workspace_manager = window->display->workspace_manager;
|
||||
|
||||
#ifdef HAVE_WAYLAND
|
||||
if (window->client_type == META_WINDOW_CLIENT_TYPE_WAYLAND &&
|
||||
!meta_wayland_surface_get_buffer (window->surface))
|
||||
return FALSE;
|
||||
if (window->client_type == META_WINDOW_CLIENT_TYPE_WAYLAND)
|
||||
{
|
||||
MetaWaylandSurface *surface = meta_window_get_wayland_surface (window);
|
||||
if (!meta_wayland_surface_get_buffer (surface))
|
||||
return FALSE;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Windows should be showing if they're located on the
|
||||
@ -4503,7 +4502,10 @@ meta_window_transient_can_focus (MetaWindow *window)
|
||||
{
|
||||
#ifdef HAVE_WAYLAND
|
||||
if (window->client_type == META_WINDOW_CLIENT_TYPE_WAYLAND)
|
||||
return meta_wayland_surface_get_buffer (window->surface) != NULL;
|
||||
{
|
||||
MetaWaylandSurface *surface = meta_window_get_wayland_surface (window);
|
||||
return meta_wayland_surface_get_buffer (surface) != NULL;
|
||||
}
|
||||
#endif
|
||||
|
||||
return TRUE;
|
||||
@ -8526,6 +8528,17 @@ meta_window_calculate_layer (MetaWindow *window)
|
||||
return META_WINDOW_GET_CLASS (window)->calculate_layer (window);
|
||||
}
|
||||
|
||||
#ifdef HAVE_WAYLAND
|
||||
MetaWaylandSurface *
|
||||
meta_window_get_wayland_surface (MetaWindow *window)
|
||||
{
|
||||
MetaWindowClass *klass = META_WINDOW_GET_CLASS (window);
|
||||
g_return_val_if_fail (klass->get_wayland_surface != NULL, NULL);
|
||||
|
||||
return klass->get_wayland_surface (window);
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* meta_window_get_id:
|
||||
* @window: a #MetaWindow
|
||||
|
Reference in New Issue
Block a user