app: Add gimp_dockable_create_event_box_tab_widget()

This commit is contained in:
Martin Nordholts 2010-06-11 07:35:07 +02:00
parent 5a9217e959
commit e827e7f1bf
1 changed files with 95 additions and 83 deletions

View File

@ -75,72 +75,67 @@ struct _GimpDockbookPrivate
}; };
static void gimp_dockbook_dispose (GObject *object); static void gimp_dockbook_dispose (GObject *object);
static void gimp_dockbook_finalize (GObject *object); static void gimp_dockbook_finalize (GObject *object);
static void gimp_dockbook_style_set (GtkWidget *widget,
static void gimp_dockbook_style_set (GtkWidget *widget, GtkStyle *prev_style);
GtkStyle *prev_style); static void gimp_dockbook_drag_leave (GtkWidget *widget,
GdkDragContext *context,
static void gimp_dockbook_drag_leave (GtkWidget *widget, guint time);
GdkDragContext *context, static gboolean gimp_dockbook_drag_motion (GtkWidget *widget,
guint time); GdkDragContext *context,
static gboolean gimp_dockbook_drag_motion (GtkWidget *widget, gint x,
GdkDragContext *context, gint y,
gint x, guint time);
gint y, static gboolean gimp_dockbook_drag_drop (GtkWidget *widget,
guint time); GdkDragContext *context,
static gboolean gimp_dockbook_drag_drop (GtkWidget *widget, gint x,
GdkDragContext *context, gint y,
gint x, guint time);
gint y, static void gimp_dockbook_dockable_added (GimpDockbook *dockbook,
guint time); GimpDockable *dockable);
static void gimp_dockbook_dockable_removed (GimpDockbook *dockbook,
static void gimp_dockbook_dockable_added (GimpDockbook *dockbook, GimpDockable *dockable);
GimpDockable *dockable); static void gimp_dockbook_update_tabs (GimpDockbook *dockbook,
static void gimp_dockbook_dockable_removed (GimpDockbook *dockbook, gboolean added);
GimpDockable *dockable); static void gimp_dockbook_recreate_tab_widgets (GimpDockbook *dockbook);
static void gimp_dockbook_update_tabs (GimpDockbook *dockbook, static void gimp_dockbook_tab_drag_source_setup (GtkWidget *widget,
gboolean added); GimpDockable *dockable);
static void gimp_dockbook_tab_drag_begin (GtkWidget *widget,
static void gimp_dockbook_recreate_tab_widgets GdkDragContext *context,
(GimpDockbook *dockbook); GimpDockable *dockable);
static void gimp_dockbook_tab_drag_source_setup (GtkWidget *widget, static void gimp_dockbook_tab_drag_end (GtkWidget *widget,
GimpDockable *dockable); GdkDragContext *context,
static void gimp_dockbook_tab_drag_begin (GtkWidget *widget, GimpDockable *dockable);
GdkDragContext *context, static void gimp_dockbook_tab_drag_leave (GtkWidget *widget,
GimpDockable *dockable); GdkDragContext *context,
static void gimp_dockbook_tab_drag_end (GtkWidget *widget, guint time,
GdkDragContext *context, GimpDockable *dockable);
GimpDockable *dockable); static gboolean gimp_dockbook_tab_drag_motion (GtkWidget *widget,
GdkDragContext *context,
static void gimp_dockbook_tab_drag_leave (GtkWidget *widget, gint x,
GdkDragContext *context, gint y,
guint time, guint time,
GimpDockable *dockable); GimpDockable *dockable);
static gboolean gimp_dockbook_tab_drag_motion (GtkWidget *widget, static gboolean gimp_dockbook_tab_drag_drop (GtkWidget *widget,
GdkDragContext *context, GdkDragContext *context,
gint x, gint x,
gint y, gint y,
guint time, guint time);
GimpDockable *dockable); static GtkWidget * gimp_dockable_create_event_box_tab_widget (GimpDockable *dockable,
static gboolean gimp_dockbook_tab_drag_drop (GtkWidget *widget, GimpContext *context,
GdkDragContext *context, GimpTabStyle tab_style,
gint x, GtkIconSize size);
gint y, static GtkIconSize gimp_dockbook_get_tab_icon_size (GimpDockbook *dockbook);
guint time); static void gimp_dockbook_add_tab_timeout (GimpDockbook *dockbook,
GimpDockable *dockable);
static GtkIconSize static void gimp_dockbook_remove_tab_timeout (GimpDockbook *dockbook);
gimp_dockbook_get_tab_icon_size (GimpDockbook *dockbook); static gboolean gimp_dockbook_tab_timeout (GimpDockbook *dockbook);
static void gimp_dockbook_add_tab_timeout (GimpDockbook *dockbook, static void gimp_dockbook_tab_locked_notify (GimpDockable *dockable,
GimpDockable *dockable); GParamSpec *pspec,
static void gimp_dockbook_remove_tab_timeout (GimpDockbook *dockbook); GimpDockbook *dockbook);
static gboolean gimp_dockbook_tab_timeout (GimpDockbook *dockbook); static void gimp_dockbook_help_func (const gchar *help_id,
static void gimp_dockbook_tab_locked_notify (GimpDockable *dockable, gpointer help_data);
GParamSpec *pspec,
GimpDockbook *dockbook);
static void gimp_dockbook_help_func (const gchar *help_id,
gpointer help_data);
G_DEFINE_TYPE (GimpDockbook, gimp_dockbook, GTK_TYPE_NOTEBOOK) G_DEFINE_TYPE (GimpDockbook, gimp_dockbook, GTK_TYPE_NOTEBOOK)
@ -568,23 +563,10 @@ gimp_dockbook_create_tab_widget (GimpDockbook *dockbook,
GtkAction *action = NULL; GtkAction *action = NULL;
tab_widget = tab_widget =
gimp_dockable_create_tab_widget (dockable, gimp_dockable_create_event_box_tab_widget (dockable,
gimp_dock_get_context (dockbook->p->dock), gimp_dock_get_context (dockbook->p->dock),
gimp_dockable_get_tab_style (dockable), gimp_dockable_get_tab_style (dockable),
gimp_dockbook_get_tab_icon_size (dockbook)); gimp_dockbook_get_tab_icon_size (dockbook));
if (! GIMP_IS_VIEW (tab_widget))
{
GtkWidget *event_box;
event_box = gtk_event_box_new ();
gtk_event_box_set_visible_window (GTK_EVENT_BOX (event_box), FALSE);
gtk_event_box_set_above_child (GTK_EVENT_BOX (event_box), TRUE);
gtk_container_add (GTK_CONTAINER (event_box), tab_widget);
gtk_widget_show (tab_widget);
tab_widget = event_box;
}
/* EEK */ /* EEK */
dock_window = gimp_dock_window_from_dock (dockbook->p->dock); dock_window = gimp_dock_window_from_dock (dockbook->p->dock);
@ -1012,6 +994,36 @@ gimp_dockbook_tab_drag_drop (GtkWidget *widget,
return handle; return handle;
} }
static GtkWidget *
gimp_dockable_create_event_box_tab_widget (GimpDockable *dockable,
GimpContext *context,
GimpTabStyle tab_style,
GtkIconSize size)
{
GtkWidget *tab_widget;
tab_widget =
gimp_dockable_create_tab_widget (dockable,
context,
tab_style,
size);
if (! GIMP_IS_VIEW (tab_widget))
{
GtkWidget *event_box;
event_box = gtk_event_box_new ();
gtk_event_box_set_visible_window (GTK_EVENT_BOX (event_box), FALSE);
gtk_event_box_set_above_child (GTK_EVENT_BOX (event_box), TRUE);
gtk_container_add (GTK_CONTAINER (event_box), tab_widget);
gtk_widget_show (tab_widget);
tab_widget = event_box;
}
return tab_widget;
}
static GtkIconSize static GtkIconSize
gimp_dockbook_get_tab_icon_size (GimpDockbook *dockbook) gimp_dockbook_get_tab_icon_size (GimpDockbook *dockbook)
{ {