[gimp] app: Add gimp_image_window_new/destroy()
- From: Martin Nordholts <martinn src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gimp] app: Add gimp_image_window_new/destroy()
- Date: Sun, 25 Oct 2009 21:03:47 +0000 (UTC)
commit fdf24546664b34d5073cd9a99a8f0f914bc9d999
Author: Martin Nordholts <martinn src gnome org>
Date: Sun Oct 25 22:02:38 2009 +0100
app: Add gimp_image_window_new/destroy()
Add gimp_image_window_new/destroy() so we have a central place where
the Gimp::image_windows list is managed.
app/display/gimpdisplay.c | 20 ++++------------
app/display/gimpimagewindow.c | 51 ++++++++++++++++++++++++++++++++++++++--
app/display/gimpimagewindow.h | 6 +++++
3 files changed, 59 insertions(+), 18 deletions(-)
---
diff --git a/app/display/gimpdisplay.c b/app/display/gimpdisplay.c
index ae2f739..e204e48 100644
--- a/app/display/gimpdisplay.c
+++ b/app/display/gimpdisplay.c
@@ -431,18 +431,10 @@ gimp_display_new (Gimp *gimp,
if (! window)
{
- window = g_object_new (GIMP_TYPE_IMAGE_WINDOW,
- "gimp", gimp,
- "menu-factory", menu_factory,
- "display-factory", display_factory,
- /* The window position will be overridden by the
- * dialog factory, it is only really used on first
- * startup.
- */
- display->image ? NULL : "window-position",
- GTK_WIN_POS_CENTER,
- NULL);
- gimp->image_windows = g_list_prepend (gimp->image_windows, window);
+ window = gimp_image_window_new (gimp,
+ display->image,
+ menu_factory,
+ display_factory);
}
/* create the shell for the image */
@@ -520,9 +512,7 @@ gimp_display_delete (GimpDisplay *display)
}
else
{
- Gimp *gimp = display->gimp;
- gimp->image_windows = g_list_remove (gimp->image_windows, window);
- gtk_widget_destroy (GTK_WIDGET (window));
+ gimp_image_window_destroy (window);
}
}
else
diff --git a/app/display/gimpimagewindow.c b/app/display/gimpimagewindow.c
index 3424e06..d457d2c 100644
--- a/app/display/gimpimagewindow.c
+++ b/app/display/gimpimagewindow.c
@@ -111,7 +111,7 @@ static void gimp_image_window_get_property (GObject *obj
GValue *value,
GParamSpec *pspec);
-static void gimp_image_window_destroy (GtkObject *object);
+static void gimp_image_window_real_destroy (GtkObject *object);
static gboolean gimp_image_window_delete_event (GtkWidget *widget,
GdkEventAny *event);
@@ -181,7 +181,7 @@ gimp_image_window_class_init (GimpImageWindowClass *klass)
object_class->set_property = gimp_image_window_set_property;
object_class->get_property = gimp_image_window_get_property;
- gtk_object_class->destroy = gimp_image_window_destroy;
+ gtk_object_class->destroy = gimp_image_window_real_destroy;
widget_class->delete_event = gimp_image_window_delete_event;
widget_class->configure_event = gimp_image_window_configure_event;
@@ -412,7 +412,7 @@ gimp_image_window_get_property (GObject *object,
}
static void
-gimp_image_window_destroy (GtkObject *object)
+gimp_image_window_real_destroy (GtkObject *object)
{
GimpImageWindow *window = GIMP_IMAGE_WINDOW (object);
GimpImageWindowPrivate *private = GIMP_IMAGE_WINDOW_GET_PRIVATE (window);
@@ -591,6 +591,51 @@ gimp_image_window_style_set (GtkWidget *widget,
/* public functions */
+GimpImageWindow *
+gimp_image_window_new (Gimp *gimp,
+ GimpImage *image,
+ GimpMenuFactory *menu_factory,
+ GimpDialogFactory *display_factory)
+{
+ GimpImageWindow *window;
+
+ g_return_val_if_fail (GIMP_IS_GIMP (gimp), NULL);
+ g_return_val_if_fail (GIMP_IS_IMAGE (image) || image == NULL, NULL);
+ g_return_val_if_fail (GIMP_IS_MENU_FACTORY (menu_factory), NULL);
+ g_return_val_if_fail (GIMP_IS_DIALOG_FACTORY (display_factory), NULL);
+
+ window = g_object_new (GIMP_TYPE_IMAGE_WINDOW,
+ "gimp", gimp,
+ "menu-factory", menu_factory,
+ "display-factory", display_factory,
+ /* The window position will be overridden by the
+ * dialog factory, it is only really used on first
+ * startup.
+ */
+ image ? NULL : "window-position",
+ GTK_WIN_POS_CENTER,
+ NULL);
+
+ gimp->image_windows = g_list_prepend (gimp->image_windows, window);
+
+ return window;
+}
+
+void
+gimp_image_window_destroy (GimpImageWindow *window)
+{
+ GimpImageWindowPrivate *private;
+
+ g_return_if_fail (GIMP_IS_IMAGE_WINDOW (window));
+
+ private = GIMP_IMAGE_WINDOW_GET_PRIVATE (window);
+
+ private->gimp->image_windows = g_list_remove (private->gimp->image_windows,
+ window);
+
+ gtk_widget_destroy (GTK_WIDGET (window));
+}
+
GimpUIManager *
gimp_image_window_get_ui_manager (GimpImageWindow *window)
{
diff --git a/app/display/gimpimagewindow.h b/app/display/gimpimagewindow.h
index cdf3b0d..0700f93 100644
--- a/app/display/gimpimagewindow.h
+++ b/app/display/gimpimagewindow.h
@@ -45,6 +45,12 @@ struct _GimpImageWindowClass
GType gimp_image_window_get_type (void) G_GNUC_CONST;
+GimpImageWindow * gimp_image_window_new (Gimp *gimp,
+ GimpImage *image,
+ GimpMenuFactory *menu_factory,
+ GimpDialogFactory *display_factory);
+void gimp_image_window_destroy (GimpImageWindow *window);
+
GimpUIManager * gimp_image_window_get_ui_manager (GimpImageWindow *window);
GimpDockColumns * gimp_image_window_get_left_docks (GimpImageWindow *window);
GimpDockColumns * gimp_image_window_get_right_docks (GimpImageWindow *window);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]