[gimp] app: Store GimpDialogsState per dialog factory
- From: Martin Nordholts <martinn src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] app: Store GimpDialogsState per dialog factory
- Date: Sun, 28 Feb 2010 17:46:47 +0000 (UTC)
commit 6647c495f3c0e17e9420e77b0cd7d2967ad9026b
Author: Martin Nordholts <martinn src gnome org>
Date: Sun Feb 28 18:48:16 2010 +0100
app: Store GimpDialogsState per dialog factory
Get rid of the file-static variable 'dialogs_state' from
gimpdialogfactory.c and move it into the GimpDialogFactory struct.
app/actions/windows-commands.c | 4 +-
app/display/gimpimagewindow.c | 4 +-
app/widgets/gimpdialogfactory.c | 66 ++++++++++++++++++--------------------
app/widgets/gimpdialogfactory.h | 9 +++--
4 files changed, 40 insertions(+), 43 deletions(-)
---
diff --git a/app/actions/windows-commands.c b/app/actions/windows-commands.c
index 4c6890c..6318e87 100644
--- a/app/actions/windows-commands.c
+++ b/app/actions/windows-commands.c
@@ -54,7 +54,7 @@ windows_hide_docks_cmd_callback (GtkAction *action,
gpointer data)
{
gboolean active = gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action));
- GimpDialogsState state = gimp_dialog_factories_get_state ();
+ GimpDialogsState state = gimp_dialog_factory_get_state (global_dialog_factory);
GimpDialogsState new_state = state;
Gimp *gimp = NULL;
return_if_no_gimp (gimp, data);
@@ -69,7 +69,7 @@ windows_hide_docks_cmd_callback (GtkAction *action,
new_state = GIMP_DIALOGS_SHOWN;
if (state != new_state)
- gimp_dialog_factories_set_state (new_state);
+ gimp_dialog_factory_set_state (global_dialog_factory, new_state);
g_object_set (gimp->config,
"hide-docks", active,
diff --git a/app/display/gimpimagewindow.c b/app/display/gimpimagewindow.c
index 3afe6a9..69cbbae 100644
--- a/app/display/gimpimagewindow.c
+++ b/app/display/gimpimagewindow.c
@@ -546,12 +546,12 @@ gimp_image_window_window_state_event (GtkWidget *widget,
{
GIMP_LOG (WM, "No displays visible any longer");
- gimp_dialog_factories_hide_with_display ();
+ gimp_dialog_factory_hide_with_display (private->dialog_factory);
}
}
else
{
- gimp_dialog_factories_show_with_display ();
+ gimp_dialog_factory_show_with_display (private->dialog_factory);
}
if (gimp_progress_is_active (GIMP_PROGRESS (statusbar)))
diff --git a/app/widgets/gimpdialogfactory.c b/app/widgets/gimpdialogfactory.c
index cb7c38b..cc3942c 100644
--- a/app/widgets/gimpdialogfactory.c
+++ b/app/widgets/gimpdialogfactory.c
@@ -63,6 +63,8 @@ struct _GimpDialogFactoryPrivate
GList *session_infos;
GList *registered_dialogs;
+
+ GimpDialogsState dialog_state;
};
@@ -83,12 +85,8 @@ static gboolean gimp_dialog_factory_set_user_pos (GtkWidget
static gboolean gimp_dialog_factory_dialog_configure (GtkWidget *dialog,
GdkEventConfigure *cevent,
GimpDialogFactory *factory);
-static void gimp_dialog_factories_hide_foreach (gconstpointer key,
- GimpDialogFactory *factory,
- gpointer data);
-static void gimp_dialog_factories_show_foreach (gconstpointer key,
- GimpDialogFactory *factory,
- gpointer data);
+static void gimp_dialog_factory_hide (GimpDialogFactory *factory);
+static void gimp_dialog_factory_show (GimpDialogFactory *factory);
static void gimp_dialog_factories_set_busy_foreach (gconstpointer key,
GimpDialogFactory *factory,
gpointer data);
@@ -103,8 +101,6 @@ G_DEFINE_TYPE (GimpDialogFactory, gimp_dialog_factory, GIMP_TYPE_OBJECT)
static guint factory_signals[LAST_SIGNAL] = { 0 };
-static GimpDialogsState dialogs_state = GIMP_DIALOGS_SHOWN;
-
static void
gimp_dialog_factory_class_init (GimpDialogFactoryClass *klass)
@@ -145,6 +141,7 @@ gimp_dialog_factory_init (GimpDialogFactory *factory)
factory->p = G_TYPE_INSTANCE_GET_PRIVATE (factory,
GIMP_TYPE_DIALOG_FACTORY,
GimpDialogFactoryPrivate);
+ factory->p->dialog_state = GIMP_DIALOGS_SHOWN;
}
static void
@@ -1025,10 +1022,12 @@ gimp_dialog_factory_remove_dialog (GimpDialogFactory *factory,
void
gimp_dialog_factory_hide_dialog (GtkWidget *dialog)
{
+ GimpDialogFactory *factory = NULL;
+
g_return_if_fail (GTK_IS_WIDGET (dialog));
g_return_if_fail (gtk_widget_is_toplevel (dialog));
- if (! gimp_dialog_factory_from_widget (dialog, NULL))
+ if (! (factory = gimp_dialog_factory_from_widget (dialog, NULL)))
{
g_warning ("%s: dialog was not created by a GimpDialogFactory",
G_STRFUNC);
@@ -1037,55 +1036,56 @@ gimp_dialog_factory_hide_dialog (GtkWidget *dialog)
gtk_widget_hide (dialog);
- if (dialogs_state != GIMP_DIALOGS_SHOWN)
+ if (factory->p->dialog_state != GIMP_DIALOGS_SHOWN)
g_object_set_data (G_OBJECT (dialog), GIMP_DIALOG_VISIBILITY_KEY,
GINT_TO_POINTER (GIMP_DIALOG_VISIBILITY_INVISIBLE));
}
void
-gimp_dialog_factories_set_state (GimpDialogsState state)
+gimp_dialog_factory_set_state (GimpDialogFactory *factory,
+ GimpDialogsState state)
{
- GimpDialogFactoryClass *factory_class;
-
- factory_class = g_type_class_peek (GIMP_TYPE_DIALOG_FACTORY);
+ g_return_if_fail (GIMP_IS_DIALOG_FACTORY (factory));
- dialogs_state = state;
+ factory->p->dialog_state = state;
if (state == GIMP_DIALOGS_SHOWN)
{
- g_hash_table_foreach (factory_class->factories,
- (GHFunc) gimp_dialog_factories_show_foreach,
- NULL);
+ gimp_dialog_factory_show (factory);
}
else
{
- g_hash_table_foreach (factory_class->factories,
- (GHFunc) gimp_dialog_factories_hide_foreach,
- NULL);
+ gimp_dialog_factory_hide (factory);
}
}
GimpDialogsState
-gimp_dialog_factories_get_state (void)
+gimp_dialog_factory_get_state (GimpDialogFactory *factory)
{
- return dialogs_state;
+ g_return_val_if_fail (GIMP_IS_DIALOG_FACTORY (factory), 0);
+
+ return factory->p->dialog_state;
}
void
-gimp_dialog_factories_show_with_display (void)
+gimp_dialog_factory_show_with_display (GimpDialogFactory *factory)
{
- if (dialogs_state == GIMP_DIALOGS_HIDDEN_WITH_DISPLAY)
+ g_return_if_fail (GIMP_IS_DIALOG_FACTORY (factory));
+
+ if (factory->p->dialog_state == GIMP_DIALOGS_HIDDEN_WITH_DISPLAY)
{
- gimp_dialog_factories_set_state (GIMP_DIALOGS_SHOWN);
+ gimp_dialog_factory_set_state (factory, GIMP_DIALOGS_SHOWN);
}
}
void
-gimp_dialog_factories_hide_with_display (void)
+gimp_dialog_factory_hide_with_display (GimpDialogFactory *factory)
{
- if (dialogs_state == GIMP_DIALOGS_SHOWN)
+ g_return_if_fail (GIMP_IS_DIALOG_FACTORY (factory));
+
+ if (factory->p->dialog_state == GIMP_DIALOGS_SHOWN)
{
- gimp_dialog_factories_set_state (GIMP_DIALOGS_HIDDEN_WITH_DISPLAY);
+ gimp_dialog_factory_set_state (factory, GIMP_DIALOGS_HIDDEN_WITH_DISPLAY);
}
}
@@ -1368,9 +1368,7 @@ gimp_dialog_factory_restore (GimpDialogFactory *factory)
}
static void
-gimp_dialog_factories_hide_foreach (gconstpointer key,
- GimpDialogFactory *factory,
- gpointer data)
+gimp_dialog_factory_hide (GimpDialogFactory *factory)
{
GList *list;
@@ -1410,9 +1408,7 @@ gimp_dialog_factories_hide_foreach (gconstpointer key,
}
static void
-gimp_dialog_factories_show_foreach (gconstpointer key,
- GimpDialogFactory *factory,
- gpointer data)
+gimp_dialog_factory_show (GimpDialogFactory *factory)
{
GList *list;
diff --git a/app/widgets/gimpdialogfactory.h b/app/widgets/gimpdialogfactory.h
index 60b0d30..07b940b 100644
--- a/app/widgets/gimpdialogfactory.h
+++ b/app/widgets/gimpdialogfactory.h
@@ -161,11 +161,12 @@ void gimp_dialog_factory_hide_dialog (GtkWidget
void gimp_dialog_factory_save (GimpDialogFactory *factory,
GimpConfigWriter *writer);
void gimp_dialog_factory_restore (GimpDialogFactory *factory);
+void gimp_dialog_factory_set_state (GimpDialogFactory *factory,
+ GimpDialogsState state);
+GimpDialogsState gimp_dialog_factory_get_state (GimpDialogFactory *factory);
+void gimp_dialog_factory_show_with_display (GimpDialogFactory *factory);
+void gimp_dialog_factory_hide_with_display (GimpDialogFactory *factory);
-void gimp_dialog_factories_set_state (GimpDialogsState state);
-GimpDialogsState gimp_dialog_factories_get_state (void);
-void gimp_dialog_factories_show_with_display (void);
-void gimp_dialog_factories_hide_with_display (void);
void gimp_dialog_factories_set_busy (void);
void gimp_dialog_factories_unset_busy (void);
GimpDialogFactory * gimp_dialog_factory_from_widget (GtkWidget *dialog,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]