Commit 087cbd1d09b63b10538446b812cc21191787de24
- Diff rendering mode:
- inline
- side by side
|   | |||
| 580 | 580 | ||
| 581 | 581 | priv->children = g_list_prepend (priv->children, widget); | |
| 582 | 582 | gtk_widget_set_parent (widget, GTK_WIDGET (container)); | |
| 583 | if (GTK_CLUTTER_OFFSCREEN (widget)->active) | ||
| 584 | _gtk_clutter_embedd_set_child_active (GTK_CLUTTER_EMBED (container), | ||
| 585 | widget, TRUE); | ||
| 586 | 583 | } | |
| 587 | 584 | ||
| 588 | 585 | static void | |
| … | … | ||
| 592 | 592 | l = g_list_find (priv->children, widget); | |
| 593 | 593 | if (l) | |
| 594 | 594 | { | |
| 595 | if (GTK_CLUTTER_OFFSCREEN (widget)->active) | ||
| 596 | _gtk_clutter_embedd_set_child_active (GTK_CLUTTER_EMBED (container), | ||
| 597 | widget, FALSE); | ||
| 598 | gtk_widget_unparent (widget); | ||
| 599 | 595 | priv->children = g_list_delete_link (priv->children, l); | |
| 596 | gtk_widget_unparent (widget); | ||
| 600 | 597 | } | |
| 601 | 598 | } | |
| 602 | 599 |
clutter-gtk/gtk-clutter-offscreen.c
(17 / 16)
|   | |||
| 21 | 21 | ||
| 22 | 22 | G_DEFINE_TYPE (GtkClutterOffscreen, gtk_clutter_offscreen, GTK_TYPE_BIN); | |
| 23 | 23 | ||
| 24 | void _gtk_clutter_embedd_set_child_active (GtkClutterEmbed *embed, | ||
| 25 | GtkWidget *child, | ||
| 26 | gboolean active); | ||
| 27 | |||
| 24 | 28 | static gint | |
| 25 | 29 | gtk_clutter_offscreen_expose (GtkWidget *widget, | |
| 26 | 30 | GdkEventExpose *event) | |
| … | … | ||
| 79 | 79 | return GTK_WIDGET (offscreen); | |
| 80 | 80 | } | |
| 81 | 81 | ||
| 82 | GdkWindow * | ||
| 83 | get_embedding_window (GtkClutterOffscreen *offscreen) | ||
| 84 | { | ||
| 85 | GtkWidget *embed; | ||
| 86 | embed = _gtk_clutter_actor_get_embed (GTK_CLUTTER_ACTOR (offscreen->actor)); | ||
| 87 | return embed->window; | ||
| 88 | } | ||
| 89 | |||
| 90 | 82 | static void | |
| 91 | 83 | offscreen_window_to_parent (GdkWindow *offscreen_window, | |
| 92 | 84 | double offscreen_x, | |
| … | … | ||
| 129 | 129 | GdkWindowAttr attributes; | |
| 130 | 130 | gint attributes_mask; | |
| 131 | 131 | gint border_width; | |
| 132 | GdkWindow *parent; | ||
| 132 | GtkWidget *parent; | ||
| 133 | 133 | ||
| 134 | 134 | GTK_WIDGET_SET_FLAGS (widget, GTK_REALIZED); | |
| 135 | 135 | ||
| … | … | ||
| 148 | 148 | ||
| 149 | 149 | attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP; | |
| 150 | 150 | ||
| 151 | parent = get_embedding_window (offscreen); | ||
| 151 | parent = gtk_widget_get_parent (widget); | ||
| 152 | 152 | ||
| 153 | widget->window = gdk_window_new (gdk_screen_get_root_window (gdk_drawable_get_screen (GDK_DRAWABLE (parent))), | ||
| 153 | widget->window = gdk_window_new (gdk_screen_get_root_window (gdk_drawable_get_screen (GDK_DRAWABLE (parent->window))), | ||
| 154 | 154 | &attributes, attributes_mask); | |
| 155 | 155 | gdk_window_set_user_data (widget->window, widget); | |
| 156 | 156 | ||
| … | … | ||
| 162 | 162 | widget->style = gtk_style_attach (widget->style, widget->window); | |
| 163 | 163 | ||
| 164 | 164 | gtk_style_set_background (widget->style, widget->window, GTK_STATE_NORMAL); | |
| 165 | |||
| 166 | if (offscreen->active) | ||
| 167 | _gtk_clutter_embedd_set_child_active (GTK_CLUTTER_EMBED (parent), | ||
| 168 | widget, TRUE); | ||
| 169 | |||
| 165 | 170 | } | |
| 166 | 171 | ||
| 167 | 172 | static void | |
| 168 | 173 | gtk_clutter_offscreen_unrealize (GtkWidget *widget) | |
| 169 | 174 | { | |
| 175 | GtkClutterOffscreen *offscreen = GTK_CLUTTER_OFFSCREEN (widget); | ||
| 176 | |||
| 177 | if (offscreen->active) | ||
| 178 | _gtk_clutter_embedd_set_child_active (GTK_CLUTTER_EMBED (widget->parent), | ||
| 179 | widget, FALSE); | ||
| 170 | 180 | GTK_WIDGET_CLASS (gtk_clutter_offscreen_parent_class)->unrealize (widget); | |
| 171 | 181 | } | |
| 172 | 182 | ||
| … | … | ||
| 246 | 246 | ||
| 247 | 247 | return TRUE; | |
| 248 | 248 | } | |
| 249 | |||
| 250 | void | ||
| 251 | _gtk_clutter_embedd_set_child_active (GtkClutterEmbed *embed, | ||
| 252 | GtkWidget *child, | ||
| 253 | gboolean active); | ||
| 254 | 249 | ||
| 255 | 250 | void | |
| 256 | 251 | gtk_clutter_offscreen_set_active (GtkClutterOffscreen *offscreen, |

