Don't expose class instance struct members that is currently only used

* app/widgets/gimpcontainertreeview.[ch]: Don't expose class
instance struct members that is currently only used within the
GimpContainerTreeView implementation.

* app/widgets/gimpcontainertreeview-private.h: New file containing
the definition of the private struct.

* app/widgets/gimpcontainertreeview-dnd.c: Change accordingly.

* app/widgets/Makefile.am: Add new file.

svn path=/trunk/; revision=27662
This commit is contained in:
Martin Nordholts
2008-11-15 18:08:50 +00:00
parent a3eb78b5c7
commit e9153bf52d
6 changed files with 175 additions and 73 deletions

View File

@ -1,3 +1,16 @@
2008-11-15 Martin Nordholts <martinn@svn.gnome.org>
* app/widgets/gimpcontainertreeview.[ch]: Don't expose class
instance struct members that is currently only used within the
GimpContainerTreeView implementation.
* app/widgets/gimpcontainertreeview-private.h: New file containing
the definition of the private struct.
* app/widgets/gimpcontainertreeview-dnd.c: Change accordingly.
* app/widgets/Makefile.am: Add new file.
2008-11-15 Martin Nordholts <martinn@svn.gnome.org> 2008-11-15 Martin Nordholts <martinn@svn.gnome.org>
* app/widgets/gimpcontainertreeview.h: Remove unused instance * app/widgets/gimpcontainertreeview.h: Remove unused instance

View File

@ -83,6 +83,7 @@ libappwidgets_a_sources = \
gimpcontainertreeview.h \ gimpcontainertreeview.h \
gimpcontainertreeview-dnd.c \ gimpcontainertreeview-dnd.c \
gimpcontainertreeview-dnd.h \ gimpcontainertreeview-dnd.h \
gimpcontainertreeview-private.h \
gimpcontainerview.c \ gimpcontainerview.c \
gimpcontainerview.h \ gimpcontainerview.h \
gimpcontainerview-utils.c \ gimpcontainerview-utils.c \

View File

@ -30,6 +30,7 @@
#include "gimpcontainertreeview.h" #include "gimpcontainertreeview.h"
#include "gimpcontainertreeview-dnd.h" #include "gimpcontainertreeview-dnd.h"
#include "gimpcontainertreeview-private.h"
#include "gimpcontainerview.h" #include "gimpcontainerview.h"
#include "gimpdnd.h" #include "gimpdnd.h"
#include "gimpviewrenderer.h" #include "gimpviewrenderer.h"
@ -184,7 +185,7 @@ gimp_container_tree_view_scroll_timeout (gpointer data)
g_print ("scroll_timeout: scrolling by %d\n", SCROLL_STEP); g_print ("scroll_timeout: scrolling by %d\n", SCROLL_STEP);
#endif #endif
if (tree_view->scroll_dir == GDK_SCROLL_UP) if (tree_view->priv->scroll_dir == GDK_SCROLL_UP)
new_value = gtk_adjustment_get_value (adj) - SCROLL_STEP; new_value = gtk_adjustment_get_value (adj) - SCROLL_STEP;
else else
new_value = gtk_adjustment_get_value (adj) + SCROLL_STEP; new_value = gtk_adjustment_get_value (adj) + SCROLL_STEP;
@ -193,12 +194,12 @@ gimp_container_tree_view_scroll_timeout (gpointer data)
gtk_adjustment_set_value (adj, new_value); gtk_adjustment_set_value (adj, new_value);
if (tree_view->scroll_timeout_id) if (tree_view->priv->scroll_timeout_id)
{ {
g_source_remove (tree_view->scroll_timeout_id); g_source_remove (tree_view->priv->scroll_timeout_id);
tree_view->scroll_timeout_id = tree_view->priv->scroll_timeout_id =
g_timeout_add (tree_view->scroll_timeout_interval, g_timeout_add (tree_view->priv->scroll_timeout_interval,
gimp_container_tree_view_scroll_timeout, gimp_container_tree_view_scroll_timeout,
tree_view); tree_view);
} }
@ -212,10 +213,10 @@ gimp_container_tree_view_drag_leave (GtkWidget *widget,
guint time, guint time,
GimpContainerTreeView *tree_view) GimpContainerTreeView *tree_view)
{ {
if (tree_view->scroll_timeout_id) if (tree_view->priv->scroll_timeout_id)
{ {
g_source_remove (tree_view->scroll_timeout_id); g_source_remove (tree_view->priv->scroll_timeout_id);
tree_view->scroll_timeout_id = 0; tree_view->priv->scroll_timeout_id = 0;
} }
gtk_tree_view_set_drag_dest_row (tree_view->view, NULL, 0); gtk_tree_view_set_drag_dest_row (tree_view->view, NULL, 0);
@ -238,32 +239,32 @@ gimp_container_tree_view_drag_motion (GtkWidget *widget,
if (y < SCROLL_DISTANCE) if (y < SCROLL_DISTANCE)
{ {
tree_view->scroll_dir = GDK_SCROLL_UP; tree_view->priv->scroll_dir = GDK_SCROLL_UP;
distance = MIN (-y, -1); distance = MIN (-y, -1);
} }
else else
{ {
tree_view->scroll_dir = GDK_SCROLL_DOWN; tree_view->priv->scroll_dir = GDK_SCROLL_DOWN;
distance = MAX (widget->allocation.height - y, 1); distance = MAX (widget->allocation.height - y, 1);
} }
tree_view->scroll_timeout_interval = SCROLL_INTERVAL * ABS (distance); tree_view->priv->scroll_timeout_interval = SCROLL_INTERVAL * ABS (distance);
#ifdef SCROLL_DEBUG #ifdef SCROLL_DEBUG
g_print ("drag_motion: scroll_distance = %d scroll_interval = %d\n", g_print ("drag_motion: scroll_distance = %d scroll_interval = %d\n",
distance, tree_view->scroll_timeout_interval); distance, tree_view->priv->scroll_timeout_interval);
#endif #endif
if (! tree_view->scroll_timeout_id) if (! tree_view->priv->scroll_timeout_id)
tree_view->scroll_timeout_id = tree_view->priv->scroll_timeout_id =
g_timeout_add (tree_view->scroll_timeout_interval, g_timeout_add (tree_view->priv->scroll_timeout_interval,
gimp_container_tree_view_scroll_timeout, gimp_container_tree_view_scroll_timeout,
tree_view); tree_view);
} }
else if (tree_view->scroll_timeout_id) else if (tree_view->priv->scroll_timeout_id)
{ {
g_source_remove (tree_view->scroll_timeout_id); g_source_remove (tree_view->priv->scroll_timeout_id);
tree_view->scroll_timeout_id = 0; tree_view->priv->scroll_timeout_id = 0;
} }
if (gimp_container_tree_view_drop_status (tree_view, if (gimp_container_tree_view_drop_status (tree_view,
@ -297,10 +298,10 @@ gimp_container_tree_view_drag_drop (GtkWidget *widget,
GdkAtom target; GdkAtom target;
GtkTreeViewDropPosition drop_pos; GtkTreeViewDropPosition drop_pos;
if (tree_view->scroll_timeout_id) if (tree_view->priv->scroll_timeout_id)
{ {
g_source_remove (tree_view->scroll_timeout_id); g_source_remove (tree_view->priv->scroll_timeout_id);
tree_view->scroll_timeout_id = 0; tree_view->priv->scroll_timeout_id = 0;
} }
if (gimp_container_tree_view_drop_status (tree_view, if (gimp_container_tree_view_drop_status (tree_view,

View File

@ -0,0 +1,84 @@
/* GIMP - The GNU Image Manipulation Program
* Copyright (C) 1995 Spencer Kimball and Peter Mattis
*
* gimpcontainertreeview-private.h
* Copyright (C) 2003-2004 Michael Natterer <mitch@gimp.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifndef __GIMP_CONTAINER_TREE_VIEW_PRIVATE_H__
#define __GIMP_CONTAINER_TREE_VIEW_PRIVATE_H__
struct _GimpContainerTreeViewPriv
{
GtkTreeSelection *selection;
GtkCellRenderer *name_cell;
GList *editable_cells;
GimpViewRenderer *dnd_renderer;
guint scroll_timeout_id;
guint scroll_timeout_interval;
GdkScrollDirection scroll_dir;
};
#endif /* __GIMP_CONTAINER_TREE_VIEW_PRIVATE_H__ */
/* GIMP - The GNU Image Manipulation Program
* Copyright (C) 1995 Spencer Kimball and Peter Mattis
*
* gimpcontainertreeview-private.h
* Copyright (C) 2003-2004 Michael Natterer <mitch@gimp.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifndef __GIMP_CONTAINER_TREE_VIEW_PRIVATE_H__
#define __GIMP_CONTAINER_TREE_VIEW_PRIVATE_H__
struct _GimpContainerTreeViewPriv
{
GtkTreeSelection *selection;
GtkCellRenderer *name_cell;
GList *editable_cells;
GimpViewRenderer *dnd_renderer;
guint scroll_timeout_id;
guint scroll_timeout_interval;
GdkScrollDirection scroll_dir;
};
#endif /* __GIMP_CONTAINER_TREE_VIEW_PRIVATE_H__ */

View File

@ -36,6 +36,8 @@
#include "gimpcellrendererviewable.h" #include "gimpcellrendererviewable.h"
#include "gimpcontainertreeview.h" #include "gimpcontainertreeview.h"
#include "gimpcontainertreeview-dnd.h" #include "gimpcontainertreeview-dnd.h"
#include "gimpcontainertreeview.h"
#include "gimpcontainertreeview-private.h"
#include "gimpcontainerview.h" #include "gimpcontainerview.h"
#include "gimpdnd.h" #include "gimpdnd.h"
#include "gimpviewrenderer.h" #include "gimpviewrenderer.h"
@ -137,6 +139,8 @@ gimp_container_tree_view_class_init (GimpContainerTreeViewClass *klass)
klass->drop_svg = NULL; klass->drop_svg = NULL;
klass->drop_component = NULL; klass->drop_component = NULL;
klass->drop_pixbuf = NULL; klass->drop_pixbuf = NULL;
g_type_class_add_private (klass, sizeof (GimpContainerTreeViewPriv));
} }
static void static void
@ -162,6 +166,10 @@ gimp_container_tree_view_init (GimpContainerTreeView *tree_view)
{ {
GimpContainerBox *box = GIMP_CONTAINER_BOX (tree_view); GimpContainerBox *box = GIMP_CONTAINER_BOX (tree_view);
tree_view->priv = G_TYPE_INSTANCE_GET_PRIVATE (tree_view,
GIMP_TYPE_CONTAINER_TREE_VIEW,
GimpContainerTreeViewPriv);
tree_view->n_model_columns = NUM_COLUMNS; tree_view->n_model_columns = NUM_COLUMNS;
tree_view->model_columns[COLUMN_RENDERER] = GIMP_TYPE_VIEW_RENDERER; tree_view->model_columns[COLUMN_RENDERER] = GIMP_TYPE_VIEW_RENDERER;
@ -227,28 +235,28 @@ gimp_container_tree_view_constructor (GType type,
"renderer", COLUMN_RENDERER, "renderer", COLUMN_RENDERER,
NULL); NULL);
tree_view->name_cell = gtk_cell_renderer_text_new (); tree_view->priv->name_cell = gtk_cell_renderer_text_new ();
g_object_set (tree_view->name_cell, "xalign", 0.0, NULL); g_object_set (tree_view->priv->name_cell, "xalign", 0.0, NULL);
gtk_tree_view_column_pack_end (tree_view->main_column, gtk_tree_view_column_pack_end (tree_view->main_column,
tree_view->name_cell, tree_view->priv->name_cell,
FALSE); FALSE);
gtk_tree_view_column_set_attributes (tree_view->main_column, gtk_tree_view_column_set_attributes (tree_view->main_column,
tree_view->name_cell, tree_view->priv->name_cell,
"text", COLUMN_NAME, "text", COLUMN_NAME,
"attributes", COLUMN_NAME_ATTRIBUTES, "attributes", COLUMN_NAME_ATTRIBUTES,
NULL); NULL);
g_signal_connect (tree_view->name_cell, "editing-canceled", g_signal_connect (tree_view->priv->name_cell, "editing-canceled",
G_CALLBACK (gimp_container_tree_view_name_canceled), G_CALLBACK (gimp_container_tree_view_name_canceled),
tree_view); tree_view);
tree_view->renderer_cells = g_list_prepend (tree_view->renderer_cells, tree_view->renderer_cells = g_list_prepend (tree_view->renderer_cells,
tree_view->renderer_cell); tree_view->renderer_cell);
tree_view->selection = gtk_tree_view_get_selection (tree_view->view); tree_view->priv->selection = gtk_tree_view_get_selection (tree_view->view);
g_signal_connect (tree_view->selection, "changed", g_signal_connect (tree_view->priv->selection, "changed",
G_CALLBACK (gimp_container_tree_view_selection_changed), G_CALLBACK (gimp_container_tree_view_selection_changed),
tree_view); tree_view);
@ -289,10 +297,10 @@ gimp_container_tree_view_finalize (GObject *object)
tree_view->renderer_cells = NULL; tree_view->renderer_cells = NULL;
} }
if (tree_view->editable_cells) if (tree_view->priv->editable_cells)
{ {
g_list_free (tree_view->editable_cells); g_list_free (tree_view->priv->editable_cells);
tree_view->editable_cells = NULL; tree_view->priv->editable_cells = NULL;
} }
G_OBJECT_CLASS (parent_class)->finalize (object); G_OBJECT_CLASS (parent_class)->finalize (object);
@ -303,10 +311,10 @@ gimp_container_tree_view_unmap (GtkWidget *widget)
{ {
GimpContainerTreeView *tree_view = GIMP_CONTAINER_TREE_VIEW (widget); GimpContainerTreeView *tree_view = GIMP_CONTAINER_TREE_VIEW (widget);
if (tree_view->scroll_timeout_id) if (tree_view->priv->scroll_timeout_id)
{ {
g_source_remove (tree_view->scroll_timeout_id); g_source_remove (tree_view->priv->scroll_timeout_id);
tree_view->scroll_timeout_id = 0; tree_view->priv->scroll_timeout_id = 0;
} }
GTK_WIDGET_CLASS (parent_class)->unmap (widget); GTK_WIDGET_CLASS (parent_class)->unmap (widget);
@ -330,7 +338,7 @@ gimp_container_tree_view_menu_position (GtkMenu *menu,
*y += widget->allocation.y; *y += widget->allocation.y;
} }
if (gtk_tree_selection_get_selected (tree_view->selection, NULL, if (gtk_tree_selection_get_selected (tree_view->priv->selection, NULL,
&selected_iter)) &selected_iter))
{ {
GtkTreePath *path; GtkTreePath *path;
@ -408,16 +416,16 @@ gimp_container_tree_view_connect_name_edited (GimpContainerTreeView *tree_view,
g_return_if_fail (GIMP_IS_CONTAINER_TREE_VIEW (tree_view)); g_return_if_fail (GIMP_IS_CONTAINER_TREE_VIEW (tree_view));
g_return_if_fail (callback != NULL); g_return_if_fail (callback != NULL);
g_object_set (tree_view->name_cell, g_object_set (tree_view->priv->name_cell,
"mode", GTK_CELL_RENDERER_MODE_EDITABLE, "mode", GTK_CELL_RENDERER_MODE_EDITABLE,
"editable", TRUE, "editable", TRUE,
NULL); NULL);
if (! g_list_find (tree_view->editable_cells, tree_view->name_cell)) if (! g_list_find (tree_view->priv->editable_cells, tree_view->priv->name_cell))
tree_view->editable_cells = g_list_prepend (tree_view->editable_cells, tree_view->priv->editable_cells = g_list_prepend (tree_view->priv->editable_cells,
tree_view->name_cell); tree_view->priv->name_cell);
g_signal_connect (tree_view->name_cell, "edited", g_signal_connect (tree_view->priv->name_cell, "edited",
callback, callback,
data); data);
} }
@ -610,7 +618,7 @@ gimp_container_tree_view_reorder_item (GimpContainerView *view,
container = gimp_container_view_get_container (view); container = gimp_container_view_get_container (view);
selected = gtk_tree_selection_get_selected (tree_view->selection, selected = gtk_tree_selection_get_selected (tree_view->priv->selection,
NULL, &selected_iter); NULL, &selected_iter);
if (selected) if (selected)
@ -709,13 +717,13 @@ gimp_container_tree_view_select_item (GimpContainerView *view,
path = gtk_tree_model_get_path (tree_view->model, iter); path = gtk_tree_model_get_path (tree_view->model, iter);
g_signal_handlers_block_by_func (tree_view->selection, g_signal_handlers_block_by_func (tree_view->priv->selection,
gimp_container_tree_view_selection_changed, gimp_container_tree_view_selection_changed,
tree_view); tree_view);
gtk_tree_view_set_cursor (tree_view->view, path, NULL, FALSE); gtk_tree_view_set_cursor (tree_view->view, path, NULL, FALSE);
g_signal_handlers_unblock_by_func (tree_view->selection, g_signal_handlers_unblock_by_func (tree_view->priv->selection,
gimp_container_tree_view_selection_changed, gimp_container_tree_view_selection_changed,
tree_view); tree_view);
@ -726,7 +734,7 @@ gimp_container_tree_view_select_item (GimpContainerView *view,
} }
else else
{ {
gtk_tree_selection_unselect_all (tree_view->selection); gtk_tree_selection_unselect_all (tree_view->priv->selection);
} }
return TRUE; return TRUE;
@ -826,7 +834,7 @@ gimp_container_tree_view_name_canceled (GtkCellRendererText *cell,
{ {
GtkTreeIter iter; GtkTreeIter iter;
if (gtk_tree_selection_get_selected (tree_view->selection, NULL, &iter)) if (gtk_tree_selection_get_selected (tree_view->priv->selection, NULL, &iter))
{ {
GimpViewRenderer *renderer; GimpViewRenderer *renderer;
gchar *name; gchar *name;
@ -914,7 +922,7 @@ gimp_container_tree_view_button_press (GtkWidget *widget,
GtkTreeViewColumn *column; GtkTreeViewColumn *column;
GtkTreePath *path; GtkTreePath *path;
tree_view->dnd_renderer = NULL; tree_view->priv->dnd_renderer = NULL;
if (! GTK_WIDGET_HAS_FOCUS (widget)) if (! GTK_WIDGET_HAS_FOCUS (widget))
gtk_widget_grab_focus (widget); gtk_widget_grab_focus (widget);
@ -936,7 +944,7 @@ gimp_container_tree_view_button_press (GtkWidget *widget,
COLUMN_RENDERER, &renderer, COLUMN_RENDERER, &renderer,
-1); -1);
tree_view->dnd_renderer = renderer; tree_view->priv->dnd_renderer = renderer;
gtk_tree_view_get_background_area (tree_view->view, path, gtk_tree_view_get_background_area (tree_view->view, path,
column, &column_area); column, &column_area);
@ -962,7 +970,7 @@ gimp_container_tree_view_button_press (GtkWidget *widget,
if (! toggled_cell && ! clicked_cell) if (! toggled_cell && ! clicked_cell)
edit_cell = edit_cell =
gimp_container_tree_view_find_click_cell (widget, gimp_container_tree_view_find_click_cell (widget,
tree_view->editable_cells, tree_view->priv->editable_cells,
column, &column_area, column, &column_area,
bevent->x, bevent->y); bevent->x, bevent->y);
@ -1025,7 +1033,7 @@ gimp_container_tree_view_button_press (GtkWidget *widget,
{ {
if (edit_cell) if (edit_cell)
{ {
if (edit_cell == tree_view->name_cell) if (edit_cell == tree_view->priv->name_cell)
{ {
const gchar *real_name; const gchar *real_name;
@ -1179,8 +1187,8 @@ gimp_container_tree_view_drag_viewable (GtkWidget *widget,
if (context) if (context)
*context = gimp_container_view_get_context (GIMP_CONTAINER_VIEW (data)); *context = gimp_container_view_get_context (GIMP_CONTAINER_VIEW (data));
if (tree_view->dnd_renderer) if (tree_view->priv->dnd_renderer)
return tree_view->dnd_renderer->viewable; return tree_view->priv->dnd_renderer->viewable;
return NULL; return NULL;
} }
@ -1190,7 +1198,7 @@ gimp_container_tree_view_drag_pixbuf (GtkWidget *widget,
gpointer data) gpointer data)
{ {
GimpContainerTreeView *tree_view = GIMP_CONTAINER_TREE_VIEW (data); GimpContainerTreeView *tree_view = GIMP_CONTAINER_TREE_VIEW (data);
GimpViewRenderer *renderer = tree_view->dnd_renderer; GimpViewRenderer *renderer = tree_view->priv->dnd_renderer;
gint width; gint width;
gint height; gint height;

View File

@ -35,37 +35,32 @@
typedef struct _GimpContainerTreeViewClass GimpContainerTreeViewClass; typedef struct _GimpContainerTreeViewClass GimpContainerTreeViewClass;
typedef struct _GimpContainerTreeViewPriv GimpContainerTreeViewPriv;
struct _GimpContainerTreeView struct _GimpContainerTreeView
{ {
GimpContainerBox parent_instance; GimpContainerBox parent_instance;
GtkTreeModel *model; GtkTreeModel *model;
gint n_model_columns; gint n_model_columns;
GType model_columns[16]; GType model_columns[16];
gint model_column_renderer; gint model_column_renderer;
gint model_column_name; gint model_column_name;
gint model_column_name_attributes; gint model_column_name_attributes;
GtkTreeView *view; GtkTreeView *view;
GtkTreeSelection *selection;
GtkTreeViewColumn *main_column; GtkTreeViewColumn *main_column;
GtkCellRenderer *renderer_cell; GtkCellRenderer *renderer_cell;
GtkCellRenderer *name_cell;
GList *toggle_cells; GList *toggle_cells;
GList *renderer_cells; GList *renderer_cells;
GList *editable_cells;
gboolean dnd_drop_to_empty; gboolean dnd_drop_to_empty;
Gimp *dnd_gimp; /* eek */ Gimp *dnd_gimp; /* eek */
GimpViewRenderer *dnd_renderer;
guint scroll_timeout_id; GimpContainerTreeViewPriv *priv;
guint scroll_timeout_interval;
GdkScrollDirection scroll_dir;
}; };
struct _GimpContainerTreeViewClass struct _GimpContainerTreeViewClass