gimp r25082 - in trunk: . app/widgets
- From: neo svn gnome org
- To: svn-commits-list gnome org
- Subject: gimp r25082 - in trunk: . app/widgets
- Date: Mon, 10 Mar 2008 16:01:48 +0000 (GMT)
Author: neo
Date: Mon Mar 10 16:01:48 2008
New Revision: 25082
URL: http://svn.gnome.org/viewvc/gimp?rev=25082&view=rev
Log:
2008-03-10 Sven Neumann <sven gimp org>
* app/widgets/gimpdockable.[ch]
* app/widgets/gimpdockbook.c: moved code for the drag widget to
GimpDockable. Use semi-bold text for the drag widget also.
Modified:
trunk/ChangeLog
trunk/app/widgets/gimpdockable.c
trunk/app/widgets/gimpdockable.h
trunk/app/widgets/gimpdockbook.c
Modified: trunk/app/widgets/gimpdockable.c
==============================================================================
--- trunk/app/widgets/gimpdockable.c (original)
+++ trunk/app/widgets/gimpdockable.c Mon Mar 10 16:01:48 2008
@@ -446,14 +446,30 @@
}
}
+static void
+gimp_dockable_layout_set_weight (PangoLayout *layout,
+ PangoWeight weight)
+{
+ PangoAttrList *attrs;
+ PangoAttribute *attr;
+
+ attrs = pango_attr_list_new ();
+
+ attr = pango_attr_weight_new (PANGO_WEIGHT_SEMIBOLD);
+ attr->start_index = 0;
+ attr->end_index = -1;
+ pango_attr_list_insert (attrs, attr);
+
+ pango_layout_set_attributes (layout, attrs);
+ pango_attr_list_unref (attrs);
+}
+
static PangoLayout *
gimp_dockable_create_title_layout (GimpDockable *dockable,
GtkWidget *widget,
gint width)
{
PangoLayout *layout;
- PangoAttrList *attrs;
- PangoAttribute *attr;
GtkBin *bin = GTK_BIN (dockable);
gchar *title = NULL;
@@ -464,15 +480,7 @@
title ? title : dockable->blurb);
g_free (title);
- attrs = pango_attr_list_new ();
-
- attr = pango_attr_weight_new (PANGO_WEIGHT_SEMIBOLD);
- attr->start_index = 0;
- attr->end_index = -1;
- pango_attr_list_insert (attrs, attr);
-
- pango_layout_set_attributes (layout, attrs);
- pango_attr_list_unref (attrs);
+ gimp_dockable_layout_set_weight (layout, PANGO_WEIGHT_SEMIBOLD);
if (width > 0)
{
@@ -633,6 +641,91 @@
callback, callback_data);
}
+static GtkWidget *
+gimp_dockable_get_tab_widget_internal (GimpDockable *dockable,
+ GimpContext *context,
+ GimpTabStyle tab_style,
+ GtkIconSize size,
+ gboolean dnd)
+{
+ GtkWidget *tab_widget = NULL;
+ GtkWidget *label = NULL;
+ GtkWidget *icon = NULL;
+
+ switch (tab_style)
+ {
+ case GIMP_TAB_STYLE_NAME:
+ case GIMP_TAB_STYLE_ICON_NAME:
+ case GIMP_TAB_STYLE_PREVIEW_NAME:
+ label = gtk_label_new (dockable->name);
+ break;
+
+ case GIMP_TAB_STYLE_BLURB:
+ case GIMP_TAB_STYLE_ICON_BLURB:
+ case GIMP_TAB_STYLE_PREVIEW_BLURB:
+ label = gtk_label_new (dockable->blurb);
+ break;
+
+ default:
+ break;
+ }
+
+ switch (tab_style)
+ {
+ case GIMP_TAB_STYLE_ICON:
+ case GIMP_TAB_STYLE_ICON_NAME:
+ case GIMP_TAB_STYLE_ICON_BLURB:
+ icon = gtk_image_new_from_stock (dockable->stock_id, size);
+ break;
+
+ case GIMP_TAB_STYLE_PREVIEW:
+ case GIMP_TAB_STYLE_PREVIEW_NAME:
+ case GIMP_TAB_STYLE_PREVIEW_BLURB:
+ if (GTK_BIN (dockable)->child)
+ icon = gimp_docked_get_preview (GIMP_DOCKED (GTK_BIN (dockable)->child),
+ context, size);
+
+ if (! icon)
+ icon = gtk_image_new_from_stock (dockable->stock_id, size);
+ break;
+
+ default:
+ break;
+ }
+
+ if (label && dnd)
+ gimp_label_set_attributes (GTK_LABEL (label),
+ PANGO_ATTR_WEIGHT, PANGO_WEIGHT_SEMIBOLD,
+ -1);
+
+ switch (tab_style)
+ {
+ case GIMP_TAB_STYLE_ICON:
+ case GIMP_TAB_STYLE_PREVIEW:
+ tab_widget = icon;
+ break;
+
+ case GIMP_TAB_STYLE_NAME:
+ case GIMP_TAB_STYLE_BLURB:
+ tab_widget = label;
+ break;
+
+ case GIMP_TAB_STYLE_ICON_NAME:
+ case GIMP_TAB_STYLE_ICON_BLURB:
+ case GIMP_TAB_STYLE_PREVIEW_NAME:
+ case GIMP_TAB_STYLE_PREVIEW_BLURB:
+ tab_widget = gtk_hbox_new (FALSE, dnd ? 6 : 2);
+
+ gtk_box_pack_start (GTK_BOX (tab_widget), icon, FALSE, FALSE, 0);
+ gtk_widget_show (icon);
+
+ gtk_box_pack_start (GTK_BOX (tab_widget), label, FALSE, FALSE, 0);
+ gtk_widget_show (label);
+ break;
+ }
+
+ return tab_widget;
+}
/* public functions */
@@ -724,81 +817,34 @@
GimpTabStyle tab_style,
GtkIconSize size)
{
- GtkWidget *tab_widget = NULL;
- GtkWidget *label = NULL;
- GtkWidget *icon = NULL;
-
g_return_val_if_fail (GIMP_IS_DOCKABLE (dockable), NULL);
g_return_val_if_fail (GIMP_IS_CONTEXT (context), NULL);
- switch (tab_style)
- {
- case GIMP_TAB_STYLE_NAME:
- case GIMP_TAB_STYLE_ICON_NAME:
- case GIMP_TAB_STYLE_PREVIEW_NAME:
- label = gtk_label_new (dockable->name);
- break;
-
- case GIMP_TAB_STYLE_BLURB:
- case GIMP_TAB_STYLE_ICON_BLURB:
- case GIMP_TAB_STYLE_PREVIEW_BLURB:
- label = gtk_label_new (dockable->blurb);
- break;
-
- default:
- break;
- }
-
- switch (tab_style)
- {
- case GIMP_TAB_STYLE_ICON:
- case GIMP_TAB_STYLE_ICON_NAME:
- case GIMP_TAB_STYLE_ICON_BLURB:
- icon = gtk_image_new_from_stock (dockable->stock_id, size);
- break;
-
- case GIMP_TAB_STYLE_PREVIEW:
- case GIMP_TAB_STYLE_PREVIEW_NAME:
- case GIMP_TAB_STYLE_PREVIEW_BLURB:
- if (GTK_BIN (dockable)->child)
- icon = gimp_docked_get_preview (GIMP_DOCKED (GTK_BIN (dockable)->child),
- context, size);
-
- if (! icon)
- icon = gtk_image_new_from_stock (dockable->stock_id, size);
- break;
-
- default:
- break;
- }
-
- switch (tab_style)
- {
- case GIMP_TAB_STYLE_ICON:
- case GIMP_TAB_STYLE_PREVIEW:
- tab_widget = icon;
- break;
+ return gimp_dockable_get_tab_widget_internal (dockable, context,
+ tab_style, size, FALSE);
+}
- case GIMP_TAB_STYLE_NAME:
- case GIMP_TAB_STYLE_BLURB:
- tab_widget = label;
- break;
+GtkWidget *
+gimp_dockable_get_drag_widget (GimpDockable *dockable)
+{
+ GtkWidget *frame;
+ GtkWidget *widget;
- case GIMP_TAB_STYLE_ICON_NAME:
- case GIMP_TAB_STYLE_ICON_BLURB:
- case GIMP_TAB_STYLE_PREVIEW_NAME:
- case GIMP_TAB_STYLE_PREVIEW_BLURB:
- tab_widget = gtk_hbox_new (FALSE, 2);
+ g_return_val_if_fail (GIMP_IS_DOCKABLE (dockable), NULL);
- gtk_box_pack_start (GTK_BOX (tab_widget), icon, FALSE, FALSE, 0);
- gtk_widget_show (icon);
+ frame = gtk_frame_new (NULL);
+ gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_OUT);
- gtk_box_pack_start (GTK_BOX (tab_widget), label, FALSE, FALSE, 0);
- gtk_widget_show (label);
- break;
- }
+ widget = gimp_dockable_get_tab_widget_internal (dockable,
+ dockable->context,
+ GIMP_TAB_STYLE_ICON_BLURB,
+ GTK_ICON_SIZE_DND,
+ TRUE);
+ gtk_container_set_border_width (GTK_CONTAINER (widget), 6);
+ gtk_container_add (GTK_CONTAINER (frame), widget);
+ gtk_widget_show (widget);
- return tab_widget;
+ return frame;
}
void
Modified: trunk/app/widgets/gimpdockable.h
==============================================================================
--- trunk/app/widgets/gimpdockable.h (original)
+++ trunk/app/widgets/gimpdockable.h Mon Mar 10 16:01:48 2008
@@ -71,33 +71,34 @@
};
-GType gimp_dockable_get_type (void) G_GNUC_CONST;
+GType gimp_dockable_get_type (void) G_GNUC_CONST;
-GtkWidget * gimp_dockable_new (const gchar *name,
- const gchar *blurb,
- const gchar *stock_id,
- const gchar *help_id);
-
-void gimp_dockable_set_aux_info (GimpDockable *dockable,
- GList *aux_info);
-GList * gimp_dockable_get_aux_info (GimpDockable *dockable);
-
-void gimp_dockable_set_tab_style (GimpDockable *dockable,
- GimpTabStyle tab_style);
-GtkWidget * gimp_dockable_get_tab_widget (GimpDockable *dockable,
- GimpContext *context,
- GimpTabStyle tab_style,
- GtkIconSize size);
-void gimp_dockable_set_context (GimpDockable *dockable,
- GimpContext *context);
-GimpUIManager * gimp_dockable_get_menu (GimpDockable *dockable,
- const gchar **ui_path,
- gpointer *popup_data);
+GtkWidget * gimp_dockable_new (const gchar *name,
+ const gchar *blurb,
+ const gchar *stock_id,
+ const gchar *help_id);
+
+void gimp_dockable_set_aux_info (GimpDockable *dockable,
+ GList *aux_info);
+GList * gimp_dockable_get_aux_info (GimpDockable *dockable);
+
+void gimp_dockable_set_tab_style (GimpDockable *dockable,
+ GimpTabStyle tab_style);
+GtkWidget * gimp_dockable_get_tab_widget (GimpDockable *dockable,
+ GimpContext *context,
+ GimpTabStyle tab_style,
+ GtkIconSize size);
+GtkWidget * gimp_dockable_get_drag_widget (GimpDockable *dockable);
+void gimp_dockable_set_context (GimpDockable *dockable,
+ GimpContext *context);
+GimpUIManager * gimp_dockable_get_menu (GimpDockable *dockable,
+ const gchar **ui_path,
+ gpointer *popup_data);
-void gimp_dockable_detach (GimpDockable *dockable);
+void gimp_dockable_detach (GimpDockable *dockable);
-void gimp_dockable_blink (GimpDockable *dockable);
-void gimp_dockable_blink_cancel (GimpDockable *dockable);
+void gimp_dockable_blink (GimpDockable *dockable);
+void gimp_dockable_blink_cancel (GimpDockable *dockable);
#endif /* __GIMP_DOCKABLE_H__ */
Modified: trunk/app/widgets/gimpdockbook.c
==============================================================================
--- trunk/app/widgets/gimpdockbook.c (original)
+++ trunk/app/widgets/gimpdockbook.c Mon Mar 10 16:01:48 2008
@@ -102,9 +102,6 @@
gint y,
guint time);
-static gboolean gimp_dockbook_tab_drag_expose (GtkWidget *widget,
- GdkEventExpose *event);
-
static void gimp_dockbook_add_tab_timeout (GimpDockbook *dockbook,
GimpDockable *dockable);
static void gimp_dockbook_remove_tab_timeout (GimpDockbook *dockbook);
@@ -587,21 +584,7 @@
gtk_window_set_type_hint (GTK_WINDOW (window), GDK_WINDOW_TYPE_HINT_DND);
gtk_window_set_screen (GTK_WINDOW (window), gtk_widget_get_screen (widget));
- view = gimp_dockable_get_tab_widget (dockable,
- dockable->context,
- GIMP_TAB_STYLE_ICON_BLURB,
- DND_WIDGET_ICON_SIZE);
-
- g_signal_connect (view, "expose-event",
- G_CALLBACK (gimp_dockbook_tab_drag_expose),
- NULL);
-
- if (GTK_IS_CONTAINER (view))
- gtk_container_set_border_width (GTK_CONTAINER (view), 6);
-
- if (GTK_IS_HBOX (view))
- gtk_box_set_spacing (GTK_BOX (view), 6);
-
+ view = gimp_dockable_get_drag_widget (dockable);
gtk_container_add (GTK_CONTAINER (window), view);
gtk_widget_show (view);
@@ -772,24 +755,6 @@
return FALSE;
}
-static gboolean
-gimp_dockbook_tab_drag_expose (GtkWidget *widget,
- GdkEventExpose *event)
-{
- /* mimic the appearance of a notebook tab */
-
- gtk_paint_extension (widget->style, widget->window,
- widget->state, GTK_SHADOW_OUT,
- &event->area, widget, "tab",
- widget->allocation.x,
- widget->allocation.y,
- widget->allocation.width,
- widget->allocation.height,
- GTK_POS_BOTTOM);
-
- return FALSE;
-}
-
static void
gimp_dockbook_add_tab_timeout (GimpDockbook *dockbook,
GimpDockable *dockable)
@@ -798,6 +763,7 @@
g_timeout_add (TAB_HOVER_TIMEOUT,
(GSourceFunc) gimp_dockbook_tab_timeout,
dockbook);
+
dockbook->tab_hover_dockable = dockable;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]