mirror of https://github.com/GNOME/gimp.git
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.
This commit is contained in:
parent
9447b125e6
commit
6647c495f3
|
@ -54,7 +54,7 @@ windows_hide_docks_cmd_callback (GtkAction *action,
|
||||||
gpointer data)
|
gpointer data)
|
||||||
{
|
{
|
||||||
gboolean active = gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action));
|
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;
|
GimpDialogsState new_state = state;
|
||||||
Gimp *gimp = NULL;
|
Gimp *gimp = NULL;
|
||||||
return_if_no_gimp (gimp, data);
|
return_if_no_gimp (gimp, data);
|
||||||
|
@ -69,7 +69,7 @@ windows_hide_docks_cmd_callback (GtkAction *action,
|
||||||
new_state = GIMP_DIALOGS_SHOWN;
|
new_state = GIMP_DIALOGS_SHOWN;
|
||||||
|
|
||||||
if (state != new_state)
|
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,
|
g_object_set (gimp->config,
|
||||||
"hide-docks", active,
|
"hide-docks", active,
|
||||||
|
|
|
@ -546,12 +546,12 @@ gimp_image_window_window_state_event (GtkWidget *widget,
|
||||||
{
|
{
|
||||||
GIMP_LOG (WM, "No displays visible any longer");
|
GIMP_LOG (WM, "No displays visible any longer");
|
||||||
|
|
||||||
gimp_dialog_factories_hide_with_display ();
|
gimp_dialog_factory_hide_with_display (private->dialog_factory);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
gimp_dialog_factories_show_with_display ();
|
gimp_dialog_factory_show_with_display (private->dialog_factory);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gimp_progress_is_active (GIMP_PROGRESS (statusbar)))
|
if (gimp_progress_is_active (GIMP_PROGRESS (statusbar)))
|
||||||
|
|
|
@ -63,6 +63,8 @@ struct _GimpDialogFactoryPrivate
|
||||||
GList *session_infos;
|
GList *session_infos;
|
||||||
|
|
||||||
GList *registered_dialogs;
|
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,
|
static gboolean gimp_dialog_factory_dialog_configure (GtkWidget *dialog,
|
||||||
GdkEventConfigure *cevent,
|
GdkEventConfigure *cevent,
|
||||||
GimpDialogFactory *factory);
|
GimpDialogFactory *factory);
|
||||||
static void gimp_dialog_factories_hide_foreach (gconstpointer key,
|
static void gimp_dialog_factory_hide (GimpDialogFactory *factory);
|
||||||
GimpDialogFactory *factory,
|
static void gimp_dialog_factory_show (GimpDialogFactory *factory);
|
||||||
gpointer data);
|
|
||||||
static void gimp_dialog_factories_show_foreach (gconstpointer key,
|
|
||||||
GimpDialogFactory *factory,
|
|
||||||
gpointer data);
|
|
||||||
static void gimp_dialog_factories_set_busy_foreach (gconstpointer key,
|
static void gimp_dialog_factories_set_busy_foreach (gconstpointer key,
|
||||||
GimpDialogFactory *factory,
|
GimpDialogFactory *factory,
|
||||||
gpointer data);
|
gpointer data);
|
||||||
|
@ -103,8 +101,6 @@ G_DEFINE_TYPE (GimpDialogFactory, gimp_dialog_factory, GIMP_TYPE_OBJECT)
|
||||||
|
|
||||||
static guint factory_signals[LAST_SIGNAL] = { 0 };
|
static guint factory_signals[LAST_SIGNAL] = { 0 };
|
||||||
|
|
||||||
static GimpDialogsState dialogs_state = GIMP_DIALOGS_SHOWN;
|
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gimp_dialog_factory_class_init (GimpDialogFactoryClass *klass)
|
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,
|
factory->p = G_TYPE_INSTANCE_GET_PRIVATE (factory,
|
||||||
GIMP_TYPE_DIALOG_FACTORY,
|
GIMP_TYPE_DIALOG_FACTORY,
|
||||||
GimpDialogFactoryPrivate);
|
GimpDialogFactoryPrivate);
|
||||||
|
factory->p->dialog_state = GIMP_DIALOGS_SHOWN;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -1025,10 +1022,12 @@ gimp_dialog_factory_remove_dialog (GimpDialogFactory *factory,
|
||||||
void
|
void
|
||||||
gimp_dialog_factory_hide_dialog (GtkWidget *dialog)
|
gimp_dialog_factory_hide_dialog (GtkWidget *dialog)
|
||||||
{
|
{
|
||||||
|
GimpDialogFactory *factory = NULL;
|
||||||
|
|
||||||
g_return_if_fail (GTK_IS_WIDGET (dialog));
|
g_return_if_fail (GTK_IS_WIDGET (dialog));
|
||||||
g_return_if_fail (gtk_widget_is_toplevel (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_warning ("%s: dialog was not created by a GimpDialogFactory",
|
||||||
G_STRFUNC);
|
G_STRFUNC);
|
||||||
|
@ -1037,55 +1036,56 @@ gimp_dialog_factory_hide_dialog (GtkWidget *dialog)
|
||||||
|
|
||||||
gtk_widget_hide (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,
|
g_object_set_data (G_OBJECT (dialog), GIMP_DIALOG_VISIBILITY_KEY,
|
||||||
GINT_TO_POINTER (GIMP_DIALOG_VISIBILITY_INVISIBLE));
|
GINT_TO_POINTER (GIMP_DIALOG_VISIBILITY_INVISIBLE));
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
gimp_dialog_factories_set_state (GimpDialogsState state)
|
gimp_dialog_factory_set_state (GimpDialogFactory *factory,
|
||||||
|
GimpDialogsState state)
|
||||||
{
|
{
|
||||||
GimpDialogFactoryClass *factory_class;
|
g_return_if_fail (GIMP_IS_DIALOG_FACTORY (factory));
|
||||||
|
|
||||||
factory_class = g_type_class_peek (GIMP_TYPE_DIALOG_FACTORY);
|
factory->p->dialog_state = state;
|
||||||
|
|
||||||
dialogs_state = state;
|
|
||||||
|
|
||||||
if (state == GIMP_DIALOGS_SHOWN)
|
if (state == GIMP_DIALOGS_SHOWN)
|
||||||
{
|
{
|
||||||
g_hash_table_foreach (factory_class->factories,
|
gimp_dialog_factory_show (factory);
|
||||||
(GHFunc) gimp_dialog_factories_show_foreach,
|
|
||||||
NULL);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
g_hash_table_foreach (factory_class->factories,
|
gimp_dialog_factory_hide (factory);
|
||||||
(GHFunc) gimp_dialog_factories_hide_foreach,
|
|
||||||
NULL);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
GimpDialogsState
|
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
|
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
|
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
|
static void
|
||||||
gimp_dialog_factories_hide_foreach (gconstpointer key,
|
gimp_dialog_factory_hide (GimpDialogFactory *factory)
|
||||||
GimpDialogFactory *factory,
|
|
||||||
gpointer data)
|
|
||||||
{
|
{
|
||||||
GList *list;
|
GList *list;
|
||||||
|
|
||||||
|
@ -1410,9 +1408,7 @@ gimp_dialog_factories_hide_foreach (gconstpointer key,
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gimp_dialog_factories_show_foreach (gconstpointer key,
|
gimp_dialog_factory_show (GimpDialogFactory *factory)
|
||||||
GimpDialogFactory *factory,
|
|
||||||
gpointer data)
|
|
||||||
{
|
{
|
||||||
GList *list;
|
GList *list;
|
||||||
|
|
||||||
|
|
|
@ -161,11 +161,12 @@ void gimp_dialog_factory_hide_dialog (GtkWidget
|
||||||
void gimp_dialog_factory_save (GimpDialogFactory *factory,
|
void gimp_dialog_factory_save (GimpDialogFactory *factory,
|
||||||
GimpConfigWriter *writer);
|
GimpConfigWriter *writer);
|
||||||
void gimp_dialog_factory_restore (GimpDialogFactory *factory);
|
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_set_busy (void);
|
||||||
void gimp_dialog_factories_unset_busy (void);
|
void gimp_dialog_factories_unset_busy (void);
|
||||||
GimpDialogFactory * gimp_dialog_factory_from_widget (GtkWidget *dialog,
|
GimpDialogFactory * gimp_dialog_factory_from_widget (GtkWidget *dialog,
|
||||||
|
|
Loading…
Reference in New Issue