mirror of https://github.com/GNOME/gimp.git
multihead fix: added gimp_preview_renderer_unrealize() which destroys the
2003-11-13 Michael Natterer <mitch@gimp.org> * app/widgets/gimppreviewrenderer.[ch]: multihead fix: added gimp_preview_renderer_unrealize() which destroys the cached GdkGC. This function must be called whenever the widget owning the renderer is unrealized. * app/widgets/gimpcomponenteditor.c * app/widgets/gimpcontainertreeview.c * app/widgets/gimplayertreeview.c * app/widgets/gimppreview.c: implement GtkWidget::unrealize() and call gimp_preview_renderer_unrealize() on all renderers.
This commit is contained in:
parent
a843b2adfd
commit
2b6ed25f06
13
ChangeLog
13
ChangeLog
|
@ -1,3 +1,16 @@
|
|||
2003-11-13 Michael Natterer <mitch@gimp.org>
|
||||
|
||||
* app/widgets/gimppreviewrenderer.[ch]: multihead fix: added
|
||||
gimp_preview_renderer_unrealize() which destroys the cached
|
||||
GdkGC. This function must be called whenever the widget owning the
|
||||
renderer is unrealized.
|
||||
|
||||
* app/widgets/gimpcomponenteditor.c
|
||||
* app/widgets/gimpcontainertreeview.c
|
||||
* app/widgets/gimplayertreeview.c
|
||||
* app/widgets/gimppreview.c: implement GtkWidget::unrealize() and
|
||||
call gimp_preview_renderer_unrealize() on all renderers.
|
||||
|
||||
2003-11-13 Sven Neumann <sven@gimp.org>
|
||||
|
||||
* app/app_procs.[ch]
|
||||
|
|
|
@ -54,6 +54,8 @@ enum
|
|||
static void gimp_component_editor_class_init (GimpComponentEditorClass *klass);
|
||||
static void gimp_component_editor_init (GimpComponentEditor *editor);
|
||||
|
||||
static void gimp_component_editor_unrealize (GtkWidget *widget);
|
||||
|
||||
static void gimp_component_editor_set_image (GimpImageEditor *editor,
|
||||
GimpImage *gimage);
|
||||
|
||||
|
@ -119,12 +121,16 @@ gimp_component_editor_get_type (void)
|
|||
static void
|
||||
gimp_component_editor_class_init (GimpComponentEditorClass *klass)
|
||||
{
|
||||
GtkWidgetClass *widget_class;
|
||||
GimpImageEditorClass *image_editor_class;
|
||||
|
||||
widget_class = GTK_WIDGET_CLASS (klass);
|
||||
image_editor_class = GIMP_IMAGE_EDITOR_CLASS (klass);
|
||||
|
||||
parent_class = g_type_class_peek_parent (klass);
|
||||
|
||||
widget_class->unrealize = gimp_component_editor_unrealize;
|
||||
|
||||
image_editor_class->set_image = gimp_component_editor_set_image;
|
||||
}
|
||||
|
||||
|
@ -192,6 +198,30 @@ gimp_component_editor_init (GimpComponentEditor *editor)
|
|||
editor, NULL);
|
||||
}
|
||||
|
||||
static void
|
||||
gimp_component_editor_unrealize (GtkWidget *widget)
|
||||
{
|
||||
GimpComponentEditor *editor = GIMP_COMPONENT_EDITOR (widget);
|
||||
GtkTreeIter iter;
|
||||
gboolean iter_valid;
|
||||
|
||||
for (iter_valid = gtk_tree_model_get_iter_first (editor->model, &iter);
|
||||
iter_valid;
|
||||
iter_valid = gtk_tree_model_iter_next (editor->model, &iter))
|
||||
{
|
||||
GimpPreviewRenderer *renderer;
|
||||
|
||||
gtk_tree_model_get (editor->model, &iter,
|
||||
COLUMN_RENDERER, &renderer,
|
||||
-1);
|
||||
|
||||
gimp_preview_renderer_unrealize (renderer);
|
||||
g_object_unref (renderer);
|
||||
}
|
||||
|
||||
GTK_WIDGET_CLASS (parent_class)->unrealize (widget);
|
||||
}
|
||||
|
||||
static void
|
||||
gimp_component_editor_set_image (GimpImageEditor *editor,
|
||||
GimpImage *gimage)
|
||||
|
@ -297,7 +327,6 @@ gimp_component_editor_set_preview_size (GimpComponentEditor *editor,
|
|||
-1);
|
||||
|
||||
gimp_preview_renderer_set_size (renderer, preview_size, 1);
|
||||
|
||||
g_object_unref (renderer);
|
||||
}
|
||||
|
||||
|
|
|
@ -59,6 +59,7 @@ static GObject *gimp_container_tree_view_constructor (GType t
|
|||
guint n_params,
|
||||
GObjectConstructParam *params);
|
||||
|
||||
static void gimp_container_tree_view_unrealize (GtkWidget *widget);
|
||||
static void gimp_container_tree_view_unmap (GtkWidget *widget);
|
||||
static gboolean gimp_container_tree_view_popup_menu (GtkWidget *widget);
|
||||
static void gimp_container_tree_view_set_container (GimpContainerView *view,
|
||||
|
@ -140,6 +141,7 @@ gimp_container_tree_view_class_init (GimpContainerTreeViewClass *klass)
|
|||
|
||||
object_class->constructor = gimp_container_tree_view_constructor;
|
||||
|
||||
widget_class->unrealize = gimp_container_tree_view_unrealize;
|
||||
widget_class->unmap = gimp_container_tree_view_unmap;
|
||||
widget_class->popup_menu = gimp_container_tree_view_popup_menu;
|
||||
|
||||
|
@ -258,6 +260,30 @@ gimp_container_tree_view_constructor (GType type,
|
|||
return object;
|
||||
}
|
||||
|
||||
static void
|
||||
gimp_container_tree_view_unrealize (GtkWidget *widget)
|
||||
{
|
||||
GimpContainerTreeView *tree_view = GIMP_CONTAINER_TREE_VIEW (widget);
|
||||
GtkTreeIter iter;
|
||||
gboolean iter_valid;
|
||||
|
||||
for (iter_valid = gtk_tree_model_get_iter_first (tree_view->model, &iter);
|
||||
iter_valid;
|
||||
iter_valid = gtk_tree_model_iter_next (tree_view->model, &iter))
|
||||
{
|
||||
GimpPreviewRenderer *renderer;
|
||||
|
||||
gtk_tree_model_get (tree_view->model, &iter,
|
||||
COLUMN_RENDERER, &renderer,
|
||||
-1);
|
||||
|
||||
gimp_preview_renderer_unrealize (renderer);
|
||||
g_object_unref (renderer);
|
||||
}
|
||||
|
||||
GTK_WIDGET_CLASS (parent_class)->unrealize (widget);
|
||||
}
|
||||
|
||||
static void
|
||||
gimp_container_tree_view_unmap (GtkWidget *widget)
|
||||
{
|
||||
|
@ -696,7 +722,6 @@ gimp_container_tree_view_set_preview_size (GimpContainerView *view)
|
|||
gimp_preview_renderer_set_size (renderer,
|
||||
view->preview_size,
|
||||
view->preview_border_width);
|
||||
|
||||
g_object_unref (renderer);
|
||||
}
|
||||
|
||||
|
|
|
@ -57,6 +57,7 @@ static GObject * gimp_layer_tree_view_constructor (GType type,
|
|||
GObjectConstructParam *params);
|
||||
static void gimp_layer_tree_view_finalize (GObject *object);
|
||||
|
||||
static void gimp_layer_tree_view_unrealize (GtkWidget *widget);
|
||||
static void gimp_layer_tree_view_style_set (GtkWidget *widget,
|
||||
GtkStyle *prev_style);
|
||||
|
||||
|
@ -188,6 +189,7 @@ gimp_layer_tree_view_class_init (GimpLayerTreeViewClass *klass)
|
|||
object_class->constructor = gimp_layer_tree_view_constructor;
|
||||
object_class->finalize = gimp_layer_tree_view_finalize;
|
||||
|
||||
widget_class->unrealize = gimp_layer_tree_view_unrealize;
|
||||
widget_class->style_set = gimp_layer_tree_view_style_set;
|
||||
|
||||
container_view_class->set_container = gimp_layer_tree_view_set_container;
|
||||
|
@ -417,6 +419,34 @@ gimp_layer_tree_view_finalize (GObject *object)
|
|||
G_OBJECT_CLASS (parent_class)->finalize (object);
|
||||
}
|
||||
|
||||
static void
|
||||
gimp_layer_tree_view_unrealize (GtkWidget *widget)
|
||||
{
|
||||
GimpContainerTreeView *tree_view = GIMP_CONTAINER_TREE_VIEW (widget);
|
||||
GimpLayerTreeView *layer_view = GIMP_LAYER_TREE_VIEW (widget);
|
||||
GtkTreeIter iter;
|
||||
gboolean iter_valid;
|
||||
|
||||
for (iter_valid = gtk_tree_model_get_iter_first (tree_view->model, &iter);
|
||||
iter_valid;
|
||||
iter_valid = gtk_tree_model_iter_next (tree_view->model, &iter))
|
||||
{
|
||||
GimpPreviewRenderer *renderer;
|
||||
|
||||
gtk_tree_model_get (tree_view->model, &iter,
|
||||
layer_view->model_column_mask, &renderer,
|
||||
-1);
|
||||
|
||||
if (renderer)
|
||||
{
|
||||
gimp_preview_renderer_unrealize (renderer);
|
||||
g_object_unref (renderer);
|
||||
}
|
||||
}
|
||||
|
||||
GTK_WIDGET_CLASS (parent_class)->unrealize (widget);
|
||||
}
|
||||
|
||||
static void
|
||||
gimp_layer_tree_view_style_set (GtkWidget *widget,
|
||||
GtkStyle *prev_style)
|
||||
|
|
|
@ -255,6 +255,9 @@ gimp_preview_unrealize (GtkWidget *widget)
|
|||
preview->event_window = NULL;
|
||||
}
|
||||
|
||||
if (preview->renderer)
|
||||
gimp_preview_renderer_unrealize (preview->renderer);
|
||||
|
||||
GTK_WIDGET_CLASS (parent_class)->unrealize (widget);
|
||||
}
|
||||
|
||||
|
|
|
@ -456,6 +456,18 @@ gimp_preview_renderer_set_background (GimpPreviewRenderer *renderer,
|
|||
}
|
||||
}
|
||||
|
||||
void
|
||||
gimp_preview_renderer_unrealize (GimpPreviewRenderer *renderer)
|
||||
{
|
||||
g_return_if_fail (GIMP_IS_PREVIEW_RENDERER (renderer));
|
||||
|
||||
if (renderer->gc)
|
||||
{
|
||||
g_object_unref (renderer->gc);
|
||||
renderer->gc = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
gimp_preview_renderer_invalidate (GimpPreviewRenderer *renderer)
|
||||
{
|
||||
|
|
|
@ -110,6 +110,8 @@ void gimp_preview_renderer_set_border_color (GimpPreviewRenderer *renderer,
|
|||
void gimp_preview_renderer_set_background (GimpPreviewRenderer *renderer,
|
||||
const gchar *stock_id);
|
||||
|
||||
void gimp_preview_renderer_unrealize (GimpPreviewRenderer *renderer);
|
||||
|
||||
void gimp_preview_renderer_invalidate (GimpPreviewRenderer *renderer);
|
||||
void gimp_preview_renderer_update (GimpPreviewRenderer *renderer);
|
||||
void gimp_preview_renderer_update_idle (GimpPreviewRenderer *renderer);
|
||||
|
|
|
@ -255,6 +255,9 @@ gimp_preview_unrealize (GtkWidget *widget)
|
|||
preview->event_window = NULL;
|
||||
}
|
||||
|
||||
if (preview->renderer)
|
||||
gimp_preview_renderer_unrealize (preview->renderer);
|
||||
|
||||
GTK_WIDGET_CLASS (parent_class)->unrealize (widget);
|
||||
}
|
||||
|
||||
|
|
|
@ -456,6 +456,18 @@ gimp_preview_renderer_set_background (GimpPreviewRenderer *renderer,
|
|||
}
|
||||
}
|
||||
|
||||
void
|
||||
gimp_preview_renderer_unrealize (GimpPreviewRenderer *renderer)
|
||||
{
|
||||
g_return_if_fail (GIMP_IS_PREVIEW_RENDERER (renderer));
|
||||
|
||||
if (renderer->gc)
|
||||
{
|
||||
g_object_unref (renderer->gc);
|
||||
renderer->gc = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
gimp_preview_renderer_invalidate (GimpPreviewRenderer *renderer)
|
||||
{
|
||||
|
|
|
@ -110,6 +110,8 @@ void gimp_preview_renderer_set_border_color (GimpPreviewRenderer *renderer,
|
|||
void gimp_preview_renderer_set_background (GimpPreviewRenderer *renderer,
|
||||
const gchar *stock_id);
|
||||
|
||||
void gimp_preview_renderer_unrealize (GimpPreviewRenderer *renderer);
|
||||
|
||||
void gimp_preview_renderer_invalidate (GimpPreviewRenderer *renderer);
|
||||
void gimp_preview_renderer_update (GimpPreviewRenderer *renderer);
|
||||
void gimp_preview_renderer_update_idle (GimpPreviewRenderer *renderer);
|
||||
|
|
Loading…
Reference in New Issue