shell-embedded-window: Remove hacks for old and fixed Clutter bug
We used to use realize/unrealize instead of map/unmap in ShellEmbeddedWindow because there originally was no map/unmap. The days of this are long gone... https://bugzilla.gnome.org/show_bug.cgi?id=672790
This commit is contained in:
parent
c4e7d8ed8c
commit
d212d57466
@ -14,7 +14,7 @@ void _shell_embedded_window_allocate (ShellEmbeddedWindow *window,
|
|||||||
int width,
|
int width,
|
||||||
int height);
|
int height);
|
||||||
|
|
||||||
void _shell_embedded_window_realize (ShellEmbeddedWindow *window);
|
void _shell_embedded_window_map (ShellEmbeddedWindow *window);
|
||||||
void _shell_embedded_window_unrealize (ShellEmbeddedWindow *window);
|
void _shell_embedded_window_unmap (ShellEmbeddedWindow *window);
|
||||||
|
|
||||||
#endif /* __SHELL_EMBEDDED_WINDOW_PRIVATE_H__ */
|
#endif /* __SHELL_EMBEDDED_WINDOW_PRIVATE_H__ */
|
||||||
|
@ -19,20 +19,10 @@
|
|||||||
* - ShellGtkEmbed is created for the ShellEmbeddedWindow
|
* - ShellGtkEmbed is created for the ShellEmbeddedWindow
|
||||||
* - actor is added to a stage
|
* - actor is added to a stage
|
||||||
*
|
*
|
||||||
* Ideally, the way it would work is that the GtkWindow is mapped
|
* The way it works is that the GtkWindow is mapped if and only if both:
|
||||||
* if and only if both:
|
|
||||||
*
|
*
|
||||||
* - GTK_WIDGET_VISIBLE (window) [widget has been shown]
|
* - gtk_widget_visible (window) [widget has been shown]
|
||||||
* - Actor is mapped [actor and all parents visible, actor in stage]
|
* - Actor is mapped [actor and all parents visible, actor in stage]
|
||||||
*
|
|
||||||
* Implementing this perfectly is not currently possible, due to problems
|
|
||||||
* in Clutter, see:
|
|
||||||
*
|
|
||||||
* http://bugzilla.openedhand.com/show_bug.cgi?id=1138
|
|
||||||
*
|
|
||||||
* So until that is fixed we use the "realized" state of the ClutterActor
|
|
||||||
* as a stand-in for the ideal mapped state, this will work as long
|
|
||||||
* as the ClutterActor and all its parents are in fact visible.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
G_DEFINE_TYPE (ShellEmbeddedWindow, shell_embedded_window, GTK_TYPE_WINDOW);
|
G_DEFINE_TYPE (ShellEmbeddedWindow, shell_embedded_window, GTK_TYPE_WINDOW);
|
||||||
@ -232,7 +222,7 @@ _shell_embedded_window_set_actor (ShellEmbeddedWindow *window,
|
|||||||
window->priv->actor = actor;
|
window->priv->actor = actor;
|
||||||
|
|
||||||
if (actor &&
|
if (actor &&
|
||||||
CLUTTER_ACTOR_IS_REALIZED (actor) &&
|
CLUTTER_ACTOR_IS_MAPPED (actor) &&
|
||||||
gtk_widget_get_visible (GTK_WIDGET (window)))
|
gtk_widget_get_visible (GTK_WIDGET (window)))
|
||||||
gtk_widget_map (GTK_WIDGET (window));
|
gtk_widget_map (GTK_WIDGET (window));
|
||||||
}
|
}
|
||||||
@ -272,7 +262,7 @@ _shell_embedded_window_allocate (ShellEmbeddedWindow *window,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
_shell_embedded_window_realize (ShellEmbeddedWindow *window)
|
_shell_embedded_window_map (ShellEmbeddedWindow *window)
|
||||||
{
|
{
|
||||||
g_return_if_fail (SHELL_IS_EMBEDDED_WINDOW (window));
|
g_return_if_fail (SHELL_IS_EMBEDDED_WINDOW (window));
|
||||||
|
|
||||||
@ -281,7 +271,7 @@ _shell_embedded_window_realize (ShellEmbeddedWindow *window)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
_shell_embedded_window_unrealize (ShellEmbeddedWindow *window)
|
_shell_embedded_window_unmap (ShellEmbeddedWindow *window)
|
||||||
{
|
{
|
||||||
g_return_if_fail (SHELL_IS_EMBEDDED_WINDOW (window));
|
g_return_if_fail (SHELL_IS_EMBEDDED_WINDOW (window));
|
||||||
|
|
||||||
|
@ -199,23 +199,23 @@ shell_gtk_embed_allocate (ClutterActor *actor,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
shell_gtk_embed_realize (ClutterActor *actor)
|
shell_gtk_embed_map (ClutterActor *actor)
|
||||||
{
|
{
|
||||||
ShellGtkEmbed *embed = SHELL_GTK_EMBED (actor);
|
ShellGtkEmbed *embed = SHELL_GTK_EMBED (actor);
|
||||||
|
|
||||||
_shell_embedded_window_realize (embed->priv->window);
|
_shell_embedded_window_map (embed->priv->window);
|
||||||
|
|
||||||
CLUTTER_ACTOR_CLASS (shell_gtk_embed_parent_class)->realize (actor);
|
CLUTTER_ACTOR_CLASS (shell_gtk_embed_parent_class)->map (actor);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
shell_gtk_embed_unrealize (ClutterActor *actor)
|
shell_gtk_embed_unmap (ClutterActor *actor)
|
||||||
{
|
{
|
||||||
ShellGtkEmbed *embed = SHELL_GTK_EMBED (actor);
|
ShellGtkEmbed *embed = SHELL_GTK_EMBED (actor);
|
||||||
|
|
||||||
_shell_embedded_window_unrealize (embed->priv->window);
|
_shell_embedded_window_unmap (embed->priv->window);
|
||||||
|
|
||||||
CLUTTER_ACTOR_CLASS (shell_gtk_embed_parent_class)->unrealize (actor);
|
CLUTTER_ACTOR_CLASS (shell_gtk_embed_parent_class)->unmap (actor);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -243,8 +243,8 @@ shell_gtk_embed_class_init (ShellGtkEmbedClass *klass)
|
|||||||
actor_class->get_preferred_width = shell_gtk_embed_get_preferred_width;
|
actor_class->get_preferred_width = shell_gtk_embed_get_preferred_width;
|
||||||
actor_class->get_preferred_height = shell_gtk_embed_get_preferred_height;
|
actor_class->get_preferred_height = shell_gtk_embed_get_preferred_height;
|
||||||
actor_class->allocate = shell_gtk_embed_allocate;
|
actor_class->allocate = shell_gtk_embed_allocate;
|
||||||
actor_class->realize = shell_gtk_embed_realize;
|
actor_class->map = shell_gtk_embed_map;
|
||||||
actor_class->unrealize = shell_gtk_embed_unrealize;
|
actor_class->unmap = shell_gtk_embed_unmap;
|
||||||
|
|
||||||
g_object_class_install_property (object_class,
|
g_object_class_install_property (object_class,
|
||||||
PROP_WINDOW,
|
PROP_WINDOW,
|
||||||
|
Loading…
Reference in New Issue
Block a user