mirror of https://github.com/GNOME/gimp.git
Add "icon" property to GimpDisplayShell
Set it instead of setting the window icon and connect GimpImageWindow to the notification.
This commit is contained in:
parent
660c333b55
commit
1bbcd8f7b5
|
@ -69,11 +69,11 @@ gimp_display_shell_icon_update (GimpDisplayShell *shell)
|
||||||
gimp_get_user_context (gimp),
|
gimp_get_user_context (gimp),
|
||||||
width, height);
|
width, height);
|
||||||
|
|
||||||
gtk_window_set_icon (GTK_WINDOW (shell), pixbuf);
|
g_object_set (shell, "gimp-icon", pixbuf, NULL);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
gtk_window_set_icon (GTK_WINDOW (shell), NULL);
|
g_object_set (shell, "gimp-icon", NULL, NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -86,7 +86,8 @@ enum
|
||||||
PROP_0,
|
PROP_0,
|
||||||
PROP_UNIT,
|
PROP_UNIT,
|
||||||
PROP_TITLE,
|
PROP_TITLE,
|
||||||
PROP_STATUS
|
PROP_STATUS,
|
||||||
|
PROP_ICON
|
||||||
};
|
};
|
||||||
|
|
||||||
enum
|
enum
|
||||||
|
@ -227,6 +228,12 @@ gimp_display_shell_class_init (GimpDisplayShellClass *klass)
|
||||||
NULL,
|
NULL,
|
||||||
GIMP_PARAM_READWRITE));
|
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);
|
gtk_rc_parse_string (display_rc_style);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -419,6 +426,9 @@ gimp_display_shell_finalize (GObject *object)
|
||||||
if (shell->status)
|
if (shell->status)
|
||||||
g_free (shell->status);
|
g_free (shell->status);
|
||||||
|
|
||||||
|
if (shell->icon)
|
||||||
|
g_object_unref (shell->icon);
|
||||||
|
|
||||||
G_OBJECT_CLASS (parent_class)->finalize (object);
|
G_OBJECT_CLASS (parent_class)->finalize (object);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -443,6 +453,11 @@ gimp_display_shell_set_property (GObject *object,
|
||||||
g_free (shell->status);
|
g_free (shell->status);
|
||||||
shell->status = g_value_dup_string (value);
|
shell->status = g_value_dup_string (value);
|
||||||
break;
|
break;
|
||||||
|
case PROP_ICON:
|
||||||
|
if (shell->icon)
|
||||||
|
g_object_unref (shell->icon);
|
||||||
|
shell->icon = g_value_dup_object (value);
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
||||||
|
@ -469,6 +484,9 @@ gimp_display_shell_get_property (GObject *object,
|
||||||
case PROP_STATUS:
|
case PROP_STATUS:
|
||||||
g_value_set_string (value, shell->status);
|
g_value_set_string (value, shell->status);
|
||||||
break;
|
break;
|
||||||
|
case PROP_ICON:
|
||||||
|
g_value_set_object (value, shell->icon);
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
||||||
|
|
|
@ -147,12 +147,12 @@ struct _GimpDisplayShell
|
||||||
guchar *render_buf; /* buffer for rendering the image */
|
guchar *render_buf; /* buffer for rendering the image */
|
||||||
|
|
||||||
guint title_idle_id; /* title update idle ID */
|
guint title_idle_id; /* title update idle ID */
|
||||||
|
|
||||||
gchar *title; /* current title */
|
gchar *title; /* current title */
|
||||||
gchar *status; /* current default statusbar content */
|
gchar *status; /* current default statusbar content */
|
||||||
|
|
||||||
gint icon_size; /* size of the icon pixmap */
|
gint icon_size; /* size of the icon pixmap */
|
||||||
guint icon_idle_id; /* ID of the idle-function */
|
guint icon_idle_id; /* ID of the idle-function */
|
||||||
|
GdkPixbuf *icon; /* icon */
|
||||||
|
|
||||||
guint fill_idle_id; /* display_shell_fill() idle ID */
|
guint fill_idle_id; /* display_shell_fill() idle ID */
|
||||||
|
|
||||||
|
|
|
@ -83,6 +83,9 @@ static void gimp_image_window_shell_title_notify (GimpDisplayShell *she
|
||||||
static void gimp_image_window_shell_status_notify (GimpDisplayShell *shell,
|
static void gimp_image_window_shell_status_notify (GimpDisplayShell *shell,
|
||||||
const GParamSpec *pspec,
|
const GParamSpec *pspec,
|
||||||
GimpImageWindow *window);
|
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)
|
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,
|
g_signal_handlers_disconnect_by_func (active_shell,
|
||||||
gimp_image_window_shell_status_notify,
|
gimp_image_window_shell_status_notify,
|
||||||
window);
|
window);
|
||||||
|
g_signal_handlers_disconnect_by_func (active_shell,
|
||||||
|
gimp_image_window_shell_icon_notify,
|
||||||
|
window);
|
||||||
}
|
}
|
||||||
|
|
||||||
window->active_display = display;
|
window->active_display = display;
|
||||||
|
@ -401,6 +407,10 @@ gimp_image_window_set_active_display (GimpImageWindow *window,
|
||||||
g_signal_connect (active_shell, "notify::status",
|
g_signal_connect (active_shell, "notify::status",
|
||||||
G_CALLBACK (gimp_image_window_shell_status_notify),
|
G_CALLBACK (gimp_image_window_shell_status_notify),
|
||||||
window);
|
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,
|
gimp_ui_manager_update (window->menubar_manager,
|
||||||
window->active_display);
|
window->active_display);
|
||||||
|
@ -481,3 +491,11 @@ gimp_image_window_shell_status_notify (GimpDisplayShell *shell,
|
||||||
gimp_statusbar_replace (GIMP_STATUSBAR (window->statusbar), "title",
|
gimp_statusbar_replace (GIMP_STATUSBAR (window->statusbar), "title",
|
||||||
NULL, "%s", shell->status);
|
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);
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue