[gimp] app: Don't cast GimpDock to GimpDockWindow
- From: Martin Nordholts <martinn src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gimp] app: Don't cast GimpDock to GimpDockWindow
- Date: Tue, 15 Sep 2009 05:55:07 +0000 (UTC)
commit e87ed66ba7365efb385a4a4f51ba0a22aca1ec7a
Author: Martin Nordholts <martinn src gnome org>
Date: Tue Sep 15 07:58:14 2009 +0200
app: Don't cast GimpDock to GimpDockWindow
In preparation for making GimpDock inherit from a non-window, stop
casting GimpDocks to GimpDockWindows. Instead look up the toplevel
widget for a dock and get the dock window that way.
app/actions/windows-actions.c | 5 +++--
app/menus/windows-menu.c | 4 +++-
app/widgets/gimpdockbook.c | 14 ++++++++------
app/widgets/gimpdockwindow.c | 24 ++++++++++++++++++++++++
app/widgets/gimpdockwindow.h | 1 +
app/widgets/gimptoolbox.c | 17 ++++++++++-------
6 files changed, 49 insertions(+), 16 deletions(-)
---
diff --git a/app/actions/windows-actions.c b/app/actions/windows-actions.c
index 36299a6..de9f872 100644
--- a/app/actions/windows-actions.c
+++ b/app/actions/windows-actions.c
@@ -34,6 +34,7 @@
#include "widgets/gimpactiongroup.h"
#include "widgets/gimpdialogfactory.h"
#include "widgets/gimpdock.h"
+#include "widgets/gimpdockwindow.h"
#include "widgets/gimphelp-ids.h"
#include "display/gimpdisplay.h"
@@ -161,10 +162,10 @@ windows_actions_update (GimpActionGroup *group,
gchar *
windows_actions_dock_to_action_name (GimpDock *dock)
{
- g_return_val_if_fail (GIMP_IS_DOCK (dock), NULL);
+ GimpDockWindow *dock_window = gimp_dock_window_from_dock (dock);
return g_strdup_printf ("windows-dock-%04d",
- gimp_dock_window_get_id (GIMP_DOCK_WINDOW (dock)));
+ gimp_dock_window_get_id (dock_window));
}
diff --git a/app/menus/windows-menu.c b/app/menus/windows-menu.c
index 643b38a..b4ae215 100644
--- a/app/menus/windows-menu.c
+++ b/app/menus/windows-menu.c
@@ -295,8 +295,10 @@ windows_menu_dock_removed (GimpDialogFactory *factory,
static gchar *
windows_menu_dock_to_merge_id (GimpDock *dock)
{
+ GimpDockWindow *dock_window = gimp_dock_window_from_dock (dock);
+
return g_strdup_printf ("windows-dock-%04d-merge-id",
- gimp_dock_window_get_id (GIMP_DOCK_WINDOW (dock)));
+ gimp_dock_window_get_id (dock_window));
}
static void
diff --git a/app/widgets/gimpdockbook.c b/app/widgets/gimpdockbook.c
index 2e3df1c..dc823c4 100644
--- a/app/widgets/gimpdockbook.c
+++ b/app/widgets/gimpdockbook.c
@@ -36,6 +36,7 @@
#include "gimpdockable.h"
#include "gimpdockbook.h"
#include "gimpdocked.h"
+#include "gimpdockwindow.h"
#include "gimphelp-ids.h"
#include "gimpmenufactory.h"
#include "gimpstringaction.h"
@@ -463,9 +464,10 @@ GtkWidget *
gimp_dockbook_create_tab_widget (GimpDockbook *dockbook,
GimpDockable *dockable)
{
- GtkWidget *tab_widget;
- GtkIconSize tab_size = DEFAULT_TAB_ICON_SIZE;
- GtkAction *action = NULL;
+ GtkWidget *tab_widget;
+ GimpDockWindow *dock_window;
+ GtkIconSize tab_size = DEFAULT_TAB_ICON_SIZE;
+ GtkAction *action = NULL;
gtk_widget_style_get (GTK_WIDGET (dockbook),
"tab-icon-size", &tab_size,
@@ -490,8 +492,8 @@ gimp_dockbook_create_tab_widget (GimpDockbook *dockbook,
}
/* EEK */
- if (GIMP_IS_DOCK_WINDOW (dockbook->p->dock) &&
- gimp_dock_window_get_ui_manager (GIMP_DOCK_WINDOW (dockbook->p->dock)))
+ dock_window = gimp_dock_window_from_dock (dockbook->p->dock);
+ if (dock_window && gimp_dock_window_get_ui_manager (dock_window))
{
const gchar *dialog_id;
@@ -503,7 +505,7 @@ gimp_dockbook_create_tab_widget (GimpDockbook *dockbook,
GimpActionGroup *group;
group = gimp_ui_manager_get_action_group
- (gimp_dock_window_get_ui_manager (GIMP_DOCK_WINDOW (dockbook->p->dock)), "dialogs");
+ (gimp_dock_window_get_ui_manager (dock_window), "dialogs");
if (group)
{
diff --git a/app/widgets/gimpdockwindow.c b/app/widgets/gimpdockwindow.c
index dc34665..9973a55 100644
--- a/app/widgets/gimpdockwindow.c
+++ b/app/widgets/gimpdockwindow.c
@@ -527,3 +527,27 @@ gimp_dock_window_get_ui_manager (GimpDockWindow *dock_window)
return dock_window->p->ui_manager;
}
+
+/**
+ * gimp_dock_window_from_dock:
+ * @dock:
+ *
+ * For convenience.
+ *
+ * Returns: If the toplevel widget for the dock is a GimpDockWindow,
+ * return that. Otherwise return %NULL.
+ **/
+GimpDockWindow *
+gimp_dock_window_from_dock (GimpDock *dock)
+{
+ GtkWidget *toplevel = NULL;
+
+ g_return_val_if_fail (GIMP_IS_DOCK (dock), NULL);
+
+ toplevel = gtk_widget_get_toplevel (GTK_WIDGET (dock));
+
+ if (GIMP_IS_DOCK_WINDOW (toplevel))
+ return GIMP_DOCK_WINDOW (toplevel);
+ else
+ return NULL;
+}
diff --git a/app/widgets/gimpdockwindow.h b/app/widgets/gimpdockwindow.h
index 8a4a064..228a8a5 100644
--- a/app/widgets/gimpdockwindow.h
+++ b/app/widgets/gimpdockwindow.h
@@ -56,6 +56,7 @@ struct _GimpDockWindowClass
GType gimp_dock_window_get_type (void) G_GNUC_CONST;
gint gimp_dock_window_get_id (GimpDockWindow *dock_window);
GimpUIManager * gimp_dock_window_get_ui_manager (GimpDockWindow *dock_window);
+GimpDockWindow * gimp_dock_window_from_dock (GimpDock *dock);
#endif /* __GIMP_DOCK_WINDOW_H__ */
diff --git a/app/widgets/gimptoolbox.c b/app/widgets/gimptoolbox.c
index 0892df9..7e36d53 100644
--- a/app/widgets/gimptoolbox.c
+++ b/app/widgets/gimptoolbox.c
@@ -39,6 +39,7 @@
#include "gimpdevices.h"
#include "gimpdialogfactory.h"
#include "gimpdockseparator.h"
+#include "gimpdockwindow.h"
#include "gimphelp-ids.h"
#include "gimptoolbox.h"
#include "gimptoolbox-color-area.h"
@@ -690,10 +691,11 @@ toolbox_create_tools (GimpToolbox *toolbox,
list;
list = g_list_next (list))
{
- GimpToolInfo *tool_info = list->data;
- GtkWidget *button;
- GtkWidget *image;
- const gchar *stock_id;
+ GimpToolInfo *tool_info = list->data;
+ GtkWidget *button;
+ GtkWidget *image;
+ GimpDockWindow *dock_window;
+ const gchar *stock_id;
button = gtk_radio_button_new (group);
group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (button));
@@ -728,7 +730,8 @@ toolbox_create_tools (GimpToolbox *toolbox,
G_CALLBACK (toolbox_tool_button_press),
toolbox);
- if (gimp_dock_window_get_ui_manager (GIMP_DOCK_WINDOW (toolbox)))
+ dock_window = gimp_dock_window_from_dock (GIMP_DOCK (toolbox));
+ if (gimp_dock_window_get_ui_manager (dock_window))
{
GimpUIManager *ui_manager;
GtkAction *action;
@@ -743,8 +746,8 @@ toolbox_create_tools (GimpToolbox *toolbox,
name = g_strdup_printf ("tools-%s", tmp);
g_free (tmp);
- ui_manager = gimp_dock_window_get_ui_manager (GIMP_DOCK_WINDOW (toolbox));
- action = gimp_ui_manager_find_action (ui_manager, "tools", name);
+ ui_manager = gimp_dock_window_get_ui_manager (dock_window);
+ action = gimp_ui_manager_find_action (ui_manager, "tools", name);
g_free (name);
if (action)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]