[gimp/metadata-browser] app: allow to pass an identifier list to gimp_dialog_factory_find_widget()
- From: Roman Joost <romanofski src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp/metadata-browser] app: allow to pass an identifier list to gimp_dialog_factory_find_widget()
- Date: Wed, 12 Sep 2012 22:44:02 +0000 (UTC)
commit d91cdcac5a2dfb9029b6498a07f2d0a6d341875d
Author: Michael Natterer <mitch gimp org>
Date: Mon Jan 30 22:51:51 2012 +0100
app: allow to pass an identifier list to gimp_dialog_factory_find_widget()
Which is right for all external users, GimpDialogFactory itself splits
the identifier list itself if needed before finding a specific dialog.
app/widgets/gimpdialogfactory.c | 33 +++++++++++++++++++++++++--------
app/widgets/gimpdialogfactory.h | 2 +-
2 files changed, 26 insertions(+), 9 deletions(-)
---
diff --git a/app/widgets/gimpdialogfactory.c b/app/widgets/gimpdialogfactory.c
index 725838e..000cdf7 100644
--- a/app/widgets/gimpdialogfactory.c
+++ b/app/widgets/gimpdialogfactory.c
@@ -350,19 +350,33 @@ gimp_dialog_factory_find_session_info (GimpDialogFactory *factory,
GtkWidget *
gimp_dialog_factory_find_widget (GimpDialogFactory *factory,
- const gchar *identifier)
+ const gchar *identifiers)
{
- GimpSessionInfo *info;
+ gchar **ids;
+ gint i;
g_return_val_if_fail (GIMP_IS_DIALOG_FACTORY (factory), NULL);
- g_return_val_if_fail (identifier != NULL, NULL);
+ g_return_val_if_fail (identifiers != NULL, NULL);
- info = gimp_dialog_factory_find_session_info (factory, identifier);
+ ids = g_strsplit (identifiers, "|", 0);
- if (info)
- return gimp_session_info_get_widget (info);
- else
- return NULL;
+ for (i = 0; ids[i]; i++)
+ {
+ GimpSessionInfo *info;
+
+ info = gimp_dialog_factory_find_session_info (factory, ids[i]);
+
+ if (info)
+ {
+ g_strfreev (ids);
+
+ return gimp_session_info_get_widget (info);
+ }
+ }
+
+ g_strfreev (ids);
+
+ return NULL;
}
/**
@@ -763,6 +777,9 @@ gimp_dialog_factory_dialog_raise (GimpDialogFactory *factory,
/* If the identifier is a list, try to find a matching dialog and
* raise it. If there's no match, use the first list item.
+ *
+ * (we split the identifier list manually here because we must pass
+ * a single identifier, not a list, to new_internal() below)
*/
ids = g_strsplit (identifiers, "|", 0);
for (i = 0; ids[i]; i++)
diff --git a/app/widgets/gimpdialogfactory.h b/app/widgets/gimpdialogfactory.h
index a99e590..9e05ccf 100644
--- a/app/widgets/gimpdialogfactory.h
+++ b/app/widgets/gimpdialogfactory.h
@@ -136,7 +136,7 @@ GimpDialogFactoryEntry *
GimpSessionInfo * gimp_dialog_factory_find_session_info (GimpDialogFactory *factory,
const gchar *identifier);
GtkWidget * gimp_dialog_factory_find_widget (GimpDialogFactory *factory,
- const gchar *identifier);
+ const gchar *identifiers);
GtkWidget * gimp_dialog_factory_dialog_new (GimpDialogFactory *factory,
GdkScreen *screen,
GimpUIManager *ui_manager,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]