[gimp] Add "icon" property to GimpDisplayShell
- From: Michael Natterer <mitch src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gimp] Add "icon" property to GimpDisplayShell
- Date: Tue, 29 Sep 2009 18:36:58 +0000 (UTC)
commit 1bbcd8f7b5a7eb9372d921f638701fe4033f6e13
Author: Michael Natterer <mitch gimp org>
Date: Thu Sep 24 09:09:35 2009 +0200
Add "icon" property to GimpDisplayShell
Set it instead of setting the window icon and connect GimpImageWindow
to the notification.
app/display/gimpdisplayshell-icon.c | 4 ++--
app/display/gimpdisplayshell.c | 20 +++++++++++++++++++-
app/display/gimpdisplayshell.h | 2 +-
app/display/gimpimagewindow.c | 18 ++++++++++++++++++
4 files changed, 40 insertions(+), 4 deletions(-)
---
diff --git a/app/display/gimpdisplayshell-icon.c b/app/display/gimpdisplayshell-icon.c
index e4a5f91..9699f98 100644
--- a/app/display/gimpdisplayshell-icon.c
+++ b/app/display/gimpdisplayshell-icon.c
@@ -69,11 +69,11 @@ gimp_display_shell_icon_update (GimpDisplayShell *shell)
gimp_get_user_context (gimp),
width, height);
- gtk_window_set_icon (GTK_WINDOW (shell), pixbuf);
+ g_object_set (shell, "gimp-icon", pixbuf, NULL);
}
else
{
- gtk_window_set_icon (GTK_WINDOW (shell), NULL);
+ g_object_set (shell, "gimp-icon", NULL, NULL);
}
}
diff --git a/app/display/gimpdisplayshell.c b/app/display/gimpdisplayshell.c
index 923b2a5..71a1c06 100644
--- a/app/display/gimpdisplayshell.c
+++ b/app/display/gimpdisplayshell.c
@@ -86,7 +86,8 @@ enum
PROP_0,
PROP_UNIT,
PROP_TITLE,
- PROP_STATUS
+ PROP_STATUS,
+ PROP_ICON
};
enum
@@ -227,6 +228,12 @@ gimp_display_shell_class_init (GimpDisplayShellClass *klass)
NULL,
GIMP_PARAM_READWRITE));
+ g_object_class_install_property (object_class, PROP_ICON,
+ /* FIXME: "icon" later */
+ g_param_spec_object ("gimp-icon", NULL, NULL,
+ GDK_TYPE_PIXBUF,
+ GIMP_PARAM_READWRITE));
+
gtk_rc_parse_string (display_rc_style);
}
@@ -419,6 +426,9 @@ gimp_display_shell_finalize (GObject *object)
if (shell->status)
g_free (shell->status);
+ if (shell->icon)
+ g_object_unref (shell->icon);
+
G_OBJECT_CLASS (parent_class)->finalize (object);
}
@@ -443,6 +453,11 @@ gimp_display_shell_set_property (GObject *object,
g_free (shell->status);
shell->status = g_value_dup_string (value);
break;
+ case PROP_ICON:
+ if (shell->icon)
+ g_object_unref (shell->icon);
+ shell->icon = g_value_dup_object (value);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
@@ -469,6 +484,9 @@ gimp_display_shell_get_property (GObject *object,
case PROP_STATUS:
g_value_set_string (value, shell->status);
break;
+ case PROP_ICON:
+ g_value_set_object (value, shell->icon);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
diff --git a/app/display/gimpdisplayshell.h b/app/display/gimpdisplayshell.h
index 610f767..86bdf3f 100644
--- a/app/display/gimpdisplayshell.h
+++ b/app/display/gimpdisplayshell.h
@@ -147,12 +147,12 @@ struct _GimpDisplayShell
guchar *render_buf; /* buffer for rendering the image */
guint title_idle_id; /* title update idle ID */
-
gchar *title; /* current title */
gchar *status; /* current default statusbar content */
gint icon_size; /* size of the icon pixmap */
guint icon_idle_id; /* ID of the idle-function */
+ GdkPixbuf *icon; /* icon */
guint fill_idle_id; /* display_shell_fill() idle ID */
diff --git a/app/display/gimpimagewindow.c b/app/display/gimpimagewindow.c
index 503bb7e..3759b81 100644
--- a/app/display/gimpimagewindow.c
+++ b/app/display/gimpimagewindow.c
@@ -83,6 +83,9 @@ static void gimp_image_window_shell_title_notify (GimpDisplayShell *she
static void gimp_image_window_shell_status_notify (GimpDisplayShell *shell,
const GParamSpec *pspec,
GimpImageWindow *window);
+static void gimp_image_window_shell_icon_notify (GimpDisplayShell *shell,
+ const GParamSpec *pspec,
+ GimpImageWindow *window);
G_DEFINE_TYPE (GimpImageWindow, gimp_image_window, GIMP_TYPE_WINDOW)
@@ -384,6 +387,9 @@ gimp_image_window_set_active_display (GimpImageWindow *window,
g_signal_handlers_disconnect_by_func (active_shell,
gimp_image_window_shell_status_notify,
window);
+ g_signal_handlers_disconnect_by_func (active_shell,
+ gimp_image_window_shell_icon_notify,
+ window);
}
window->active_display = display;
@@ -401,6 +407,10 @@ gimp_image_window_set_active_display (GimpImageWindow *window,
g_signal_connect (active_shell, "notify::status",
G_CALLBACK (gimp_image_window_shell_status_notify),
window);
+ /* FIXME: "icon" later */
+ g_signal_connect (active_shell, "notify::gimp-icon",
+ G_CALLBACK (gimp_image_window_shell_icon_notify),
+ window);
gimp_ui_manager_update (window->menubar_manager,
window->active_display);
@@ -481,3 +491,11 @@ gimp_image_window_shell_status_notify (GimpDisplayShell *shell,
gimp_statusbar_replace (GIMP_STATUSBAR (window->statusbar), "title",
NULL, "%s", shell->status);
}
+
+static void
+gimp_image_window_shell_icon_notify (GimpDisplayShell *shell,
+ const GParamSpec *pspec,
+ GimpImageWindow *window)
+{
+ gtk_window_set_icon (GTK_WINDOW (window), shell->icon);
+}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]