Start splitting the X11-specific stuff of MetaWindow out into a subclass

This is fairly simple and basic for now, with just skip_taskbar /
skip_pager, but eventually a lot of "WM policy" like this, including
move-resize, will be in subclasses for each individual surface.
This commit is contained in:
Jasper St. Pierre
2014-03-18 11:20:22 -04:00
parent 63b158e4da
commit 6f7023bc6b
7 changed files with 142 additions and 15 deletions

View File

@ -208,6 +208,15 @@ prefs_changed_callback (MetaPreference pref,
}
}
static void
meta_window_real_get_default_skip_hints (MetaWindow *window,
gboolean *skip_taskbar_out,
gboolean *skip_pager_out)
{
*skip_taskbar_out = FALSE;
*skip_pager_out = FALSE;
}
static void
meta_window_finalize (GObject *object)
{
@ -365,6 +374,8 @@ meta_window_class_init (MetaWindowClass *klass)
object_class->get_property = meta_window_get_property;
object_class->set_property = meta_window_set_property;
klass->get_default_skip_hints = meta_window_real_get_default_skip_hints;
g_object_class_install_property (object_class,
PROP_TITLE,
g_param_spec_string ("title",
@ -757,7 +768,10 @@ _meta_window_shared_new (MetaDisplay *display,
"IsUnviewable" :
"(unknown)");
window = g_object_new (META_TYPE_WINDOW, NULL);
if (client_type == META_WINDOW_CLIENT_TYPE_X11)
window = g_object_new (META_TYPE_WINDOW_X11, NULL);
else
window = g_object_new (META_TYPE_WINDOW, NULL);
window->constructing = TRUE;
@ -909,8 +923,6 @@ _meta_window_shared_new (MetaDisplay *display,
window->wm_state_modal = FALSE;
window->skip_taskbar = FALSE;
window->skip_pager = FALSE;
window->wm_state_skip_taskbar = FALSE;
window->wm_state_skip_pager = FALSE;
window->wm_state_above = FALSE;
window->wm_state_below = FALSE;
window->wm_state_demands_attention = FALSE;
@ -7160,6 +7172,14 @@ set_allowed_actions_hint (MetaWindow *window)
#undef MAX_N_ACTIONS
}
static void
meta_window_get_default_skip_hints (MetaWindow *window,
gboolean *skip_taskbar_out,
gboolean *skip_pager_out)
{
META_WINDOW_GET_CLASS (window)->get_default_skip_hints (window, skip_taskbar_out, skip_pager_out);
}
static void
meta_window_recalc_skip_features (MetaWindow *window)
{
@ -7194,8 +7214,12 @@ meta_window_recalc_skip_features (MetaWindow *window)
break;
case META_WINDOW_NORMAL:
window->skip_taskbar = window->wm_state_skip_taskbar;
window->skip_pager = window->wm_state_skip_pager;
{
gboolean skip_taskbar_hint, skip_pager_hint;
meta_window_get_default_skip_hints (window, &skip_taskbar_hint, &skip_pager_hint);
window->skip_taskbar = skip_taskbar_hint;
window->skip_pager = skip_pager_hint;
}
break;
}
}