[gimp] app: Keep track of GimpImage export dirtiness
- From: Martin Nordholts <martinn src gnome org>
- To: svn-commits-list gnome org
- Subject: [gimp] app: Keep track of GimpImage export dirtiness
- Date: Sun, 5 Jul 2009 07:36:01 +0000 (UTC)
commit 1662ff2523fd344929f3228095ccf8470d442d60
Author: Martin Nordholts <martinn src gnome org>
Date: Fri Jul 3 22:51:11 2009 +0200
app: Keep track of GimpImage export dirtiness
Since save and export are separate activities we need to keep track of
image dirtiness for both of them. For this purpose, add a
'export_dirty' member to GimpImage which has the same semantics as
'dirty', but for export. Set it to clean whenever a document is
exported by whatever means. Do this with a new function
gimp_image_export_clean_all(). Also add gimp_image_is_export_dirty().
app/core/gimpimage.c | 26 ++++++++++++++++++++++++++
app/core/gimpimage.h | 4 ++++
app/file/file-open.c | 5 ++++-
app/file/file-save.c | 4 ++++
4 files changed, 38 insertions(+), 1 deletions(-)
---
diff --git a/app/core/gimpimage.c b/app/core/gimpimage.c
index 9a79828..ba876e8 100644
--- a/app/core/gimpimage.c
+++ b/app/core/gimpimage.c
@@ -600,6 +600,8 @@ gimp_image_init (GimpImage *image)
image->dirty_time = 0;
image->undo_freeze_count = 0;
+ image->export_dirty = 1;
+
image->instance_count = 0;
image->disp_count = 0;
@@ -2028,6 +2030,7 @@ gimp_image_dirty (GimpImage *image,
g_return_val_if_fail (GIMP_IS_IMAGE (image), FALSE);
image->dirty++;
+ image->export_dirty++;
if (! image->dirty_time)
image->dirty_time = time (NULL);
@@ -2046,6 +2049,7 @@ gimp_image_clean (GimpImage *image,
g_return_val_if_fail (GIMP_IS_IMAGE (image), FALSE);
image->dirty--;
+ image->export_dirty--;
g_signal_emit (image, gimp_image_signals[CLEAN], 0, dirty_mask);
@@ -2065,6 +2069,16 @@ gimp_image_clean_all (GimpImage *image)
g_signal_emit (image, gimp_image_signals[CLEAN], 0, GIMP_DIRTY_ALL);
}
+void
+gimp_image_export_clean_all (GimpImage *image)
+{
+ g_return_if_fail (GIMP_IS_IMAGE (image));
+
+ image->export_dirty = 0;
+
+ g_signal_emit (image, gimp_image_signals[CLEAN], 0, GIMP_DIRTY_ALL);
+}
+
/**
* gimp_image_is_dirty:
* @image:
@@ -2078,6 +2092,18 @@ gimp_image_is_dirty (const GimpImage *image)
}
/**
+ * gimp_image_is_export_dirty:
+ * @image:
+ *
+ * Returns: True if the image export is dirty, false otherwise.
+ **/
+gboolean
+gimp_image_is_export_dirty (const GimpImage *image)
+{
+ return image->export_dirty != 0;
+}
+
+/**
* gimp_image_saved:
* @image:
* @uri:
diff --git a/app/core/gimpimage.h b/app/core/gimpimage.h
index b45c946..0f21da4 100644
--- a/app/core/gimpimage.h
+++ b/app/core/gimpimage.h
@@ -121,6 +121,8 @@ struct _GimpImage
guint dirty_time; /* time when image became dirty */
gint undo_freeze_count; /* counts the _freeze's */
+ gint export_dirty; /* 'dirty' but for export */
+
gint instance_count; /* number of instances */
gint disp_count; /* number of displays */
@@ -350,6 +352,8 @@ gint gimp_image_clean (GimpImage *image,
GimpDirtyMask dirty_mask);
void gimp_image_clean_all (GimpImage *image);
gint gimp_image_is_dirty (const GimpImage *image);
+gboolean gimp_image_is_export_dirty (const GimpImage *image);
+void gimp_image_export_clean_all (GimpImage *image);
/* flush this image's displays */
diff --git a/app/file/file-open.c b/app/file/file-open.c
index 0f52510..a5fb9e0 100644
--- a/app/file/file-open.c
+++ b/app/file/file-open.c
@@ -598,7 +598,10 @@ file_open_sanitize_image (GimpImage *image,
while (image->undo_freeze_count)
gimp_image_undo_thaw (image);
- /* set the image to clean */
+ /* Set the image to clean. Note that export dirtiness is not set to
+ * clean here; we can only consider export clean after the first
+ * export
+ */
gimp_image_clean_all (image);
/* make sure the entire projection is properly constructed, because
diff --git a/app/file/file-save.c b/app/file/file-save.c
index 436933b..fb4dbda 100644
--- a/app/file/file-save.c
+++ b/app/file/file-save.c
@@ -162,6 +162,10 @@ file_save (Gimp *gimp,
gimp_image_clean_all (image);
}
+ else if (export)
+ {
+ gimp_image_export_clean_all (image);
+ }
if (export)
gimp_image_exported (image, uri);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]