gimp r25377 - in trunk: . app/actions app/dialogs app/display app/gui
- From: neo svn gnome org
- To: svn-commits-list gnome org
- Subject: gimp r25377 - in trunk: . app/actions app/dialogs app/display app/gui
- Date: Sat, 5 Apr 2008 21:32:24 +0100 (BST)
Author: neo
Date: Sat Apr 5 21:32:24 2008
New Revision: 25377
URL: http://svn.gnome.org/viewvc/gimp?rev=25377&view=rev
Log:
2008-04-05 Sven Neumann <sven gimp org>
* app/display/gimpdisplay.[ch]: added new function
gimp_display_close() which decides if gimp_display_delete() or
gimp_display_empty() needs to be called.
* app/display/gimpdisplay-foreach.[ch]: added new function
gimp_displays_close() and removed the 'do_quit' parameter from
gimp_displays_delete().
* app/gui/gui.c (gui_exit_callback): changed accordingly.
* app/display/gimpdisplayshell-close.c: removed
gimp_display_shell_really_close() and call gimp_display_close()
instead.
* app/display/gimpdisplayshell.c (gimp_display_shell_empty):
moved
code to update the ui managers here.
* app/actions/file-commands.c (file_save_cmd_callback)
(file_close_cmd_callback)
* app/dialogs/file-save-dialog.c (file_save_dialog_response)
* app/dialogs/quit-dialog.c (quit_close_all_dialog_response):
close displays instead of deleting them.
* app/gui/gui-vtable.c (gui_display_delete): call
gimp_display_close().
Modified:
trunk/ChangeLog
trunk/app/actions/file-commands.c
trunk/app/dialogs/file-save-dialog.c
trunk/app/dialogs/quit-dialog.c
trunk/app/display/gimpdisplay-foreach.c
trunk/app/display/gimpdisplay-foreach.h
trunk/app/display/gimpdisplay.c
trunk/app/display/gimpdisplay.h
trunk/app/display/gimpdisplayshell-close.c
trunk/app/display/gimpdisplayshell.c
trunk/app/gui/gui-vtable.c
trunk/app/gui/gui.c
Modified: trunk/app/actions/file-commands.c
==============================================================================
--- trunk/app/actions/file-commands.c (original)
+++ trunk/app/actions/file-commands.c Sat Apr 5 21:32:24 2008
@@ -302,7 +302,7 @@
if (save_mode == GIMP_SAVE_MODE_SAVE_AND_CLOSE &&
saved && ! display->image->dirty)
{
- gimp_display_delete (display);
+ gimp_display_close (display);
}
}
@@ -408,7 +408,7 @@
if (! gimp_displays_dirty (gimp))
{
- gimp_displays_delete (gimp, FALSE);
+ gimp_displays_close (gimp);
}
else
{
Modified: trunk/app/dialogs/file-save-dialog.c
==============================================================================
--- trunk/app/dialogs/file-save-dialog.c (original)
+++ trunk/app/dialogs/file-save-dialog.c Sat Apr 5 21:32:24 2008
@@ -156,7 +156,7 @@
display = GIMP_DISPLAY_SHELL (parent)->display;
if (! display->image->dirty)
- gimp_display_delete (display);
+ gimp_display_close (display);
}
}
}
Modified: trunk/app/dialogs/quit-dialog.c
==============================================================================
--- trunk/app/dialogs/quit-dialog.c (original)
+++ trunk/app/dialogs/quit-dialog.c Sat Apr 5 21:32:24 2008
@@ -196,7 +196,7 @@
if (do_quit)
gimp_exit (gimp, TRUE);
else
- gimp_displays_delete (gimp, FALSE);
+ gimp_displays_close (gimp);
}
}
Modified: trunk/app/display/gimpdisplay-foreach.c
==============================================================================
--- trunk/app/display/gimpdisplay-foreach.c (original)
+++ trunk/app/display/gimpdisplay-foreach.c Sat Apr 5 21:32:24 2008
@@ -139,30 +139,53 @@
return NULL;
}
+/**
+ * gimp_displays_delete:
+ * @gimp:
+ *
+ * Calls gimp_display_delete() an all displays in the display list.
+ * This closes all displays, including the first one which is usually
+ * kept open.
+ */
void
-gimp_displays_delete (Gimp *gimp,
- gboolean quit)
+gimp_displays_delete (Gimp *gimp)
{
- g_return_if_fail (GIMP_IS_GIMP (gimp));
-
/* this removes the GimpDisplay from the list, so do a while loop
* "around" the first element to get them all
*/
- while (GIMP_LIST (gimp->displays)->list)
+ while (! gimp_container_is_empty (gimp->displays))
{
- GList *list = GIMP_LIST (gimp->displays)->list;
- GimpDisplay *display = list->data;
+ GimpDisplay *display = GIMP_LIST (gimp->displays)->list->data;
+
+ gimp_display_delete (display);
+ }
+}
+
+/**
+ * gimp_displays_close:
+ * @gimp:
+ *
+ * Calls gimp_display_close() an all displays in the display list. The
+ * first display will remain open without an image.
+ */
+void
+gimp_displays_close (Gimp *gimp)
+{
+ GList *list;
+ GList *iter;
+
+ g_return_if_fail (GIMP_IS_GIMP (gimp));
- if (list->next || quit)
- {
- gimp_display_delete (display);
- }
- else
- {
- gimp_display_empty (display);
- break;
- }
+ list = g_list_copy (GIMP_LIST (gimp->displays)->list);
+
+ for (iter = list; iter; iter = g_list_next (iter))
+ {
+ GimpDisplay *display = iter->data;
+
+ gimp_display_close (display);
}
+
+ g_list_free (list);
}
void
Modified: trunk/app/display/gimpdisplay-foreach.h
==============================================================================
--- trunk/app/display/gimpdisplay-foreach.h (original)
+++ trunk/app/display/gimpdisplay-foreach.h Sat Apr 5 21:32:24 2008
@@ -22,8 +22,8 @@
gboolean gimp_displays_dirty (Gimp *gimp);
GimpContainer * gimp_displays_get_dirty_images (Gimp *gimp);
-void gimp_displays_delete (Gimp *gimp,
- gboolean quit);
+void gimp_displays_delete (Gimp *gimp);
+void gimp_displays_close (Gimp *gimp);
void gimp_displays_reconnect (Gimp *gimp,
GimpImage *old,
GimpImage *new);
Modified: trunk/app/display/gimpdisplay.c
==============================================================================
--- trunk/app/display/gimpdisplay.c (original)
+++ trunk/app/display/gimpdisplay.c Sat Apr 5 21:32:24 2008
@@ -396,6 +396,13 @@
return display;
}
+/**
+ * gimp_display_delete:
+ * @display:
+ *
+ * Closes the display and removes it from the display list. You should
+ * not call this function directly, use gimp_display_close() instead.
+ */
void
gimp_display_delete (GimpDisplay *display)
{
@@ -404,8 +411,7 @@
g_return_if_fail (GIMP_IS_DISPLAY (display));
/* remove the display from the list */
- gimp_container_remove (display->gimp->displays,
- GIMP_OBJECT (display));
+ gimp_container_remove (display->gimp->displays, GIMP_OBJECT (display));
/* unrefs the image */
gimp_display_set_image (display, NULL);
@@ -434,6 +440,28 @@
g_object_unref (display);
}
+/**
+ * gimp_display_close:
+ * @display:
+ *
+ * Closes the display. If this is the last display, it will remain
+ * open, but without an image.
+ */
+void
+gimp_display_close (GimpDisplay *display)
+{
+ g_return_if_fail (GIMP_IS_DISPLAY (display));
+
+ if (gimp_container_num_children (display->gimp->displays) > 1)
+ {
+ gimp_display_delete (display);
+ }
+ else
+ {
+ gimp_display_empty (display);
+ }
+}
+
gint
gimp_display_get_ID (GimpDisplay *display)
{
Modified: trunk/app/display/gimpdisplay.h
==============================================================================
--- trunk/app/display/gimpdisplay.h (original)
+++ trunk/app/display/gimpdisplay.h Sat Apr 5 21:32:24 2008
@@ -67,6 +67,7 @@
GimpUIManager *popup_manager,
GimpDialogFactory *display_factory);
void gimp_display_delete (GimpDisplay *display);
+void gimp_display_close (GimpDisplay *display);
gint gimp_display_get_ID (GimpDisplay *display);
GimpDisplay * gimp_display_get_by_ID (Gimp *gimp,
Modified: trunk/app/display/gimpdisplayshell-close.c
==============================================================================
--- trunk/app/display/gimpdisplayshell-close.c (original)
+++ trunk/app/display/gimpdisplayshell-close.c Sat Apr 5 21:32:24 2008
@@ -57,8 +57,6 @@
static void gimp_display_shell_close_response (GtkWidget *widget,
gboolean close,
GimpDisplayShell *shell);
-static void gimp_display_shell_really_close (GimpDisplayShell *shell);
-
static void gimp_time_since (guint then,
gint *hours,
gint *minutes);
@@ -96,7 +94,7 @@
}
else if (image)
{
- gimp_display_shell_really_close (shell);
+ gimp_display_close (shell->display);
}
else
{
@@ -289,7 +287,7 @@
switch (response_id)
{
case GTK_RESPONSE_CLOSE:
- gimp_display_shell_really_close (shell);
+ gimp_display_close (shell->display);
break;
case RESPONSE_SAVE:
@@ -303,28 +301,6 @@
}
static void
-gimp_display_shell_really_close (GimpDisplayShell *shell)
-{
- if (gimp_container_num_children (shell->display->gimp->displays) > 1)
- {
- gimp_display_delete (shell->display);
- }
- else
- {
- GimpContext *user_context;
-
- gimp_display_empty (shell->display);
-
- gimp_ui_manager_update (shell->menubar_manager, shell->display);
-
- user_context = gimp_get_user_context (shell->display->gimp);
-
- if (shell->display == gimp_context_get_display (user_context))
- gimp_ui_manager_update (shell->popup_manager, shell->display);
- }
-}
-
-static void
gimp_time_since (guint then,
gint *hours,
gint *minutes)
Modified: trunk/app/display/gimpdisplayshell.c
==============================================================================
--- trunk/app/display/gimpdisplayshell.c (original)
+++ trunk/app/display/gimpdisplayshell.c Sat Apr 5 21:32:24 2008
@@ -1245,6 +1245,7 @@
gimp_display_shell_empty (GimpDisplayShell *shell)
{
GimpSessionInfo *session_info;
+ GimpContext *user_context;
gint width;
gint height;
@@ -1298,6 +1299,15 @@
gimp_display_shell_expose_full (shell);
gtk_window_resize (GTK_WINDOW (shell), width, height);
+
+ /* update the ui managers */
+
+ gimp_ui_manager_update (shell->menubar_manager, shell->display);
+
+ user_context = gimp_get_user_context (shell->display->gimp);
+
+ if (shell->display == gimp_context_get_display (user_context))
+ gimp_ui_manager_update (shell->popup_manager, shell->display);
}
static gboolean
Modified: trunk/app/gui/gui-vtable.c
==============================================================================
--- trunk/app/gui/gui-vtable.c (original)
+++ trunk/app/gui/gui-vtable.c Sat Apr 5 21:32:24 2008
@@ -363,7 +363,7 @@
static void
gui_display_delete (GimpObject *display)
{
- gimp_display_delete (GIMP_DISPLAY (display));
+ gimp_display_close (GIMP_DISPLAY (display));
}
static void
Modified: trunk/app/gui/gui.c
==============================================================================
--- trunk/app/gui/gui.c (original)
+++ trunk/app/gui/gui.c Sat Apr 5 21:32:24 2008
@@ -584,7 +584,7 @@
gui_display_changed,
gimp);
- gimp_displays_delete (gimp, TRUE);
+ gimp_displays_delete (gimp);
gimp_tools_save (gimp, gui_config->save_tool_options, FALSE);
gimp_tools_exit (gimp);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]