gimp r26353 - in branches/soc-2008-tagging: . app/actions app/base app/core app/dialogs app/gui app/menus app/paint app/pdb app/text app/tools app/vectors app/widgets data/images devel-docs devel-docs/libgimp devel-docs/libgimp/tmpl devel-docs/tools libgimp libgimpwidgets plug-ins/common plug-ins/help plug-ins/help-browser plug-ins/psd plug-ins/uri po po-libgimp po-plug-ins po-python po-script-fu po-tips tools/pdbgen/pdb



Author: aurisj
Date: Sat Aug  2 19:50:36 2008
New Revision: 26353
URL: http://svn.gnome.org/viewvc/gimp?rev=26353&view=rev

Log:
Merged from trunk revisions 26246:26352.

Added:
   branches/soc-2008-tagging/plug-ins/psd/psd-save.c
      - copied unchanged from r26352, /trunk/plug-ins/psd/psd-save.c
   branches/soc-2008-tagging/po-plug-ins/be.po
      - copied unchanged from r26352, /trunk/po-plug-ins/be.po
   branches/soc-2008-tagging/po-python/be.po
      - copied unchanged from r26352, /trunk/po-python/be.po
   branches/soc-2008-tagging/po-script-fu/be.po
      - copied unchanged from r26352, /trunk/po-script-fu/be.po
   branches/soc-2008-tagging/po-tips/be.po
      - copied unchanged from r26352, /trunk/po-tips/be.po
Removed:
   branches/soc-2008-tagging/plug-ins/common/psd-save.c
Modified:
   branches/soc-2008-tagging/ChangeLog
   branches/soc-2008-tagging/app/actions/file-commands.c
   branches/soc-2008-tagging/app/actions/windows-actions.c
   branches/soc-2008-tagging/app/base/gimphistogram.c
   branches/soc-2008-tagging/app/base/gimphistogram.h
   branches/soc-2008-tagging/app/core/gimpchannel.c
   branches/soc-2008-tagging/app/core/gimpcoords.c
   branches/soc-2008-tagging/app/core/gimpguideundo.c
   branches/soc-2008-tagging/app/core/gimpimage-scale.c
   branches/soc-2008-tagging/app/core/gimpitemundo.c
   branches/soc-2008-tagging/app/core/gimplayermaskundo.c
   branches/soc-2008-tagging/app/core/gimppdbprogress.c
   branches/soc-2008-tagging/app/core/gimpstrokedesc.c
   branches/soc-2008-tagging/app/core/gimpstrokedesc.h
   branches/soc-2008-tagging/app/core/gimptooloptions.c
   branches/soc-2008-tagging/app/core/gimptoolpresets.c
   branches/soc-2008-tagging/app/dialogs/file-open-dialog.c
   branches/soc-2008-tagging/app/dialogs/stroke-dialog.c
   branches/soc-2008-tagging/app/gui/session.c
   branches/soc-2008-tagging/app/gui/splash.c
   branches/soc-2008-tagging/app/menus/file-menu.c
   branches/soc-2008-tagging/app/paint/gimppaintcore-stroke.c
   branches/soc-2008-tagging/app/paint/gimppaintcore-stroke.h
   branches/soc-2008-tagging/app/paint/gimppaintoptions.c
   branches/soc-2008-tagging/app/pdb/edit-cmds.c
   branches/soc-2008-tagging/app/pdb/internal-procs.c
   branches/soc-2008-tagging/app/pdb/vectors-cmds.c
   branches/soc-2008-tagging/app/text/gimpfont.c
   branches/soc-2008-tagging/app/text/gimptext-compat.c
   branches/soc-2008-tagging/app/text/gimptextlayout-render.c
   branches/soc-2008-tagging/app/tools/gimpcolortool.c
   branches/soc-2008-tagging/app/tools/gimpdrawtool.c
   branches/soc-2008-tagging/app/tools/gimprectangletool.c
   branches/soc-2008-tagging/app/tools/gimptool.c
   branches/soc-2008-tagging/app/tools/gimpvectortool.c
   branches/soc-2008-tagging/app/vectors/gimpbezierstroke.c
   branches/soc-2008-tagging/app/vectors/gimpvectors.c
   branches/soc-2008-tagging/app/widgets/gimpaction.c
   branches/soc-2008-tagging/app/widgets/gimpcellrendererviewable.c
   branches/soc-2008-tagging/app/widgets/gimpcontrollereditor.c
   branches/soc-2008-tagging/app/widgets/gimpcontrollerinfo.c
   branches/soc-2008-tagging/app/widgets/gimpcontrollerlist.c
   branches/soc-2008-tagging/app/widgets/gimpdasheditor.c
   branches/soc-2008-tagging/app/widgets/gimpdock.c
   branches/soc-2008-tagging/app/widgets/gimpeditor.c
   branches/soc-2008-tagging/app/widgets/gimpgrideditor.c
   branches/soc-2008-tagging/app/widgets/gimphistogrameditor.c
   branches/soc-2008-tagging/app/widgets/gimphistogramview.c
   branches/soc-2008-tagging/app/widgets/gimppdbdialog.c
   branches/soc-2008-tagging/app/widgets/gimppluginaction.c
   branches/soc-2008-tagging/app/widgets/gimpsessioninfo-aux.c
   branches/soc-2008-tagging/app/widgets/gimpsessioninfo.c
   branches/soc-2008-tagging/app/widgets/gimpstrokeeditor.c
   branches/soc-2008-tagging/app/widgets/gimptemplateeditor.c
   branches/soc-2008-tagging/app/widgets/gimpviewrendererimagefile.c
   branches/soc-2008-tagging/app/widgets/gtkscalebutton.c
   branches/soc-2008-tagging/configure.in
   branches/soc-2008-tagging/data/images/gimp-splash.png
   branches/soc-2008-tagging/devel-docs/ChangeLog
   branches/soc-2008-tagging/devel-docs/libgimp/libgimp-sections.txt
   branches/soc-2008-tagging/devel-docs/libgimp/tmpl/gimpvectors.sgml
   branches/soc-2008-tagging/devel-docs/tools/widgets.c
   branches/soc-2008-tagging/libgimp/gimp.def
   branches/soc-2008-tagging/libgimp/gimpvectors_pdb.c
   branches/soc-2008-tagging/libgimp/gimpvectors_pdb.h
   branches/soc-2008-tagging/libgimpwidgets/gimpcolorprofilecombobox.c
   branches/soc-2008-tagging/plug-ins/common/   (props changed)
   branches/soc-2008-tagging/plug-ins/common/Makefile.am
   branches/soc-2008-tagging/plug-ins/common/alien-map.c
   branches/soc-2008-tagging/plug-ins/common/blinds.c
   branches/soc-2008-tagging/plug-ins/common/channel-mixer.c
   branches/soc-2008-tagging/plug-ins/common/color-exchange.c
   branches/soc-2008-tagging/plug-ins/common/color-to-alpha.c
   branches/soc-2008-tagging/plug-ins/common/contrast-retinex.c
   branches/soc-2008-tagging/plug-ins/common/convolution-matrix.c
   branches/soc-2008-tagging/plug-ins/common/cubism.c
   branches/soc-2008-tagging/plug-ins/common/deinterlace.c
   branches/soc-2008-tagging/plug-ins/common/destripe.c
   branches/soc-2008-tagging/plug-ins/common/edge-dog.c
   branches/soc-2008-tagging/plug-ins/common/edge.c
   branches/soc-2008-tagging/plug-ins/common/emboss.c
   branches/soc-2008-tagging/plug-ins/common/engrave.c
   branches/soc-2008-tagging/plug-ins/common/filter-pack.c
   branches/soc-2008-tagging/plug-ins/common/gif-save.c
   branches/soc-2008-tagging/plug-ins/common/illusion.c
   branches/soc-2008-tagging/plug-ins/common/jigsaw.c
   branches/soc-2008-tagging/plug-ins/common/lens-apply.c
   branches/soc-2008-tagging/plug-ins/common/lens-distortion.c
   branches/soc-2008-tagging/plug-ins/common/max-rgb.c
   branches/soc-2008-tagging/plug-ins/common/newsprint.c
   branches/soc-2008-tagging/plug-ins/common/nl-filter.c
   branches/soc-2008-tagging/plug-ins/common/noise-hsv.c
   branches/soc-2008-tagging/plug-ins/common/noise-solid.c
   branches/soc-2008-tagging/plug-ins/common/pixelize.c
   branches/soc-2008-tagging/plug-ins/common/plasma.c
   branches/soc-2008-tagging/plug-ins/common/plugin-defs.pl
   branches/soc-2008-tagging/plug-ins/common/polar-coords.c
   branches/soc-2008-tagging/plug-ins/common/ripple.c
   branches/soc-2008-tagging/plug-ins/common/shift.c
   branches/soc-2008-tagging/plug-ins/common/sparkle.c
   branches/soc-2008-tagging/plug-ins/common/tile-glass.c
   branches/soc-2008-tagging/plug-ins/common/value-propagate.c
   branches/soc-2008-tagging/plug-ins/common/waves.c
   branches/soc-2008-tagging/plug-ins/common/whirl-pinch.c
   branches/soc-2008-tagging/plug-ins/common/wind.c
   branches/soc-2008-tagging/plug-ins/help-browser/dialog.c
   branches/soc-2008-tagging/plug-ins/help/gimphelplocale.c
   branches/soc-2008-tagging/plug-ins/psd/   (props changed)
   branches/soc-2008-tagging/plug-ins/psd/Makefile.am
   branches/soc-2008-tagging/plug-ins/uri/Makefile.am
   branches/soc-2008-tagging/plug-ins/uri/uri-backend-gvfs.c
   branches/soc-2008-tagging/plug-ins/uri/uri-backend-libcurl.c
   branches/soc-2008-tagging/po-libgimp/ChangeLog
   branches/soc-2008-tagging/po-libgimp/ar.po
   branches/soc-2008-tagging/po-libgimp/be.po
   branches/soc-2008-tagging/po-libgimp/ca.po
   branches/soc-2008-tagging/po-libgimp/gl.po
   branches/soc-2008-tagging/po-libgimp/it.po
   branches/soc-2008-tagging/po-plug-ins/ChangeLog
   branches/soc-2008-tagging/po-plug-ins/POTFILES.in
   branches/soc-2008-tagging/po-plug-ins/ar.po
   branches/soc-2008-tagging/po-plug-ins/ca.po
   branches/soc-2008-tagging/po-plug-ins/gl.po
   branches/soc-2008-tagging/po-plug-ins/it.po
   branches/soc-2008-tagging/po-python/ChangeLog
   branches/soc-2008-tagging/po-python/gl.po
   branches/soc-2008-tagging/po-python/it.po
   branches/soc-2008-tagging/po-script-fu/ChangeLog
   branches/soc-2008-tagging/po-script-fu/ar.po
   branches/soc-2008-tagging/po-script-fu/gl.po
   branches/soc-2008-tagging/po-tips/ChangeLog
   branches/soc-2008-tagging/po-tips/ar.po
   branches/soc-2008-tagging/po-tips/gl.po
   branches/soc-2008-tagging/po/ChangeLog
   branches/soc-2008-tagging/po/ar.po
   branches/soc-2008-tagging/po/be.po
   branches/soc-2008-tagging/po/ca.po
   branches/soc-2008-tagging/po/de.po
   branches/soc-2008-tagging/po/es.po
   branches/soc-2008-tagging/po/gl.po
   branches/soc-2008-tagging/po/it.po
   branches/soc-2008-tagging/tools/pdbgen/pdb/edit.pdb
   branches/soc-2008-tagging/tools/pdbgen/pdb/vectors.pdb

Modified: branches/soc-2008-tagging/app/actions/file-commands.c
==============================================================================
--- branches/soc-2008-tagging/app/actions/file-commands.c	(original)
+++ branches/soc-2008-tagging/app/actions/file-commands.c	Sat Aug  2 19:50:36 2008
@@ -65,6 +65,7 @@
 /*  local function prototypes  */
 
 static void   file_open_dialog_show        (GtkWidget   *parent,
+                                            Gimp        *gimp,
                                             GimpImage   *image,
                                             const gchar *uri,
                                             gboolean     open_as_layers);
@@ -90,9 +91,11 @@
 file_open_cmd_callback (GtkAction *action,
                         gpointer   data)
 {
+  Gimp        *gimp;
   GimpImage   *image;
   GtkWidget   *widget;
   const gchar *uri = NULL;
+  return_if_no_gimp (gimp, data);
   return_if_no_widget (widget, data);
 
   image = action_data_get_image (data);
@@ -100,24 +103,26 @@
   if (image)
     uri = gimp_object_get_name (GIMP_OBJECT (image));
 
-  file_open_dialog_show (widget, NULL, uri, FALSE);
+  file_open_dialog_show (widget, gimp, NULL, uri, FALSE);
 }
 
 void
 file_open_as_layers_cmd_callback (GtkAction *action,
                                   gpointer   data)
 {
+  Gimp        *gimp;
   GimpDisplay *display;
   GtkWidget   *widget;
   GimpImage   *image;
   const gchar *uri;
+  return_if_no_gimp (gimp, data);
   return_if_no_display (display, data);
   return_if_no_widget (widget, data);
 
   image = display->image;
   uri = gimp_object_get_name (GIMP_OBJECT (image));
 
-  file_open_dialog_show (widget, image, uri, TRUE);
+  file_open_dialog_show (widget, gimp, image, uri, TRUE);
 }
 
 void
@@ -436,7 +441,7 @@
                        const gchar *uri,
                        GtkWidget   *parent)
 {
-  file_open_dialog_show (parent, NULL, uri, FALSE);
+  file_open_dialog_show (parent, gimp, NULL, uri, FALSE);
 }
 
 
@@ -444,6 +449,7 @@
 
 static void
 file_open_dialog_show (GtkWidget   *parent,
+                       Gimp        *gimp,
                        GimpImage   *image,
                        const gchar *uri,
                        gboolean     open_as_layers)
@@ -456,6 +462,9 @@
 
   if (dialog)
     {
+      if (! uri)
+        uri = g_object_get_data (G_OBJECT (gimp), "gimp-file-open-last-uri");
+
       if (uri)
         gtk_file_chooser_set_uri (GTK_FILE_CHOOSER (dialog), uri);
 

Modified: branches/soc-2008-tagging/app/actions/windows-actions.c
==============================================================================
--- branches/soc-2008-tagging/app/actions/windows-actions.c	(original)
+++ branches/soc-2008-tagging/app/actions/windows-actions.c	Sat Aug  2 19:50:36 2008
@@ -321,9 +321,11 @@
                              GimpActionGroup  *group)
 {
   GtkAction *action;
-  gchar     *action_name = g_strdup_printf ("windows-dock-%04d", dock->ID);
+  gchar     *action_name;
 
+  action_name = g_strdup_printf ("windows-dock-%04d", dock->ID);
   action = gtk_action_group_get_action (GTK_ACTION_GROUP (group), action_name);
+  g_free (action_name);
 
   if (action)
     g_object_set (action,

Modified: branches/soc-2008-tagging/app/base/gimphistogram.c
==============================================================================
--- branches/soc-2008-tagging/app/base/gimphistogram.c	(original)
+++ branches/soc-2008-tagging/app/base/gimphistogram.c	Sat Aug  2 19:50:36 2008
@@ -102,6 +102,39 @@
     }
 }
 
+/**
+ * gimp_histogram_duplicate:
+ * @histogram: a %GimpHistogram
+ *
+ * Creates a duplicate of @histogram. The duplicate has a reference
+ * count of 1 and contains the values from @histogram.
+ *
+ * Return value: a newly allocated %GimpHistogram
+ **/
+GimpHistogram *
+gimp_histogram_duplicate (GimpHistogram *histogram)
+{
+  GimpHistogram *dup;
+
+  g_return_val_if_fail (histogram != NULL, NULL);
+
+  dup = gimp_histogram_new ();
+
+#ifdef ENABLE_MP
+  g_static_mutex_lock (&histogram->mutex);
+#endif
+
+  dup->n_channels = histogram->n_channels;
+  dup->values[0]  = g_memdup (histogram->values[0],
+                              sizeof (gdouble) * dup->n_channels * 256);
+
+#ifdef ENABLE_MP
+  g_static_mutex_unlock (&histogram->mutex);
+#endif
+
+  return dup;
+}
+
 void
 gimp_histogram_calculate (GimpHistogram *histogram,
                           PixelRegion   *region,

Modified: branches/soc-2008-tagging/app/base/gimphistogram.h
==============================================================================
--- branches/soc-2008-tagging/app/base/gimphistogram.h	(original)
+++ branches/soc-2008-tagging/app/base/gimphistogram.h	Sat Aug  2 19:50:36 2008
@@ -23,9 +23,12 @@
 
 
 GimpHistogram * gimp_histogram_new           (void);
+
 GimpHistogram * gimp_histogram_ref           (GimpHistogram        *histogram);
 void            gimp_histogram_unref         (GimpHistogram        *histogram);
 
+GimpHistogram * gimp_histogram_duplicate     (GimpHistogram        *histogram);
+
 void            gimp_histogram_calculate     (GimpHistogram        *histogram,
                                               PixelRegion          *region,
                                               PixelRegion          *mask);

Modified: branches/soc-2008-tagging/app/core/gimpchannel.c
==============================================================================
--- branches/soc-2008-tagging/app/core/gimpchannel.c	(original)
+++ branches/soc-2008-tagging/app/core/gimpchannel.c	Sat Aug  2 19:50:36 2008
@@ -712,6 +712,7 @@
 
         retval = gimp_paint_core_stroke_boundary (core, drawable,
                                                   stroke_desc->paint_options,
+                                                  stroke_desc->emulate_dynamics,
                                                   segs_in, n_segs_in,
                                                   offset_x, offset_y,
                                                   error);

Modified: branches/soc-2008-tagging/app/core/gimpcoords.c
==============================================================================
--- branches/soc-2008-tagging/app/core/gimpcoords.c	(original)
+++ branches/soc-2008-tagging/app/core/gimpcoords.c	Sat Aug  2 19:50:36 2008
@@ -120,7 +120,8 @@
           a->pressure * b->pressure +
           a->xtilt    * b->xtilt    +
           a->ytilt    * b->ytilt    +
-          a->wheel    * b->wheel);
+          a->wheel    * b->wheel    +
+          a->velocity * a->velocity);
 }
 
 
@@ -141,6 +142,7 @@
   upscaled_a.xtilt    = a->xtilt    * INPUT_RESOLUTION;
   upscaled_a.ytilt    = a->ytilt    * INPUT_RESOLUTION;
   upscaled_a.wheel    = a->wheel    * INPUT_RESOLUTION;
+  upscaled_a.velocity = a->velocity * INPUT_RESOLUTION;
 
   return gimp_coords_scalarprod (&upscaled_a, &upscaled_a);
 }
@@ -167,6 +169,7 @@
   dist += ABS (a->xtilt - b->xtilt);
   dist += ABS (a->ytilt - b->ytilt);
   dist += ABS (a->wheel - b->wheel);
+  dist += ABS (a->velocity - b->velocity);
 
   dist *= INPUT_RESOLUTION;
 
@@ -185,5 +188,6 @@
           a->pressure == b->pressure &&
              a->xtilt == b->xtilt    &&
              a->ytilt == b->ytilt    &&
-             a->wheel == b->wheel);
+             a->wheel == b->wheel    &&
+          a->velocity == b->velocity);
 }

Modified: branches/soc-2008-tagging/app/core/gimpguideundo.c
==============================================================================
--- branches/soc-2008-tagging/app/core/gimpguideundo.c	(original)
+++ branches/soc-2008-tagging/app/core/gimpguideundo.c	Sat Aug  2 19:50:36 2008
@@ -115,7 +115,7 @@
   switch (property_id)
     {
     case PROP_GUIDE:
-      guide_undo->guide = (GimpGuide *) g_value_dup_object (value);
+      guide_undo->guide = g_value_dup_object (value);
       break;
 
     default:

Modified: branches/soc-2008-tagging/app/core/gimpimage-scale.c
==============================================================================
--- branches/soc-2008-tagging/app/core/gimpimage-scale.c	(original)
+++ branches/soc-2008-tagging/app/core/gimpimage-scale.c	Sat Aug  2 19:50:36 2008
@@ -192,7 +192,9 @@
     }
 
   /*  Scale all sample points  */
-  for (list = gimp_image_get_sample_points (image); list; list = g_list_next (list))
+  for (list = gimp_image_get_sample_points (image);
+       list;
+       list = g_list_next (list))
     {
       GimpSamplePoint *sample_point = list->data;
 

Modified: branches/soc-2008-tagging/app/core/gimpitemundo.c
==============================================================================
--- branches/soc-2008-tagging/app/core/gimpitemundo.c	(original)
+++ branches/soc-2008-tagging/app/core/gimpitemundo.c	Sat Aug  2 19:50:36 2008
@@ -107,8 +107,9 @@
   switch (property_id)
     {
     case PROP_ITEM:
-      item_undo->item = (GimpItem *) g_value_dup_object (value);
+      item_undo->item = g_value_dup_object (value);
       break;
+
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
       break;
@@ -128,6 +129,7 @@
     case PROP_ITEM:
       g_value_set_object (value, item_undo->item);
       break;
+
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
       break;

Modified: branches/soc-2008-tagging/app/core/gimplayermaskundo.c
==============================================================================
--- branches/soc-2008-tagging/app/core/gimplayermaskundo.c	(original)
+++ branches/soc-2008-tagging/app/core/gimplayermaskundo.c	Sat Aug  2 19:50:36 2008
@@ -119,7 +119,7 @@
   switch (property_id)
     {
     case PROP_LAYER_MASK:
-      layer_mask_undo->layer_mask = (GimpLayerMask *) g_value_dup_object (value);
+      layer_mask_undo->layer_mask = g_value_dup_object (value);
       break;
 
     default:

Modified: branches/soc-2008-tagging/app/core/gimppdbprogress.c
==============================================================================
--- branches/soc-2008-tagging/app/core/gimppdbprogress.c	(original)
+++ branches/soc-2008-tagging/app/core/gimppdbprogress.c	Sat Aug  2 19:50:36 2008
@@ -237,13 +237,13 @@
     case PROP_PDB:
       if (progress->pdb)
         g_object_unref (progress->pdb);
-      progress->pdb = GIMP_PDB (g_value_dup_object (value));
+      progress->pdb = g_value_dup_object (value);
       break;
 
     case PROP_CONTEXT:
       if (progress->context)
         g_object_unref (progress->context);
-      progress->context = GIMP_CONTEXT (g_value_dup_object (value));
+      progress->context = g_value_dup_object (value);
       break;
 
     case PROP_CALLBACK_NAME:

Modified: branches/soc-2008-tagging/app/core/gimpstrokedesc.c
==============================================================================
--- branches/soc-2008-tagging/app/core/gimpstrokedesc.c	(original)
+++ branches/soc-2008-tagging/app/core/gimpstrokedesc.c	Sat Aug  2 19:50:36 2008
@@ -47,6 +47,7 @@
   PROP_METHOD,
   PROP_STROKE_OPTIONS,
   PROP_PAINT_INFO,
+  PROP_EMULATE_DYNAMICS,
   PROP_PAINT_OPTIONS
 };
 
@@ -109,6 +110,10 @@
                                    "paint-info", NULL,
                                    GIMP_TYPE_PAINT_INFO,
                                    GIMP_PARAM_STATIC_STRINGS);
+  GIMP_CONFIG_INSTALL_PROP_BOOLEAN (object_class, PROP_EMULATE_DYNAMICS,
+                                    "emulate-brush-dynamics", NULL,
+                                    FALSE,
+                                    GIMP_PARAM_STATIC_STRINGS);
   GIMP_CONFIG_INSTALL_PROP_OBJECT (object_class, PROP_PAINT_OPTIONS,
                                    "paint-options", NULL,
                                    GIMP_TYPE_PAINT_OPTIONS,
@@ -189,23 +194,31 @@
     case PROP_GIMP:
       desc->gimp = g_value_get_object (value);
       break;
+
     case PROP_METHOD:
       desc->method = g_value_get_enum (value);
       break;
+
     case PROP_STROKE_OPTIONS:
       if (g_value_get_object (value))
         gimp_config_sync (g_value_get_object (value),
                           G_OBJECT (desc->stroke_options), 0);
       break;
+
     case PROP_PAINT_INFO:
       if (desc->paint_info)
         g_object_unref (desc->paint_info);
-      desc->paint_info = (GimpPaintInfo *) g_value_dup_object (value);
+      desc->paint_info = g_value_dup_object (value);
       break;
+
+    case PROP_EMULATE_DYNAMICS:
+      desc->emulate_dynamics = g_value_get_boolean (value);
+      break;
+
     case PROP_PAINT_OPTIONS:
       if (desc->paint_options)
         g_object_unref (desc->paint_options);
-      desc->paint_options = (GimpPaintOptions *) g_value_dup_object (value);
+      desc->paint_options = g_value_dup_object (value);
       break;
 
     default:
@@ -227,15 +240,23 @@
     case PROP_GIMP:
       g_value_set_object (value, desc->gimp);
       break;
+
     case PROP_METHOD:
       g_value_set_enum (value, desc->method);
       break;
+
     case PROP_STROKE_OPTIONS:
       g_value_set_object (value, desc->stroke_options);
       break;
+
     case PROP_PAINT_INFO:
       g_value_set_object (value, desc->paint_info);
       break;
+
+    case PROP_EMULATE_DYNAMICS:
+      g_value_set_boolean (value, desc->emulate_dynamics);
+      break;
+
     case PROP_PAINT_OPTIONS:
       g_value_set_object (value, desc->paint_options);
       break;

Modified: branches/soc-2008-tagging/app/core/gimpstrokedesc.h
==============================================================================
--- branches/soc-2008-tagging/app/core/gimpstrokedesc.h	(original)
+++ branches/soc-2008-tagging/app/core/gimpstrokedesc.h	Sat Aug  2 19:50:36 2008
@@ -46,13 +46,14 @@
 
   GimpStrokeOptions *stroke_options;
   GimpPaintInfo     *paint_info;
+  gboolean           emulate_dynamics;
 
   GimpPaintOptions  *paint_options;
 };
 
 struct _GimpStrokeDescClass
 {
-  GimpObjectClass parent_class;
+  GimpObjectClass    parent_class;
 };
 
 

Modified: branches/soc-2008-tagging/app/core/gimptooloptions.c
==============================================================================
--- branches/soc-2008-tagging/app/core/gimptooloptions.c	(original)
+++ branches/soc-2008-tagging/app/core/gimptooloptions.c	Sat Aug  2 19:50:36 2008
@@ -106,7 +106,7 @@
                           options->tool_info == tool_info);
 
         if (! options->tool_info)
-          options->tool_info = GIMP_TOOL_INFO (g_value_dup_object (value));
+          options->tool_info = g_value_dup_object (value);
       }
       break;
 

Modified: branches/soc-2008-tagging/app/core/gimptoolpresets.c
==============================================================================
--- branches/soc-2008-tagging/app/core/gimptoolpresets.c	(original)
+++ branches/soc-2008-tagging/app/core/gimptoolpresets.c	Sat Aug  2 19:50:36 2008
@@ -139,7 +139,7 @@
   switch (property_id)
     {
     case PROP_TOOL_INFO:
-      presets->tool_info = GIMP_TOOL_INFO (g_value_dup_object (value));
+      presets->tool_info = g_value_dup_object (value);
       break;
 
     default:

Modified: branches/soc-2008-tagging/app/dialogs/file-open-dialog.c
==============================================================================
--- branches/soc-2008-tagging/app/dialogs/file-open-dialog.c	(original)
+++ branches/soc-2008-tagging/app/dialogs/file-open-dialog.c	Sat Aug  2 19:50:36 2008
@@ -118,6 +118,10 @@
 
   uris = gtk_file_chooser_get_uris (GTK_FILE_CHOOSER (open_dialog));
 
+  if (uris)
+    g_object_set_data_full (G_OBJECT (gimp), "gimp-file-open-last-uri",
+                            g_strdup (uris->data), (GDestroyNotify) g_free);
+
   gimp_file_dialog_set_sensitive (dialog, FALSE);
 
   for (list = uris; list; list = g_slist_next (list))

Modified: branches/soc-2008-tagging/app/dialogs/stroke-dialog.c
==============================================================================
--- branches/soc-2008-tagging/app/dialogs/stroke-dialog.c	(original)
+++ branches/soc-2008-tagging/app/dialogs/stroke-dialog.c	Sat Aug  2 19:50:36 2008
@@ -204,17 +204,23 @@
                     NULL);
 
   {
+    GtkWidget *vbox;
     GtkWidget *hbox;
     GtkWidget *label;
     GtkWidget *combo;
+    GtkWidget *button;
 
-    hbox = gtk_hbox_new (FALSE, 6);
-    gtk_container_add (GTK_CONTAINER (frame), hbox);
-    gtk_widget_show (hbox);
+    vbox = gtk_vbox_new (FALSE, 6);
+    gtk_container_add (GTK_CONTAINER (frame), vbox);
+    gtk_widget_show (vbox);
 
-    gtk_widget_set_sensitive (hbox,
+    gtk_widget_set_sensitive (vbox,
                               desc->method == GIMP_STROKE_METHOD_PAINT_CORE);
-    g_object_set_data (G_OBJECT (paint_radio), "set_sensitive", hbox);
+    g_object_set_data (G_OBJECT (paint_radio), "set_sensitive", vbox);
+
+    hbox = gtk_hbox_new (FALSE, 6);
+    gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
+    gtk_widget_show (hbox);
 
     label = gtk_label_new (_("Paint tool:"));
     gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
@@ -234,6 +240,12 @@
 
 
     g_object_set_data (G_OBJECT (dialog), "gimp-tool-menu", combo);
+
+    button = gimp_prop_check_button_new (G_OBJECT (desc),
+                                         "emulate-brush-dynamics",
+                                         _("_Emulate brush dynamics"));
+    gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0);
+    gtk_widget_show (button);
   }
 
   return dialog;

Modified: branches/soc-2008-tagging/app/gui/session.c
==============================================================================
--- branches/soc-2008-tagging/app/gui/session.c	(original)
+++ branches/soc-2008-tagging/app/gui/session.c	Sat Aug  2 19:50:36 2008
@@ -155,6 +155,8 @@
                   skip = (info->toplevel_entry == NULL);
                 }
 
+              g_free (entry_name);
+
               if (GIMP_CONFIG_GET_INTERFACE (info)->deserialize (GIMP_CONFIG (info),
                                                                  scanner,
                                                                  1,

Modified: branches/soc-2008-tagging/app/gui/splash.c
==============================================================================
--- branches/soc-2008-tagging/app/gui/splash.c	(original)
+++ branches/soc-2008-tagging/app/gui/splash.c	Sat Aug  2 19:50:36 2008
@@ -151,7 +151,7 @@
       splash->area = gtk_image_new_from_animation (pixbuf);
     }
 
-  gtk_box_pack_start_defaults (GTK_BOX (vbox), splash->area);
+  gtk_box_pack_start (GTK_BOX (vbox), splash->area, TRUE, TRUE, 0);
   gtk_widget_show (splash->area);
 
   gtk_widget_set_size_request (splash->area, splash->width, splash->height);

Modified: branches/soc-2008-tagging/app/menus/file-menu.c
==============================================================================
--- branches/soc-2008-tagging/app/menus/file-menu.c	(original)
+++ branches/soc-2008-tagging/app/menus/file-menu.c	Sat Aug  2 19:50:36 2008
@@ -105,7 +105,12 @@
                                      GtkTooltip *tooltip,
                                      GimpAction *action)
 {
-  gtk_tooltip_set_text (tooltip, gtk_widget_get_tooltip_text (widget));
+  gchar *text;
+
+  text = gtk_widget_get_tooltip_text (widget);
+  gtk_tooltip_set_text (tooltip, text);
+  g_free (text);
+
   gtk_tooltip_set_icon (tooltip,
                         gimp_viewable_get_pixbuf (action->viewable,
                                                   action->context,

Modified: branches/soc-2008-tagging/app/paint/gimppaintcore-stroke.c
==============================================================================
--- branches/soc-2008-tagging/app/paint/gimppaintcore-stroke.c	(original)
+++ branches/soc-2008-tagging/app/paint/gimppaintcore-stroke.c	Sat Aug  2 19:50:36 2008
@@ -34,6 +34,9 @@
 #include "gimppaintoptions.h"
 
 
+static void gimp_paint_core_stroke_emulate_dynamics (GimpCoords *coords,
+                                                     gint        length);
+
 static const GimpCoords default_coords = GIMP_COORDS_DEFAULT_VALUES;
 
 
@@ -91,6 +94,7 @@
 gimp_paint_core_stroke_boundary (GimpPaintCore     *core,
                                  GimpDrawable      *drawable,
                                  GimpPaintOptions  *paint_options,
+                                 gboolean           emulate_dynamics,
                                  const BoundSeg    *bound_segs,
                                  gint               n_bound_segs,
                                  gint               offset_x,
@@ -160,6 +164,9 @@
 
       n_coords++;
 
+      if (emulate_dynamics)
+        gimp_paint_core_stroke_emulate_dynamics (coords, n_coords);
+
       if (initialized ||
           gimp_paint_core_start (core, drawable, paint_options, &coords[0],
                                  error))
@@ -219,15 +226,14 @@
 gimp_paint_core_stroke_vectors (GimpPaintCore     *core,
                                 GimpDrawable      *drawable,
                                 GimpPaintOptions  *paint_options,
+                                gboolean           emulate_dynamics,
                                 GimpVectors       *vectors,
                                 GError           **error)
 {
-  GList      *stroke;
-  GArray     *coords      = NULL;
-  gboolean    initialized = FALSE;
-  gboolean    closed;
-  gint        off_x, off_y;
-  gint        vectors_off_x, vectors_off_y;
+  GList    *stroke;
+  gboolean  initialized = FALSE;
+  gint      off_x, off_y;
+  gint      vectors_off_x, vectors_off_y;
 
   g_return_val_if_fail (GIMP_IS_PAINT_CORE (core), FALSE);
   g_return_val_if_fail (GIMP_IS_DRAWABLE (drawable), FALSE);
@@ -244,6 +250,9 @@
 
   for (stroke = vectors->strokes; stroke; stroke = stroke->next)
     {
+      GArray   *coords;
+      gboolean  closed;
+
       coords = gimp_stroke_interpolate (GIMP_STROKE (stroke->data),
                                         1.0, &closed);
 
@@ -257,6 +266,10 @@
               g_array_index (coords, GimpCoords, i).y -= off_y;
             }
 
+          if (emulate_dynamics)
+            gimp_paint_core_stroke_emulate_dynamics ((GimpCoords *) coords->data,
+                                                     coords->len);
+
           if (initialized ||
               gimp_paint_core_start (core, drawable, paint_options,
                                      &g_array_index (coords, GimpCoords, 0),
@@ -305,3 +318,42 @@
 
   return initialized;
 }
+
+static void
+gimp_paint_core_stroke_emulate_dynamics (GimpCoords *coords,
+                                         gint        length)
+{
+  const gint ramp_length = length / 3;
+
+  /* Calculate and create pressure ramp parameters */
+  if (ramp_length > 0)
+    {
+      gdouble slope = 1.0 / (gdouble) (ramp_length);
+      gint    i;
+
+      /* Calculate pressure start ramp */
+      for (i = 0; i < ramp_length; i++)
+        {
+          coords[i].pressure =  i * slope;
+        }
+                
+      /* Calculate pressure end ramp */
+      for (i = length - ramp_length; i < length; i++)
+        {
+          coords[i].pressure = 1.0 - (i - (length - ramp_length)) * slope;
+        }
+    }
+
+  /* Calculate and create velocity ramp parameters */
+  if (length > 0)
+    {
+      gdouble slope = 1.0 / length;
+      gint    i;
+
+      /* Calculate velocity end ramp */
+      for (i = 0; i < length; i++)
+        {
+          coords[i].velocity = i * slope;
+        }
+    }
+}

Modified: branches/soc-2008-tagging/app/paint/gimppaintcore-stroke.h
==============================================================================
--- branches/soc-2008-tagging/app/paint/gimppaintcore-stroke.h	(original)
+++ branches/soc-2008-tagging/app/paint/gimppaintcore-stroke.h	Sat Aug  2 19:50:36 2008
@@ -29,6 +29,7 @@
 gboolean   gimp_paint_core_stroke_boundary (GimpPaintCore     *core,
                                             GimpDrawable      *drawable,
                                             GimpPaintOptions  *paint_options,
+                                            gboolean           emulate_dynamics,
                                             const BoundSeg    *bound_segs,
                                             gint               n_bound_segs,
                                             gint               offset_x,
@@ -37,6 +38,7 @@
 gboolean   gimp_paint_core_stroke_vectors  (GimpPaintCore     *core,
                                             GimpDrawable      *drawable,
                                             GimpPaintOptions  *paint_options,
+                                            gboolean           emulate_dynamics,
                                             GimpVectors       *vectors,
                                             GError           **error);
 

Modified: branches/soc-2008-tagging/app/paint/gimppaintoptions.c
==============================================================================
--- branches/soc-2008-tagging/app/paint/gimppaintoptions.c	(original)
+++ branches/soc-2008-tagging/app/paint/gimppaintoptions.c	Sat Aug  2 19:50:36 2008
@@ -412,15 +412,17 @@
   switch (property_id)
     {
     case PROP_PAINT_INFO:
-      options->paint_info = (GimpPaintInfo *) g_value_dup_object (value);
+      options->paint_info = g_value_dup_object (value);
       break;
 
     case PROP_BRUSH_SCALE:
       options->brush_scale = g_value_get_double (value);
       break;
+
     case PROP_APPLICATION_MODE:
       options->application_mode = g_value_get_enum (value);
       break;
+
     case PROP_HARD:
       options->hard = g_value_get_boolean (value);
       break;
@@ -432,21 +434,27 @@
     case PROP_PRESSURE_OPACITY:
       pressure_options->opacity = g_value_get_boolean (value);
       break;
+
     case PROP_PRESSURE_HARDNESS:
       pressure_options->hardness = g_value_get_boolean (value);
       break;
+
     case PROP_PRESSURE_RATE:
       pressure_options->rate = g_value_get_boolean (value);
       break;
+
     case PROP_PRESSURE_SIZE:
       pressure_options->size = g_value_get_boolean (value);
       break;
+
     case PROP_PRESSURE_INVERSE_SIZE:
       pressure_options->inverse_size = g_value_get_boolean (value);
       break;
+
     case PROP_PRESSURE_COLOR:
       pressure_options->color = g_value_get_boolean (value);
       break;
+
     case PROP_PRESSURE_PRESCALE:
       pressure_options->prescale = g_value_get_double (value);
       break;
@@ -454,21 +462,27 @@
     case PROP_VELOCITY_OPACITY:
       velocity_options->opacity = g_value_get_boolean (value);
       break;
+
     case PROP_VELOCITY_HARDNESS:
       velocity_options->hardness = g_value_get_boolean (value);
       break;
+
     case PROP_VELOCITY_RATE:
       velocity_options->rate = g_value_get_boolean (value);
       break;
+
     case PROP_VELOCITY_SIZE:
       velocity_options->size = g_value_get_boolean (value);
       break;
+
     case PROP_VELOCITY_INVERSE_SIZE:
       velocity_options->inverse_size = g_value_get_boolean (value);
       break;
+
     case PROP_VELOCITY_COLOR:
       velocity_options->color = g_value_get_boolean (value);
       break;
+
     case PROP_VELOCITY_PRESCALE:
       velocity_options->prescale = g_value_get_double (value);
       break;
@@ -476,21 +490,27 @@
     case PROP_RANDOM_OPACITY:
       random_options->opacity = g_value_get_boolean (value);
       break;
+
     case PROP_RANDOM_HARDNESS:
       random_options->hardness = g_value_get_boolean (value);
       break;
+
     case PROP_RANDOM_RATE:
       random_options->rate = g_value_get_boolean (value);
       break;
+
     case PROP_RANDOM_SIZE:
       random_options->size = g_value_get_boolean (value);
       break;
+
     case PROP_RANDOM_INVERSE_SIZE:
       random_options->inverse_size = g_value_get_boolean (value);
       break;
+
     case PROP_RANDOM_COLOR:
       random_options->color = g_value_get_boolean (value);
       break;
+
     case PROP_RANDOM_PRESCALE:
       random_options->prescale = g_value_get_double (value);
       break;
@@ -498,9 +518,11 @@
     case PROP_USE_FADE:
       fade_options->use_fade = g_value_get_boolean (value);
       break;
+
     case PROP_FADE_LENGTH:
       fade_options->fade_length = g_value_get_double (value);
       break;
+
     case PROP_FADE_UNIT:
       fade_options->fade_unit = g_value_get_int (value);
       break;
@@ -508,6 +530,7 @@
     case PROP_USE_JITTER:
       jitter_options->use_jitter = g_value_get_boolean (value);
       break;
+
     case PROP_JITTER_AMOUNT:
       jitter_options->jitter_amount = g_value_get_double (value);
       break;
@@ -515,15 +538,19 @@
     case PROP_USE_GRADIENT:
       gradient_options->use_gradient = g_value_get_boolean (value);
       break;
+
     case PROP_GRADIENT_REVERSE:
       gradient_options->gradient_reverse = g_value_get_boolean (value);
       break;
+
     case PROP_GRADIENT_REPEAT:
       gradient_options->gradient_repeat = g_value_get_enum (value);
       break;
+
     case PROP_GRADIENT_LENGTH:
       gradient_options->gradient_length = g_value_get_double (value);
       break;
+
     case PROP_GRADIENT_UNIT:
       gradient_options->gradient_unit = g_value_get_int (value);
       break;
@@ -531,6 +558,7 @@
     case PROP_BRUSH_VIEW_TYPE:
       options->brush_view_type = g_value_get_enum (value);
       break;
+
     case PROP_BRUSH_VIEW_SIZE:
       options->brush_view_size = g_value_get_int (value);
       break;
@@ -538,6 +566,7 @@
     case PROP_PATTERN_VIEW_TYPE:
       options->pattern_view_type = g_value_get_enum (value);
       break;
+
     case PROP_PATTERN_VIEW_SIZE:
       options->pattern_view_size = g_value_get_int (value);
       break;
@@ -545,6 +574,7 @@
     case PROP_GRADIENT_VIEW_TYPE:
       options->gradient_view_type = g_value_get_enum (value);
       break;
+
     case PROP_GRADIENT_VIEW_SIZE:
       options->gradient_view_size = g_value_get_int (value);
       break;
@@ -578,9 +608,11 @@
     case PROP_BRUSH_SCALE:
       g_value_set_double (value, options->brush_scale);
       break;
+
     case PROP_APPLICATION_MODE:
       g_value_set_enum (value, options->application_mode);
       break;
+
     case PROP_HARD:
       g_value_set_boolean (value, options->hard);
       break;
@@ -592,21 +624,27 @@
     case PROP_PRESSURE_OPACITY:
       g_value_set_boolean (value, pressure_options->opacity);
       break;
+
     case PROP_PRESSURE_HARDNESS:
       g_value_set_boolean (value, pressure_options->hardness);
       break;
+
     case PROP_PRESSURE_RATE:
       g_value_set_boolean (value, pressure_options->rate);
       break;
+
     case PROP_PRESSURE_SIZE:
       g_value_set_boolean (value, pressure_options->size);
       break;
+
     case PROP_PRESSURE_INVERSE_SIZE:
       g_value_set_boolean (value, pressure_options->inverse_size);
       break;
+
     case PROP_PRESSURE_COLOR:
       g_value_set_boolean (value, pressure_options->color);
       break;
+
     case PROP_PRESSURE_PRESCALE:
       g_value_set_double (value, pressure_options->prescale);
       break;
@@ -614,21 +652,27 @@
     case PROP_VELOCITY_OPACITY:
       g_value_set_boolean (value, velocity_options->opacity);
       break;
+
     case PROP_VELOCITY_HARDNESS:
       g_value_set_boolean (value, velocity_options->hardness);
       break;
+
     case PROP_VELOCITY_RATE:
       g_value_set_boolean (value, velocity_options->rate);
       break;
+
     case PROP_VELOCITY_SIZE:
       g_value_set_boolean (value, velocity_options->size);
       break;
+
     case PROP_VELOCITY_INVERSE_SIZE:
       g_value_set_boolean (value, velocity_options->inverse_size);
       break;
+
     case PROP_VELOCITY_COLOR:
       g_value_set_boolean (value, velocity_options->color);
       break;
+
     case PROP_VELOCITY_PRESCALE:
       g_value_set_double (value, velocity_options->prescale);
       break;
@@ -636,21 +680,27 @@
     case PROP_RANDOM_OPACITY:
       g_value_set_boolean (value, random_options->opacity);
       break;
+
     case PROP_RANDOM_HARDNESS:
       g_value_set_boolean (value, random_options->hardness);
       break;
+
     case PROP_RANDOM_RATE:
       g_value_set_boolean (value, random_options->rate);
       break;
+
     case PROP_RANDOM_SIZE:
       g_value_set_boolean (value, random_options->size);
       break;
+
     case PROP_RANDOM_INVERSE_SIZE:
       g_value_set_boolean (value, random_options->inverse_size);
       break;
+
     case PROP_RANDOM_COLOR:
       g_value_set_boolean (value, random_options->color);
       break;
+
     case PROP_RANDOM_PRESCALE:
       g_value_set_double (value, random_options->prescale);
       break;
@@ -658,9 +708,11 @@
     case PROP_USE_FADE:
       g_value_set_boolean (value, fade_options->use_fade);
       break;
+
     case PROP_FADE_LENGTH:
       g_value_set_double (value, fade_options->fade_length);
       break;
+
     case PROP_FADE_UNIT:
       g_value_set_int (value, fade_options->fade_unit);
       break;
@@ -668,6 +720,7 @@
     case PROP_USE_JITTER:
       g_value_set_boolean (value, jitter_options->use_jitter);
       break;
+
     case PROP_JITTER_AMOUNT:
       g_value_set_double (value, jitter_options->jitter_amount);
       break;
@@ -675,15 +728,19 @@
     case PROP_USE_GRADIENT:
       g_value_set_boolean (value, gradient_options->use_gradient);
       break;
+
     case PROP_GRADIENT_REVERSE:
       g_value_set_boolean (value, gradient_options->gradient_reverse);
       break;
+
     case PROP_GRADIENT_REPEAT:
       g_value_set_enum (value, gradient_options->gradient_repeat);
       break;
+
     case PROP_GRADIENT_LENGTH:
       g_value_set_double (value, gradient_options->gradient_length);
       break;
+
     case PROP_GRADIENT_UNIT:
       g_value_set_int (value, gradient_options->gradient_unit);
       break;
@@ -691,6 +748,7 @@
     case PROP_BRUSH_VIEW_TYPE:
       g_value_set_enum (value, options->brush_view_type);
       break;
+
     case PROP_BRUSH_VIEW_SIZE:
       g_value_set_int (value, options->brush_view_size);
       break;
@@ -698,6 +756,7 @@
     case PROP_PATTERN_VIEW_TYPE:
       g_value_set_enum (value, options->pattern_view_type);
       break;
+
     case PROP_PATTERN_VIEW_SIZE:
       g_value_set_int (value, options->pattern_view_size);
       break;
@@ -705,6 +764,7 @@
     case PROP_GRADIENT_VIEW_TYPE:
       g_value_set_enum (value, options->gradient_view_type);
       break;
+
     case PROP_GRADIENT_VIEW_SIZE:
       g_value_set_int (value, options->gradient_view_size);
       break;

Modified: branches/soc-2008-tagging/app/pdb/edit-cmds.c
==============================================================================
--- branches/soc-2008-tagging/app/pdb/edit-cmds.c	(original)
+++ branches/soc-2008-tagging/app/pdb/edit-cmds.c	Sat Aug  2 19:50:36 2008
@@ -766,7 +766,8 @@
 
   if (success)
     {
-      if (gimp_pdb_item_is_attached (GIMP_ITEM (drawable), error))
+      if (gimp_pdb_item_is_attached (GIMP_ITEM (drawable), error) &&
+          gimp_pdb_item_is_attached (GIMP_ITEM (vectors), error))
         {
           GimpStrokeDesc *desc  = gimp_stroke_desc_new (gimp, context);
 

Modified: branches/soc-2008-tagging/app/pdb/internal-procs.c
==============================================================================
--- branches/soc-2008-tagging/app/pdb/internal-procs.c	(original)
+++ branches/soc-2008-tagging/app/pdb/internal-procs.c	Sat Aug  2 19:50:36 2008
@@ -29,7 +29,7 @@
 #include "internal-procs.h"
 
 
-/* 587 procedures registered total */
+/* 588 procedures registered total */
 
 void
 internal_procs_init (GimpPDB *pdb)

Modified: branches/soc-2008-tagging/app/pdb/vectors-cmds.c
==============================================================================
--- branches/soc-2008-tagging/app/pdb/vectors-cmds.c	(original)
+++ branches/soc-2008-tagging/app/pdb/vectors-cmds.c	Sat Aug  2 19:50:36 2008
@@ -145,6 +145,38 @@
 }
 
 static GValueArray *
+vectors_copy_invoker (GimpProcedure      *procedure,
+                      Gimp               *gimp,
+                      GimpContext        *context,
+                      GimpProgress       *progress,
+                      const GValueArray  *args,
+                      GError            **error)
+{
+  gboolean success = TRUE;
+  GValueArray *return_vals;
+  GimpVectors *vectors;
+  GimpVectors *vectors_copy = NULL;
+
+  vectors = gimp_value_get_vectors (&args->values[0], gimp);
+
+  if (success)
+    {
+      vectors_copy = GIMP_VECTORS (gimp_item_duplicate (GIMP_ITEM (vectors),
+                                   G_TYPE_FROM_INSTANCE (vectors)));
+
+      if (! vectors_copy)
+        success = FALSE;
+    }
+
+  return_vals = gimp_procedure_get_return_values (procedure, success);
+
+  if (success)
+    gimp_value_set_vectors (&return_vals->values[1], vectors_copy);
+
+  return return_vals;
+}
+
+static GValueArray *
 vectors_get_image_invoker (GimpProcedure      *procedure,
                            Gimp               *gimp,
                            GimpContext        *context,
@@ -1486,6 +1518,35 @@
   g_object_unref (procedure);
 
   /*
+   * gimp-vectors-copy
+   */
+  procedure = gimp_procedure_new (vectors_copy_invoker);
+  gimp_object_set_static_name (GIMP_OBJECT (procedure),
+                               "gimp-vectors-copy");
+  gimp_procedure_set_static_strings (procedure,
+                                     "gimp-vectors-copy",
+                                     "Copy a vectors object.",
+                                     "This procedure copies the specified vectors object and returns the copy.",
+                                     "Barak Itkin <lightningismyname gmail com>",
+                                     "Barak Itkin",
+                                     "2008",
+                                     NULL);
+  gimp_procedure_add_argument (procedure,
+                               gimp_param_spec_vectors_id ("vectors",
+                                                           "vectors",
+                                                           "The vectors object to copy",
+                                                           pdb->gimp, FALSE,
+                                                           GIMP_PARAM_READWRITE));
+  gimp_procedure_add_return_value (procedure,
+                                   gimp_param_spec_vectors_id ("vectors-copy",
+                                                               "vectors copy",
+                                                               "The newly copied vectors object",
+                                                               pdb->gimp, FALSE,
+                                                               GIMP_PARAM_READWRITE));
+  gimp_pdb_register_procedure (pdb, procedure);
+  g_object_unref (procedure);
+
+  /*
    * gimp-vectors-get-image
    */
   procedure = gimp_procedure_new (vectors_get_image_invoker);

Modified: branches/soc-2008-tagging/app/text/gimpfont.c
==============================================================================
--- branches/soc-2008-tagging/app/text/gimpfont.c	(original)
+++ branches/soc-2008-tagging/app/text/gimpfont.c	Sat Aug  2 19:50:36 2008
@@ -165,7 +165,7 @@
     case PROP_PANGO_CONTEXT:
       if (font->pango_context)
         g_object_unref (font->pango_context);
-      font->pango_context = (PangoContext *) g_value_dup_object (value);
+      font->pango_context = g_value_dup_object (value);
       break;
 
     default:

Modified: branches/soc-2008-tagging/app/text/gimptext-compat.c
==============================================================================
--- branches/soc-2008-tagging/app/text/gimptext-compat.c	(original)
+++ branches/soc-2008-tagging/app/text/gimptext-compat.c	Sat Aug  2 19:50:36 2008
@@ -154,6 +154,17 @@
   context = pango_ft2_font_map_create_context (PANGO_FT2_FONT_MAP (fontmap));
   g_object_unref (fontmap);
 
+  /*  Workaround for bug #143542 (PangoFT2Fontmap leak),
+   *  see also bug #148997 (Text layer rendering leaks font file descriptor):
+   *
+   *  Calling pango_ft2_font_map_substitute_changed() causes the
+   *  font_map cache to be flushed, thereby removing the circular
+   *  reference that causes the leak.
+   */
+  g_object_weak_ref (G_OBJECT (context),
+                     (GWeakNotify) pango_ft2_font_map_substitute_changed,
+                     fontmap);
+
   layout = pango_layout_new (context);
   g_object_unref (context);
 
@@ -176,7 +187,7 @@
       PangoLayoutLine *line;
 
       iter = pango_layout_get_iter (layout);
-      line = pango_layout_iter_get_line (iter);
+      line = pango_layout_iter_get_line_readonly (iter);
       pango_layout_iter_free (iter);
 
       pango_layout_line_get_pixel_extents (line, NULL, &rect);

Modified: branches/soc-2008-tagging/app/text/gimptextlayout-render.c
==============================================================================
--- branches/soc-2008-tagging/app/text/gimptextlayout-render.c	(original)
+++ branches/soc-2008-tagging/app/text/gimptextlayout-render.c	Sat Aug  2 19:50:36 2008
@@ -91,7 +91,7 @@
       PangoLayoutLine *line;
       gint             baseline;
 
-      line = pango_layout_iter_get_line (iter);
+      line = pango_layout_iter_get_line_readonly (iter);
 
       pango_layout_iter_get_line_extents (iter, NULL, &rect);
       baseline = pango_layout_iter_get_baseline (iter);

Modified: branches/soc-2008-tagging/app/tools/gimpcolortool.c
==============================================================================
--- branches/soc-2008-tagging/app/tools/gimpcolortool.c	(original)
+++ branches/soc-2008-tagging/app/tools/gimpcolortool.c	Sat Aug  2 19:50:36 2008
@@ -247,6 +247,8 @@
       color_tool->sample_point_x      = color_tool->sample_point->x;
       color_tool->sample_point_y      = color_tool->sample_point->y;
 
+      gimp_tool_control_set_scroll_lock (tool->control, TRUE);
+
       gimp_display_shell_selection_control (shell, GIMP_SELECTION_PAUSE);
 
       gimp_draw_tool_start (GIMP_DRAW_TOOL (tool), display);
@@ -299,6 +301,7 @@
 
       gimp_tool_pop_status (tool, display);
 
+      gimp_tool_control_set_scroll_lock (tool->control, FALSE);
       gimp_draw_tool_stop (GIMP_DRAW_TOOL (tool));
 
       if (release_type == GIMP_BUTTON_RELEASE_CANCEL)
@@ -811,6 +814,7 @@
 
   tool->display = display;
   gimp_tool_control_activate (tool->control);
+  gimp_tool_control_set_scroll_lock (tool->control, TRUE);
 
   if (color_tool->sample_point)
     gimp_display_shell_draw_sample_point (GIMP_DISPLAY_SHELL (display->shell),

Modified: branches/soc-2008-tagging/app/tools/gimpdrawtool.c
==============================================================================
--- branches/soc-2008-tagging/app/tools/gimpdrawtool.c	(original)
+++ branches/soc-2008-tagging/app/tools/gimpdrawtool.c	Sat Aug  2 19:50:36 2008
@@ -1362,7 +1362,6 @@
   GimpStroke *pref_stroke  = NULL;
   GimpAnchor *anchor       = NULL;
   GimpAnchor *pref_anchor  = NULL;
-  GList      *list;
   gdouble     dx, dy;
   gdouble     pref_mindist = -1;
   gdouble     mindist      = -1;
@@ -1377,35 +1376,33 @@
 
   while ((stroke = gimp_vectors_stroke_get_next (vectors, stroke)))
     {
-      GList *anchor_list;
+      GList *anchor_list = gimp_stroke_get_draw_anchors (stroke);
+      GList *list;
 
-      anchor_list = gimp_stroke_get_draw_anchors (stroke);
+      anchor_list = g_list_concat (gimp_stroke_get_draw_anchors (stroke),
+                                   gimp_stroke_get_draw_controls (stroke));
 
-      list = gimp_stroke_get_draw_controls (stroke);
-      anchor_list = g_list_concat (anchor_list, list);
-
-      while (anchor_list)
+      for (list = anchor_list; list; list = g_list_next (list))
         {
-          dx = coord->x - GIMP_ANCHOR (anchor_list->data)->position.x;
-          dy = coord->y - GIMP_ANCHOR (anchor_list->data)->position.y;
+          dx = coord->x - GIMP_ANCHOR (list->data)->position.x;
+          dy = coord->y - GIMP_ANCHOR (list->data)->position.y;
 
           if (mindist < 0 || mindist > dx * dx + dy * dy)
             {
               mindist = dx * dx + dy * dy;
-              anchor = GIMP_ANCHOR (anchor_list->data);
+              anchor = GIMP_ANCHOR (list->data);
+
               if (ret_stroke)
                 *ret_stroke = stroke;
             }
 
           if ((pref_mindist < 0 || pref_mindist > dx * dx + dy * dy) &&
-              GIMP_ANCHOR (anchor_list->data)->type == preferred)
+              GIMP_ANCHOR (list->data)->type == preferred)
             {
               pref_mindist = dx * dx + dy * dy;
-              pref_anchor = GIMP_ANCHOR (anchor_list->data);
+              pref_anchor = GIMP_ANCHOR (list->data);
               pref_stroke = stroke;
             }
-
-          anchor_list = anchor_list->next;
         }
 
       g_list_free (anchor_list);

Modified: branches/soc-2008-tagging/app/tools/gimprectangletool.c
==============================================================================
--- branches/soc-2008-tagging/app/tools/gimprectangletool.c	(original)
+++ branches/soc-2008-tagging/app/tools/gimprectangletool.c	Sat Aug  2 19:50:36 2008
@@ -2183,23 +2183,33 @@
                                        gdouble            new_x,
                                        gdouble            new_y)
 {
+  GimpTool                 *tool;
+  GimpDrawTool             *draw_tool;
   GimpRectangleToolPrivate *private;
   GimpRectangleFunction     old_function;
 
+  tool      = GIMP_TOOL (rect_tool);
+  draw_tool = GIMP_DRAW_TOOL (rect_tool);
+  private   = GIMP_RECTANGLE_TOOL_GET_PRIVATE (rect_tool);
+
   /* We don't want to synthesize motions if the tool control is active
    * since that means the mouse button is down and the rectangle will
    * get updated in _motion anyway. The reason we want to prevent this
-   * function from executing is that is emits the rectangle-changed
-   * signal which we don't want in the middle of a rectangle change.
+   * function from executing is that is emits the
+   * rectangle-changed-complete signal which we don't want in the
+   * middle of a rectangle change.
+   *
+   * In addition to that, we don't want to synthesize a motion if
+   * there is no pending rectangle because that doesn't make any
+   * sense.
    */
-  if (gimp_tool_control_is_active (GIMP_TOOL (rect_tool)->control))
+  if (gimp_tool_control_is_active (tool->control) ||
+      ! tool->display)
     return;
 
-  private = GIMP_RECTANGLE_TOOL_GET_PRIVATE (rect_tool);
-
   old_function = private->function;
 
-  gimp_draw_tool_pause (GIMP_DRAW_TOOL (rect_tool));
+  gimp_draw_tool_pause (draw_tool);
 
   gimp_rectangle_tool_set_function (rect_tool, function);
 
@@ -2212,14 +2222,14 @@
   private->center_y_on_fixed_center = (private->y1 + private->y2) / 2;
 
   gimp_rectangle_tool_update_options (rect_tool,
-                                      GIMP_TOOL (rect_tool)->display);
+                                      tool->display);
 
   gimp_rectangle_tool_set_function (rect_tool, old_function);
 
   gimp_rectangle_tool_update_highlight (rect_tool);
   gimp_rectangle_tool_update_handle_sizes (rect_tool);
 
-  gimp_draw_tool_resume (GIMP_DRAW_TOOL (rect_tool));
+  gimp_draw_tool_resume (draw_tool);
 
   gimp_rectangle_tool_rectangle_change_complete (rect_tool);
 }

Modified: branches/soc-2008-tagging/app/tools/gimptool.c
==============================================================================
--- branches/soc-2008-tagging/app/tools/gimptool.c	(original)
+++ branches/soc-2008-tagging/app/tools/gimptool.c	Sat Aug  2 19:50:36 2008
@@ -198,7 +198,7 @@
   switch (property_id)
     {
     case PROP_TOOL_INFO:
-      tool->tool_info = GIMP_TOOL_INFO (g_value_dup_object (value));
+      tool->tool_info = g_value_dup_object (value);
       break;
 
     default:

Modified: branches/soc-2008-tagging/app/tools/gimpvectortool.c
==============================================================================
--- branches/soc-2008-tagging/app/tools/gimpvectortool.c	(original)
+++ branches/soc-2008-tagging/app/tools/gimpvectortool.c	Sat Aug  2 19:50:36 2008
@@ -286,6 +286,7 @@
           gimp_vector_tool_set_vectors (vector_tool, vectors);
           gimp_image_set_active_vectors (display->image, vectors);
         }
+
       vector_tool->function = VECTORS_FINISHED;
     }
 
@@ -306,7 +307,6 @@
       gimp_vector_tool_set_vectors (vector_tool, vectors);
 
       vector_tool->function = VECTORS_CREATE_STROKE;
-
     }
 
   gimp_vectors_freeze (vector_tool->vectors);
@@ -335,21 +335,28 @@
 
   if (vector_tool->function == VECTORS_ADD_ANCHOR)
     {
+      GimpCoords position = GIMP_COORDS_DEFAULT_VALUES;
+
+      position.x = coords->x;
+      position.y = coords->y;
+
       gimp_vector_tool_undo_push (vector_tool, _("Add Anchor"));
 
       vector_tool->undo_motion = TRUE;
 
       vector_tool->cur_anchor =
-                     gimp_bezier_stroke_extend (vector_tool->sel_stroke, coords,
+                     gimp_bezier_stroke_extend (vector_tool->sel_stroke,
+                                                &position,
                                                 vector_tool->sel_anchor,
                                                 EXTEND_EDITABLE);
 
       vector_tool->restriction = GIMP_ANCHOR_FEATURE_SYMMETRIC;
 
-      if (!options->polygonal)
+      if (! options->polygonal)
         vector_tool->function = VECTORS_MOVE_HANDLE;
       else
         vector_tool->function = VECTORS_MOVE_ANCHOR;
+
       vector_tool->cur_stroke = vector_tool->sel_stroke;
     }
 
@@ -374,6 +381,7 @@
                                           vector_tool->cur_anchor,
                                           GIMP_ANCHOR_FEATURE_EDGE);
             }
+
           vector_tool->function = VECTORS_MOVE_ANCHOR;
         }
       else
@@ -391,7 +399,7 @@
 
       if (vector_tool->cur_anchor->type == GIMP_ANCHOR_ANCHOR)
         {
-          if (!vector_tool->cur_anchor->selected)
+          if (! vector_tool->cur_anchor->selected)
             {
               gimp_vectors_anchor_select (vector_tool->vectors,
                                           vector_tool->cur_stroke,
@@ -406,7 +414,7 @@
                                             GIMP_ANCHOR_CONTROL, TRUE,
                                             &vector_tool->cur_anchor,
                                             &vector_tool->cur_stroke);
-          if (!vector_tool->cur_anchor)
+          if (! vector_tool->cur_anchor)
             vector_tool->function = VECTORS_FINISHED;
         }
     }
@@ -418,7 +426,7 @@
     {
       gimp_vector_tool_undo_push (vector_tool, _("Drag Anchor"));
 
-      if (!vector_tool->cur_anchor->selected)
+      if (! vector_tool->cur_anchor->selected)
         {
           gimp_vectors_anchor_select (vector_tool->vectors,
                                       vector_tool->cur_stroke,
@@ -442,7 +450,9 @@
                                       vector_tool->cur_anchor,
                                       !vector_tool->cur_anchor->selected,
                                       FALSE);
+
           vector_tool->undo_motion = TRUE;
+
           if (vector_tool->cur_anchor->selected == FALSE)
             vector_tool->function = VECTORS_FINISHED;
         }
@@ -495,6 +505,7 @@
           gimp_vectors_stroke_remove (vector_tool->vectors,
                                       vector_tool->cur_stroke);
         }
+
       vector_tool->sel_anchor = vector_tool->cur_anchor;
       vector_tool->cur_stroke = vector_tool->sel_stroke;
 
@@ -643,11 +654,15 @@
 {
   GimpVectorTool    *vector_tool = GIMP_VECTOR_TOOL (tool);
   GimpVectorOptions *options     = GIMP_VECTOR_TOOL_GET_OPTIONS (tool);
+  GimpCoords         position    = GIMP_COORDS_DEFAULT_VALUES;
   GimpAnchor        *anchor;
 
   if (vector_tool->function == VECTORS_FINISHED)
     return;
 
+  position.x = coords->x;
+  position.y = coords->y;
+
   gimp_vectors_freeze (vector_tool->vectors);
 
   if ((vector_tool->saved_state & TOGGLE_MASK) != (state & TOGGLE_MASK))
@@ -675,7 +690,8 @@
         {
           gimp_stroke_anchor_move_absolute (vector_tool->cur_stroke,
                                             vector_tool->cur_anchor,
-                                            coords, vector_tool->restriction);
+                                            &position,
+                                            vector_tool->restriction);
           vector_tool->undo_motion = TRUE;
         }
       break;
@@ -684,8 +700,8 @@
       if (options->polygonal)
         {
           gimp_vector_tool_move_selected_anchors (vector_tool,
-                                               coords->x - vector_tool->last_x,
-                                               coords->y - vector_tool->last_y);
+                                                  coords->x - vector_tool->last_x,
+                                                  coords->y - vector_tool->last_y);
           vector_tool->undo_motion = TRUE;
         }
       else
@@ -693,7 +709,8 @@
           gimp_stroke_point_move_absolute (vector_tool->cur_stroke,
                                            vector_tool->cur_anchor,
                                            vector_tool->cur_position,
-                                           coords, vector_tool->restriction);
+                                           &position,
+                                           vector_tool->restriction);
           vector_tool->undo_motion = TRUE;
         }
       break;
@@ -977,6 +994,7 @@
           else
             {
               vector_tool->function = VECTORS_MOVE_HANDLE;
+
               if (state & TOGGLE_MASK)
                 vector_tool->restriction = GIMP_ANCHOR_FEATURE_SYMMETRIC;
               else
@@ -988,6 +1006,7 @@
           if (gimp_stroke_point_is_movable (stroke, anchor, position))
             {
               vector_tool->function = VECTORS_MOVE_CURVE;
+
               if (state & TOGGLE_MASK)
                 vector_tool->restriction = GIMP_ANCHOR_FEATURE_SYMMETRIC;
               else
@@ -1688,9 +1707,9 @@
 {
   GimpAnchor *cur_anchor;
   GimpStroke *cur_stroke = NULL;
-  GList *anchors;
-  GList *list;
-  GimpCoords offset = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
+  GList      *anchors;
+  GList      *list;
+  GimpCoords  offset = { 0.0, };
 
   offset.x = x;
   offset.y = y;
@@ -1780,7 +1799,7 @@
   vector_tool->sel_anchor = NULL;
   vector_tool->sel_stroke = NULL;
 
-  if (!vector_tool->vectors)
+  if (! vector_tool->vectors)
     {
       vector_tool->cur_position = -1;
       vector_tool->cur_anchor   = NULL;
@@ -1832,10 +1851,10 @@
         }
     }
 
-  if (!cur_stroke_valid)
+  if (! cur_stroke_valid)
     vector_tool->cur_stroke = NULL;
 
-  if (!cur_anchor_valid)
+  if (! cur_anchor_valid)
     vector_tool->cur_anchor = NULL;
 
 }

Modified: branches/soc-2008-tagging/app/vectors/gimpbezierstroke.c
==============================================================================
--- branches/soc-2008-tagging/app/vectors/gimpbezierstroke.c	(original)
+++ branches/soc-2008-tagging/app/vectors/gimpbezierstroke.c	Sat Aug  2 19:50:36 2008
@@ -611,6 +611,7 @@
           if (dist < min_dist || min_dist < 0)
             {
               min_dist = dist;
+
               if (ret_pos)
                 *ret_pos = pos;
               if (ret_point)
@@ -620,6 +621,7 @@
               if (ret_segment_end)
                 *ret_segment_end = segment_end;
             }
+
           segment_start = anchorlist->data;
           segmentcoords[0] = segmentcoords[3];
           count = 1;
@@ -635,7 +637,9 @@
           segmentcoords[count] = GIMP_ANCHOR (anchorlist->data)->position;
           count++;
         }
+
       anchorlist = g_list_next (anchorlist);
+
       if (anchorlist)
         {
           segment_end = GIMP_ANCHOR (anchorlist->data);
@@ -650,6 +654,7 @@
       if (dist < min_dist || min_dist < 0)
         {
           min_dist = dist;
+
           if (ret_pos)
             *ret_pos = pos;
           if (ret_point)
@@ -716,7 +721,8 @@
       for (i = 0; i <= 15; i++)
         {
           pos2 *= 0.5;
-          if (3*pos1*pos1*(1-pos1) + pos1*pos1*pos1 < scalar)
+
+          if (3 * pos1 * pos1 * (1-pos1) + pos1 * pos1 * pos1 < scalar)
             pos1 += pos2;
           else
             pos1 -= pos2;
@@ -837,6 +843,7 @@
           if (dist >= 0 && (dist < min_dist || min_dist < 0))
             {
               min_dist = dist;
+
               if (ret_pos)
                 *ret_pos = pos;
               if (nearest)
@@ -846,6 +853,7 @@
               if (ret_segment_end)
                 *ret_segment_end = segment_end;
             }
+
           segment_start = anchorlist->data;
           segmentcoords[0] = segmentcoords[3];
           count = 1;
@@ -861,7 +869,9 @@
           segmentcoords[count] = GIMP_ANCHOR (anchorlist->data)->position;
           count++;
         }
+
       anchorlist = g_list_next (anchorlist);
+
       if (anchorlist)
         {
           segment_end = GIMP_ANCHOR (anchorlist->data);
@@ -876,6 +886,7 @@
       if (dist >= 0 && (dist < min_dist || min_dist < 0))
         {
           min_dist = dist;
+
           if (ret_pos)
             *ret_pos = pos;
           if (nearest)
@@ -1536,6 +1547,7 @@
   bezdesc->status = CAIRO_STATUS_SUCCESS;
   bezdesc->data = (cairo_path_data_t *) cmd_array->data;
   bezdesc->num_data = cmd_array->len;
+
   g_array_free (points, TRUE);
   g_array_free (cmd_array, FALSE);
 
@@ -1724,10 +1736,10 @@
 
   while (dt >= 0.00001)
     {
-      pt0 = (  y[0]*(1-t0)*(1-t0)*(1-t0) +
-             3*y[1]*(1-t0)*(1-t0)*t0 +
-             3*y[2]*(1-t0)*t0*t0 +
-               y[3]*t0*t0*t0 );
+      pt0 = (    y[0] * (1-t0) * (1-t0) * (1-t0) +
+             3 * y[1] * (1-t0) * (1-t0) * t0     +
+             3 * y[2] * (1-t0) * t0     * t0     +
+                 y[3] * t0     * t0     * t0 );
 
       if (pt0 > h)
         t0 = t0 - dt;
@@ -1787,12 +1799,13 @@
                       gdouble     phi1,
                       GimpCoords *ellips)
 {
-  gdouble       phi_s, phi_e;
-  GimpCoords    template    = GIMP_COORDS_DEFAULT_VALUES;
-  const gdouble circlemagic = 4.0 * (G_SQRT2 - 1.0) / 3.0;
-  gdouble       y[4];
-  gdouble       h0, h1;
-  gdouble       t0, t1;
+  const GimpCoords  template    = GIMP_COORDS_DEFAULT_VALUES;
+  const gdouble     circlemagic = 4.0 * (G_SQRT2 - 1.0) / 3.0;
+
+  gdouble  phi_s, phi_e;
+  gdouble  y[4];
+  gdouble  h0, h1;
+  gdouble  t0, t1;
 
   g_return_if_fail (ellips != NULL);
 
@@ -1824,10 +1837,9 @@
 
   ellips[0].x = cos (phi_s); ellips[0].y = sin (phi_s);
   ellips[3].x = cos (phi_e); ellips[3].y = sin (phi_e);
-  gimp_coords_mix (1, &(ellips[0]), circlemagic, &(ellips[3]),
-                   &(ellips[1]));
-  gimp_coords_mix (circlemagic, &(ellips[0]), 1, &(ellips[3]),
-                   &(ellips[2]));
+
+  gimp_coords_mix (1, &(ellips[0]), circlemagic, &(ellips[3]), &(ellips[1]));
+  gimp_coords_mix (circlemagic, &(ellips[0]), 1, &(ellips[3]), &(ellips[2]));
 
   if (h0 > y[0])
     {

Modified: branches/soc-2008-tagging/app/vectors/gimpvectors.c
==============================================================================
--- branches/soc-2008-tagging/app/vectors/gimpvectors.c	(original)
+++ branches/soc-2008-tagging/app/vectors/gimpvectors.c	Sat Aug  2 19:50:36 2008
@@ -522,6 +522,7 @@
 
         retval = gimp_paint_core_stroke_vectors (core, drawable,
                                                  stroke_desc->paint_options,
+                                                 stroke_desc->emulate_dynamics,
                                                  vectors, error);
 
         g_object_unref (core);

Modified: branches/soc-2008-tagging/app/widgets/gimpaction.c
==============================================================================
--- branches/soc-2008-tagging/app/widgets/gimpaction.c	(original)
+++ branches/soc-2008-tagging/app/widgets/gimpaction.c	Sat Aug  2 19:50:36 2008
@@ -177,15 +177,19 @@
     case PROP_CONTEXT:
       g_value_set_object (value, action->context);
       break;
+
     case PROP_COLOR:
       g_value_set_boxed (value, action->color);
       break;
+
     case PROP_VIEWABLE:
       g_value_set_object (value, action->viewable);
       break;
+
     case PROP_ELLIPSIZE:
       g_value_set_enum (value, action->ellipsize);
       break;
+
     case PROP_MAX_WIDTH_CHARS:
       g_value_set_int (value, action->max_width_chars);
       break;
@@ -210,24 +214,28 @@
     case PROP_CONTEXT:
       if (action->context)
         g_object_unref  (action->context);
-      action->context = GIMP_CONTEXT (g_value_dup_object (value));
+      action->context = g_value_dup_object (value);
       break;
+
     case PROP_COLOR:
       if (action->color)
         g_free (action->color);
       action->color = g_value_dup_boxed (value);
       set_proxy = TRUE;
       break;
+
     case PROP_VIEWABLE:
       if (action->viewable)
         g_object_unref  (action->viewable);
-      action->viewable = GIMP_VIEWABLE (g_value_dup_object (value));
+      action->viewable = g_value_dup_object (value);
       set_proxy = TRUE;
       break;
+
     case PROP_ELLIPSIZE:
       action->ellipsize = g_value_get_enum (value);
       set_proxy = TRUE;
       break;
+
     case PROP_MAX_WIDTH_CHARS:
       action->max_width_chars = g_value_get_int (value);
       set_proxy = TRUE;

Modified: branches/soc-2008-tagging/app/widgets/gimpcellrendererviewable.c
==============================================================================
--- branches/soc-2008-tagging/app/widgets/gimpcellrendererviewable.c	(original)
+++ branches/soc-2008-tagging/app/widgets/gimpcellrendererviewable.c	Sat Aug  2 19:50:36 2008
@@ -174,11 +174,11 @@
     {
     case PROP_RENDERER:
       {
-        GimpViewRenderer *renderer;
+        GimpViewRenderer *renderer = g_value_dup_object (value);
 
-        renderer = (GimpViewRenderer *) g_value_dup_object (value);
         if (cell->renderer)
           g_object_unref (cell->renderer);
+
         cell->renderer = renderer;
       }
       break;

Modified: branches/soc-2008-tagging/app/widgets/gimpcontrollereditor.c
==============================================================================
--- branches/soc-2008-tagging/app/widgets/gimpcontrollereditor.c	(original)
+++ branches/soc-2008-tagging/app/widgets/gimpcontrollereditor.c	Sat Aug  2 19:50:36 2008
@@ -410,11 +410,11 @@
   switch (property_id)
     {
     case PROP_CONTROLLER_INFO:
-      editor->info = GIMP_CONTROLLER_INFO (g_value_dup_object (value));
+      editor->info = g_value_dup_object (value);
       break;
 
     case PROP_CONTEXT:
-      editor->context = GIMP_CONTEXT (g_value_dup_object (value));
+      editor->context = g_value_dup_object (value);
       break;
 
     default:

Modified: branches/soc-2008-tagging/app/widgets/gimpcontrollerinfo.c
==============================================================================
--- branches/soc-2008-tagging/app/widgets/gimpcontrollerinfo.c	(original)
+++ branches/soc-2008-tagging/app/widgets/gimpcontrollerinfo.c	Sat Aug  2 19:50:36 2008
@@ -199,17 +199,20 @@
           g_object_unref (info->controller);
         }
 
-      info->controller = GIMP_CONTROLLER (g_value_dup_object (value));
+      info->controller = g_value_dup_object (value);
 
       if (info->controller)
         {
+          GimpControllerClass *controller_class;
+
           g_signal_connect_object (info->controller, "event",
                                    G_CALLBACK (gimp_controller_info_event),
                                    G_OBJECT (info),
                                    0);
 
+          controller_class = GIMP_CONTROLLER_GET_CLASS (info->controller);
           gimp_viewable_set_stock_id (GIMP_VIEWABLE (info),
-                                      GIMP_CONTROLLER_GET_CLASS (info->controller)->stock_id);
+                                      controller_class->stock_id);
         }
       break;
     case PROP_MAPPING:

Modified: branches/soc-2008-tagging/app/widgets/gimpcontrollerlist.c
==============================================================================
--- branches/soc-2008-tagging/app/widgets/gimpcontrollerlist.c	(original)
+++ branches/soc-2008-tagging/app/widgets/gimpcontrollerlist.c	Sat Aug  2 19:50:36 2008
@@ -348,8 +348,9 @@
   switch (property_id)
     {
     case PROP_GIMP:
-      list->gimp = GIMP (g_value_dup_object (value));
+      list->gimp = g_value_dup_object (value);
       break;
+
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
       break;
@@ -369,6 +370,7 @@
     case PROP_GIMP:
       g_value_set_object (value, list->gimp);
       break;
+
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
       break;

Modified: branches/soc-2008-tagging/app/widgets/gimpdasheditor.c
==============================================================================
--- branches/soc-2008-tagging/app/widgets/gimpdasheditor.c	(original)
+++ branches/soc-2008-tagging/app/widgets/gimpdasheditor.c	Sat Aug  2 19:50:36 2008
@@ -170,7 +170,7 @@
     case PROP_STROKE_OPTIONS:
       g_return_if_fail (editor->stroke_options == NULL);
 
-      editor->stroke_options = GIMP_STROKE_OPTIONS (g_value_dup_object (value));
+      editor->stroke_options = g_value_dup_object (value);
       g_signal_connect_object (editor->stroke_options, "notify::dash-info",
                                G_CALLBACK (update_segments_from_options),
                                editor, G_CONNECT_SWAPPED);

Modified: branches/soc-2008-tagging/app/widgets/gimpdock.c
==============================================================================
--- branches/soc-2008-tagging/app/widgets/gimpdock.c	(original)
+++ branches/soc-2008-tagging/app/widgets/gimpdock.c	Sat Aug  2 19:50:36 2008
@@ -225,11 +225,13 @@
   switch (property_id)
     {
     case PROP_CONTEXT:
-      dock->context = GIMP_CONTEXT (g_value_dup_object (value));
+      dock->context = g_value_dup_object (value);
       break;
+
     case PROP_DIALOG_FACTORY:
       dock->dialog_factory = g_value_get_object (value);
       break;
+
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
       break;
@@ -249,9 +251,11 @@
     case PROP_CONTEXT:
       g_value_set_object (value, dock->context);
       break;
+
     case PROP_DIALOG_FACTORY:
       g_value_set_object (value, dock->dialog_factory);
       break;
+
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
       break;

Modified: branches/soc-2008-tagging/app/widgets/gimpeditor.c
==============================================================================
--- branches/soc-2008-tagging/app/widgets/gimpeditor.c	(original)
+++ branches/soc-2008-tagging/app/widgets/gimpeditor.c	Sat Aug  2 19:50:36 2008
@@ -246,23 +246,29 @@
   switch (property_id)
     {
     case PROP_MENU_FACTORY:
-      editor->menu_factory = (GimpMenuFactory *) g_value_dup_object (value);
+      editor->menu_factory = g_value_dup_object (value);
       break;
+
     case PROP_MENU_IDENTIFIER:
       editor->menu_identifier = g_value_dup_string (value);
       break;
+
     case PROP_UI_PATH:
       editor->ui_path = g_value_dup_string (value);
       break;
+
     case PROP_POPUP_DATA:
       editor->popup_data = g_value_get_pointer (value);
       break;
+
     case PROP_SHOW_NAME:
       g_object_set_property (G_OBJECT (editor->name_label), "visible", value);
       break;
+
     case PROP_NAME:
       gimp_editor_set_name (editor, g_value_get_string (value));
       break;
+
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
       break;
@@ -282,18 +288,23 @@
     case PROP_MENU_FACTORY:
       g_value_set_object (value, editor->menu_factory);
       break;
+
     case PROP_MENU_IDENTIFIER:
       g_value_set_string (value, editor->menu_identifier);
       break;
+
     case PROP_UI_PATH:
       g_value_set_string (value, editor->ui_path);
       break;
+
     case PROP_POPUP_DATA:
       g_value_set_pointer (value, editor->popup_data);
       break;
+
     case PROP_SHOW_NAME:
       g_object_get_property (G_OBJECT (editor->name_label), "visible", value);
       break;
+
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
       break;

Modified: branches/soc-2008-tagging/app/widgets/gimpgrideditor.c
==============================================================================
--- branches/soc-2008-tagging/app/widgets/gimpgrideditor.c	(original)
+++ branches/soc-2008-tagging/app/widgets/gimpgrideditor.c	Sat Aug  2 19:50:36 2008
@@ -126,17 +126,21 @@
   switch (property_id)
     {
     case PROP_GRID:
-      editor->grid = GIMP_GRID (g_value_dup_object (value));
+      editor->grid = g_value_dup_object (value);
       break;
+
     case PROP_CONTEXT:
-      editor->context = GIMP_CONTEXT (g_value_dup_object (value));
+      editor->context = g_value_dup_object (value);
       break;
+
     case PROP_XRESOLUTION:
       editor->xresolution = g_value_get_double (value);
       break;
+
     case PROP_YRESOLUTION:
       editor->yresolution = g_value_get_double (value);
       break;
+
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
       break;
@@ -156,15 +160,19 @@
     case PROP_GRID:
       g_value_set_object (value, editor->grid);
       break;
+
     case PROP_CONTEXT:
       g_value_set_object (value, editor->context);
       break;
+
     case PROP_XRESOLUTION:
       g_value_set_double (value, editor->xresolution);
       break;
+
     case PROP_YRESOLUTION:
       g_value_set_double (value, editor->yresolution);
       break;
+
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
       break;

Modified: branches/soc-2008-tagging/app/widgets/gimphistogrameditor.c
==============================================================================
--- branches/soc-2008-tagging/app/widgets/gimphistogrameditor.c	(original)
+++ branches/soc-2008-tagging/app/widgets/gimphistogrameditor.c	Sat Aug  2 19:50:36 2008
@@ -77,7 +77,7 @@
 
 
 static void
-gimp_histogram_editor_class_init (GimpHistogramEditorClass* klass)
+gimp_histogram_editor_class_init (GimpHistogramEditorClass *klass)
 {
   GimpImageEditorClass *image_editor_class = GIMP_IMAGE_EDITOR_CLASS (klass);
 
@@ -365,6 +365,24 @@
   gimp_histogram_editor_name_update (editor);
 }
 
+static gboolean
+gimp_histogram_editor_validate (GimpHistogramEditor *editor)
+{
+  if (! editor->valid && editor->histogram)
+    {
+      if (editor->drawable)
+        gimp_drawable_calculate_histogram (editor->drawable, editor->histogram);
+      else
+        gimp_histogram_calculate (editor->histogram, NULL, NULL);
+
+      gimp_histogram_editor_info_update (editor);
+
+      editor->valid = TRUE;
+    }
+
+  return editor->valid;
+}
+
 static void
 gimp_histogram_editor_frozen_update (GimpHistogramEditor *editor,
                                      const GParamSpec    *pspec)
@@ -375,10 +393,8 @@
     {
       if (! editor->bg_histogram)
         {
-          editor->bg_histogram = gimp_histogram_new ();
-
-          gimp_drawable_calculate_histogram (editor->drawable,
-                                             editor->bg_histogram);
+          if (gimp_histogram_editor_validate (editor))
+            editor->bg_histogram = gimp_histogram_duplicate (editor->histogram);
 
           gimp_histogram_view_set_background (view, editor->bg_histogram);
         }
@@ -538,17 +554,7 @@
 static gboolean
 gimp_histogram_view_expose (GimpHistogramEditor *editor)
 {
-  if (! editor->valid && editor->histogram)
-    {
-      if (editor->drawable)
-        gimp_drawable_calculate_histogram (editor->drawable, editor->histogram);
-      else
-        gimp_histogram_calculate (editor->histogram, NULL, NULL);
-
-      editor->valid = TRUE;
-
-      gimp_histogram_editor_info_update (editor);
-    }
+  gimp_histogram_editor_validate (editor);
 
   return FALSE;
 }

Modified: branches/soc-2008-tagging/app/widgets/gimphistogramview.c
==============================================================================
--- branches/soc-2008-tagging/app/widgets/gimphistogramview.c	(original)
+++ branches/soc-2008-tagging/app/widgets/gimphistogramview.c	Sat Aug  2 19:50:36 2008
@@ -632,7 +632,7 @@
   if (view->bg_histogram != histogram)
     {
       if (view->bg_histogram)
-        gimp_histogram_ref (view->bg_histogram);
+        gimp_histogram_unref (view->bg_histogram);
 
       view->bg_histogram = histogram;
 

Modified: branches/soc-2008-tagging/app/widgets/gimppdbdialog.c
==============================================================================
--- branches/soc-2008-tagging/app/widgets/gimppdbdialog.c	(original)
+++ branches/soc-2008-tagging/app/widgets/gimppdbdialog.c	Sat Aug  2 19:50:36 2008
@@ -242,11 +242,11 @@
   switch (property_id)
     {
     case PROP_PDB:
-      dialog->pdb = GIMP_PDB (g_value_dup_object (value));
+      dialog->pdb = g_value_dup_object (value);
       break;
 
     case PROP_CONTEXT:
-      dialog->caller_context = GIMP_CONTEXT (g_value_dup_object (value));
+      dialog->caller_context = g_value_dup_object (value);
       break;
 
     case PROP_SELECT_TYPE:
@@ -265,7 +265,7 @@
       break;
 
     case PROP_MENU_FACTORY:
-      dialog->menu_factory = (GimpMenuFactory *) g_value_dup_object (value);
+      dialog->menu_factory = g_value_dup_object (value);
       break;
 
     default:

Modified: branches/soc-2008-tagging/app/widgets/gimppluginaction.c
==============================================================================
--- branches/soc-2008-tagging/app/widgets/gimppluginaction.c	(original)
+++ branches/soc-2008-tagging/app/widgets/gimppluginaction.c	Sat Aug  2 19:50:36 2008
@@ -150,7 +150,7 @@
     case PROP_PROCEDURE:
       if (action->procedure)
         g_object_unref (action->procedure);
-      action->procedure = GIMP_PLUG_IN_PROCEDURE (g_value_dup_object (value));
+      action->procedure = g_value_dup_object (value);
       break;
 
     default:

Modified: branches/soc-2008-tagging/app/widgets/gimpsessioninfo-aux.c
==============================================================================
--- branches/soc-2008-tagging/app/widgets/gimpsessioninfo-aux.c	(original)
+++ branches/soc-2008-tagging/app/widgets/gimpsessioninfo-aux.c	Sat Aug  2 19:50:36 2008
@@ -100,6 +100,7 @@
             }
 
           g_value_unset (&value);
+          g_string_free (str, TRUE);
         }
       else
         {

Modified: branches/soc-2008-tagging/app/widgets/gimpsessioninfo.c
==============================================================================
--- branches/soc-2008-tagging/app/widgets/gimpsessioninfo.c	(original)
+++ branches/soc-2008-tagging/app/widgets/gimpsessioninfo.c	Sat Aug  2 19:50:36 2008
@@ -477,13 +477,21 @@
 
   if (info->widget->window)
     {
-      gdk_window_get_root_origin (info->widget->window, &info->x, &info->y);
+      gint x, y;
+
+      gdk_window_get_root_origin (info->widget->window, &x, &y);
+
+      /* Don't write negative values to the sessionrc, they are
+       * interpreted as relative to the right, respective bottom edge
+       * of the screen.
+       */
+      info->x = MAX (0, x);
+      info->y = MAX (0, y);
 
       if (! info->toplevel_entry || info->toplevel_entry->remember_size)
         {
           gdk_drawable_get_size (GDK_DRAWABLE (info->widget->window),
-                                 &info->width,
-                                 &info->height);
+                                 &info->width, &info->height);
         }
       else
         {

Modified: branches/soc-2008-tagging/app/widgets/gimpstrokeeditor.c
==============================================================================
--- branches/soc-2008-tagging/app/widgets/gimpstrokeeditor.c	(original)
+++ branches/soc-2008-tagging/app/widgets/gimpstrokeeditor.c	Sat Aug  2 19:50:36 2008
@@ -113,7 +113,7 @@
     case PROP_OPTIONS:
       if (editor->options)
         g_object_unref (editor->options);
-      editor->options = GIMP_STROKE_OPTIONS (g_value_dup_object (value));
+      editor->options = g_value_dup_object (value);
       break;
 
     case PROP_RESOLUTION:

Modified: branches/soc-2008-tagging/app/widgets/gimptemplateeditor.c
==============================================================================
--- branches/soc-2008-tagging/app/widgets/gimptemplateeditor.c	(original)
+++ branches/soc-2008-tagging/app/widgets/gimptemplateeditor.c	Sat Aug  2 19:50:36 2008
@@ -437,8 +437,9 @@
   switch (property_id)
     {
     case PROP_TEMPLATE:
-      editor->template = GIMP_TEMPLATE (g_value_dup_object (value));
+      editor->template = g_value_dup_object (value);
       break;
+
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
       break;
@@ -458,6 +459,7 @@
     case PROP_TEMPLATE:
       g_value_set_object (value, editor->template);
       break;
+
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
       break;

Modified: branches/soc-2008-tagging/app/widgets/gimpviewrendererimagefile.c
==============================================================================
--- branches/soc-2008-tagging/app/widgets/gimpviewrendererimagefile.c	(original)
+++ branches/soc-2008-tagging/app/widgets/gimpviewrendererimagefile.c	Sat Aug  2 19:50:36 2008
@@ -169,18 +169,24 @@
     {
       GFile       *file;
       GFileInfo   *file_info;
-      GIcon       *icon;
       GtkIconInfo *info;
 
       file = g_file_new_for_uri (gimp_object_get_name (GIMP_OBJECT (imagefile)));
       file_info = g_file_query_info (file, "standard::icon", 0, NULL, NULL);
-      icon = g_file_info_get_icon (file_info);
 
-      info = gtk_icon_theme_lookup_by_gicon (icon_theme, icon, size, 0);
-      pixbuf = gtk_icon_info_load_icon (info, NULL);
+      if (file_info)
+        {
+          GIcon *icon;
+
+          icon = g_file_info_get_icon (file_info);
+
+          info = gtk_icon_theme_lookup_by_gicon (icon_theme, icon, size, 0);
+          pixbuf = gtk_icon_info_load_icon (info, NULL);
+
+          g_object_unref (file_info);
+        }
 
       g_object_unref (file);
-      g_object_unref (file_info);
     }
 #endif
 

Modified: branches/soc-2008-tagging/app/widgets/gtkscalebutton.c
==============================================================================
--- branches/soc-2008-tagging/app/widgets/gtkscalebutton.c	(original)
+++ branches/soc-2008-tagging/app/widgets/gtkscalebutton.c	Sat Aug  2 19:50:36 2008
@@ -1294,6 +1294,10 @@
  * Scale stuff.
  */
 
+static GType gtk_scale_button_hscale_get_type (void) G_GNUC_CONST;
+static GType gtk_scale_button_vscale_get_type (void) G_GNUC_CONST;
+
+
 #define GTK_TYPE_SCALE_BUTTON_VSCALE    (gtk_scale_button_vscale_get_type ())
 #define GTK_SCALE_BUTTON_VSCALE(obj)    (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_SCALE_BUTTON_VSCALE, GtkScaleButtonVScale))
 #define GTK_IS_SCALE_BUTTON_VSCALE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_SCALE_BUTTON_VSCALE))

Modified: branches/soc-2008-tagging/configure.in
==============================================================================
--- branches/soc-2008-tagging/configure.in	(original)
+++ branches/soc-2008-tagging/configure.in	Sat Aug  2 19:50:36 2008
@@ -401,10 +401,10 @@
 # Internationalisation
 ######################
 
-# Note to translators: you MUST have .po files in all 5 directories: po,
-# po-libgimp, po-plug-ins, po-python and po-script-fu before adding your
-# language code to ALL_LINGUAS.
-ALL_LINGUAS="ar bg ca ca valencia cs da de dz el en_CA en_GB eo es et eu fa fi fr ga gl gu he hu hr id is it ja km ko lt mk ms nb ne nl nn oc pa pl pt pt_BR ro ru rw sk sl sr sr Latn sv tr tt uk vi xh yi zh_CN zh_TW"
+# Note to translators: you MUST have .po files in all 6 directories:
+# po, po-libgimp, po-plug-ins, po-python, po-script-fu and po-tips
+# before adding your language code to ALL_LINGUAS.
+ALL_LINGUAS="ar be bg ca ca valencia cs da de dz el en_CA en_GB eo es et eu fa fi fr ga gl gu he hu hr id is it ja km ko lt mk ms nb ne nl nn oc pa pl pt pt_BR ro ru rw sk sl sr sr Latn sv tr tt uk vi xh yi zh_CN zh_TW"
 
 IT_PROG_INTLTOOL(0.35.5)
 AM_GLIB_GNU_GETTEXT
@@ -1319,8 +1319,6 @@
 AM_CONDITIONAL(HAVE_GVFS, test "x$with_gvfs" != xno)
 
 
-gnome_vfs_modules="gnome-vfs-2.0 >= gnome_vfs_required_version"
-
 AC_ARG_WITH(gnomevfs, [  --without-gnomevfs      build without gnomevfs support])
 
 have_gnomeui="no (disabled)"
@@ -1329,6 +1327,8 @@
 
 if test "x$with_gnomevfs" != xno; then
 
+gnome_vfs_modules="gnome-vfs-2.0 >= gnome_vfs_required_version"
+
 if $PKG_CONFIG --atleast-version=gnomeui_required_version libgnomeui-2.0; then
   have_gnomeui=yes
   gnome_vfs_modules="$gnome_vfs_modules libgnomeui-2.0"
@@ -1343,7 +1343,7 @@
   have_gnome_keyring="no (gnome-keyring-1 not found)"
 fi
 
-PKG_CHECK_MODULES(URI_GNOME_VFS, $gnome_vfs_modules,
+PKG_CHECK_MODULES(GNOME_VFS, $gnome_vfs_modules,
   have_gnomevfs=yes,
   have_gnomevfs="no (gnome-vfs-2.0 not found)")
 
@@ -1352,15 +1352,13 @@
 AM_CONDITIONAL(HAVE_GNOMEVFS, test "x$have_gnomevfs" = xyes)
 
 
-libcurl_modules="libcurl >= libcurl_required_version"
-
 AC_ARG_WITH(libcurl,  [  --without-libcurl       build without curl support])
 
 have_libcurl="no (disabled)"
 
 if test "x$with_libcurl" != xno; then
 
-PKG_CHECK_MODULES(URI_LIBCURL, $libcurl_modules,
+PKG_CHECK_MODULES(CURL, libcurl >= libcurl_required_version,
   have_libcurl=yes,
   have_libcurl="no (libcurl not found)")
 

Modified: branches/soc-2008-tagging/data/images/gimp-splash.png
==============================================================================
Binary files. No diff available.

Modified: branches/soc-2008-tagging/devel-docs/libgimp/libgimp-sections.txt
==============================================================================
--- branches/soc-2008-tagging/devel-docs/libgimp/libgimp-sections.txt	(original)
+++ branches/soc-2008-tagging/devel-docs/libgimp/libgimp-sections.txt	Sat Aug  2 19:50:36 2008
@@ -931,6 +931,7 @@
 <FILE>gimpvectors</FILE>
 gimp_vectors_new
 gimp_vectors_new_from_text_layer
+gimp_vectors_copy
 gimp_vectors_is_valid
 gimp_vectors_get_strokes
 gimp_vectors_get_image

Modified: branches/soc-2008-tagging/devel-docs/libgimp/tmpl/gimpvectors.sgml
==============================================================================
--- branches/soc-2008-tagging/devel-docs/libgimp/tmpl/gimpvectors.sgml	(original)
+++ branches/soc-2008-tagging/devel-docs/libgimp/tmpl/gimpvectors.sgml	Sat Aug  2 19:50:36 2008
@@ -37,6 +37,15 @@
 @Returns: 
 
 
+<!-- ##### FUNCTION gimp_vectors_copy ##### -->
+<para>
+
+</para>
+
+ vectors_ID: 
+ Returns: 
+
+
 <!-- ##### FUNCTION gimp_vectors_is_valid ##### -->
 <para>
 

Modified: branches/soc-2008-tagging/devel-docs/tools/widgets.c
==============================================================================
--- branches/soc-2008-tagging/devel-docs/tools/widgets.c	(original)
+++ branches/soc-2008-tagging/devel-docs/tools/widgets.c	Sat Aug  2 19:50:36 2008
@@ -168,7 +168,7 @@
   gtk_box_pack_start (GTK_BOX (GIMP_BROWSER (browser)->left_vbox),
                       gtk_label_new ("TreeView goes here"), TRUE, TRUE, 0);
   gtk_container_add (GTK_CONTAINER (align), browser);
-  gtk_box_pack_start_defaults (GTK_BOX (vbox), align);
+  gtk_box_pack_start (GTK_BOX (vbox), align, TRUE, TRUE, 0);
   gtk_box_pack_start (GTK_BOX (vbox),
                       gtk_label_new ("Browser"), FALSE, FALSE, 0);
 
@@ -202,7 +202,7 @@
 
   vbox = gtk_vbox_new (FALSE, 6);
   align = gtk_alignment_new (0.5, 0.5, 0.0, 0.8);
-  gtk_box_pack_start_defaults (GTK_BOX (vbox), align);
+  gtk_box_pack_start (GTK_BOX (vbox), align, TRUE, TRUE, 0);
   table = gtk_table_new (2, 5, FALSE);
   gtk_table_set_row_spacings (GTK_TABLE (table), 6);
   gtk_table_set_col_spacings (GTK_TABLE (table), 6);
@@ -231,7 +231,8 @@
   gtk_table_attach (GTK_TABLE (table), chain, 4,5, 0,2,
                     GTK_SHRINK | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
 
-  gtk_box_pack_end_defaults (GTK_BOX (vbox), gtk_label_new ("Chain Button"));
+  gtk_box_pack_end (GTK_BOX (vbox), gtk_label_new ("Chain Button"),
+                    TRUE, TRUE, 0);
 
   return new_widget_info ("gimp-chain-button", vbox, MEDIUM);
 }
@@ -252,7 +253,7 @@
   gimp_color_area_set_draw_border (GIMP_COLOR_AREA (area), TRUE);
   gtk_widget_set_size_request (area, -1, 25);
   gtk_container_add (GTK_CONTAINER (align), area);
-  gtk_box_pack_start_defaults (GTK_BOX (vbox), align);
+  gtk_box_pack_start (GTK_BOX (vbox), align, TRUE, TRUE, 0);
   gtk_box_pack_start (GTK_BOX (vbox),
                       gtk_label_new ("Color Area"), FALSE, FALSE, 0);
 
@@ -275,7 +276,7 @@
                                    80, 20, &color,
                                    GIMP_COLOR_AREA_SMALL_CHECKS);
   gtk_container_add (GTK_CONTAINER (align), button);
-  gtk_box_pack_start_defaults (GTK_BOX (vbox), align);
+  gtk_box_pack_start (GTK_BOX (vbox), align, TRUE, TRUE, 0);
   gtk_box_pack_start (GTK_BOX (vbox),
                       gtk_label_new ("Color Button"), FALSE, FALSE, 0);
 
@@ -297,7 +298,7 @@
   entry = gimp_color_hex_entry_new ();
   gimp_color_hex_entry_set_color (GIMP_COLOR_HEX_ENTRY (entry), &color);
   gtk_container_add (GTK_CONTAINER (align), entry);
-  gtk_box_pack_start_defaults (GTK_BOX (vbox), align);
+  gtk_box_pack_start (GTK_BOX (vbox), align, TRUE, TRUE, 0);
   gtk_box_pack_start (GTK_BOX (vbox),
                       gtk_label_new ("Color Hex Entry"), FALSE, FALSE, 0);
 
@@ -318,7 +319,7 @@
                                     NULL, "sRGB");
   gtk_combo_box_set_active (GTK_COMBO_BOX (combo), 0);
   gtk_container_add (GTK_CONTAINER (align), combo);
-  gtk_box_pack_start_defaults (GTK_BOX (vbox), align);
+  gtk_box_pack_start (GTK_BOX (vbox), align, TRUE, TRUE, 0);
   gtk_box_pack_start (GTK_BOX (vbox),
                       gtk_label_new ("Color Profile Combo Box"),
                       FALSE, FALSE, 0);
@@ -345,7 +346,7 @@
   gimp_color_scale_set_color (GIMP_COLOR_SCALE (scale), &rgb, &hsv);
   gtk_range_set_value (GTK_RANGE (scale), 40);
   gtk_container_add (GTK_CONTAINER (align), scale);
-  gtk_box_pack_start_defaults (GTK_BOX (vbox), align);
+  gtk_box_pack_start (GTK_BOX (vbox), align, TRUE, TRUE, 0);
   gtk_box_pack_start (GTK_BOX (vbox),
                       gtk_label_new ("Color Scale"), FALSE, FALSE, 0);
 
@@ -369,7 +370,7 @@
   gimp_color_selection_set_color  (GIMP_COLOR_SELECTION (selection), &color);
   gtk_widget_set_size_request (selection, 400, -1);
   gtk_container_add (GTK_CONTAINER (align), selection);
-  gtk_box_pack_start_defaults (GTK_BOX (vbox), align);
+  gtk_box_pack_start (GTK_BOX (vbox), align, TRUE, TRUE, 0);
   gtk_box_pack_start (GTK_BOX (vbox),
                       gtk_label_new ("Color Selection"), FALSE, FALSE, 0);
 
@@ -412,7 +413,7 @@
   combo = gimp_enum_combo_box_new (GIMP_TYPE_CHANNEL_TYPE);
   gimp_int_combo_box_set_active (GIMP_INT_COMBO_BOX (combo), GIMP_BLUE_CHANNEL);
   gtk_container_add (GTK_CONTAINER (align), combo);
-  gtk_box_pack_start_defaults (GTK_BOX (vbox), align);
+  gtk_box_pack_start (GTK_BOX (vbox), align, TRUE, TRUE, 0);
   gtk_box_pack_start (GTK_BOX (vbox),
                       gtk_label_new ("Enum Combo Box"), FALSE, FALSE, 0);
 
@@ -430,7 +431,7 @@
   align = gtk_alignment_new (0.5, 0.5, 0.5, 0.0);
   label = gimp_enum_label_new (GIMP_TYPE_IMAGE_BASE_TYPE, GIMP_RGB);
   gtk_container_add (GTK_CONTAINER (align), label);
-  gtk_box_pack_start_defaults (GTK_BOX (vbox), align);
+  gtk_box_pack_start (GTK_BOX (vbox), align, TRUE, TRUE, 0);
   gtk_box_pack_start (GTK_BOX (vbox),
                       gtk_label_new ("Enum Label"), FALSE, FALSE, 0);
 
@@ -450,7 +451,7 @@
                                "wilber.png",
                                FALSE, TRUE);
   gtk_container_add (GTK_CONTAINER (align), entry);
-  gtk_box_pack_start_defaults (GTK_BOX (vbox), align);
+  gtk_box_pack_start (GTK_BOX (vbox), align, TRUE, TRUE, 0);
   gtk_box_pack_start (GTK_BOX (vbox),
                       gtk_label_new ("File Entry"), FALSE, FALSE, 0);
 
@@ -491,7 +492,7 @@
   entry =  gimp_number_pair_entry_new (":/", TRUE, 0.001, GIMP_MAX_IMAGE_SIZE);
   gimp_number_pair_entry_set_values (GIMP_NUMBER_PAIR_ENTRY (entry), 4, 3);
   gtk_container_add (GTK_CONTAINER (align), entry);
-  gtk_box_pack_start_defaults (GTK_BOX (vbox), align);
+  gtk_box_pack_start (GTK_BOX (vbox), align, TRUE, TRUE, 0);
   gtk_box_pack_start (GTK_BOX (vbox),
                       gtk_label_new ("Number Pair Entry"), FALSE, FALSE, 0);
 
@@ -517,7 +518,7 @@
   gimp_int_combo_box_set_active (GIMP_INT_COMBO_BOX (combo), 1);
 
   gtk_container_add (GTK_CONTAINER (align), combo);
-  gtk_box_pack_start_defaults (GTK_BOX (vbox), align);
+  gtk_box_pack_start (GTK_BOX (vbox), align, TRUE, TRUE, 0);
   gtk_box_pack_start (GTK_BOX (vbox),
                       gtk_label_new ("Int Combo Box"), FALSE, FALSE, 0);
 
@@ -536,7 +537,7 @@
   entry = gimp_memsize_entry_new ((3 * 1024 + 512) * 1024,
                                   0, 1024 * 1024 * 1024);
   gtk_container_add (GTK_CONTAINER (align), entry);
-  gtk_box_pack_start_defaults (GTK_BOX (vbox), align);
+  gtk_box_pack_start (GTK_BOX (vbox), align, TRUE, TRUE, 0);
   gtk_box_pack_start (GTK_BOX (vbox),
                       gtk_label_new ("Memsize Entry"), FALSE, FALSE, 0);
 
@@ -560,7 +561,7 @@
   gimp_offset_area_set_size (GIMP_OFFSET_AREA (area), 180, 160);
   gimp_offset_area_set_offsets (GIMP_OFFSET_AREA (area), 30, 30);
   gtk_container_add (GTK_CONTAINER (frame), area);
-  gtk_box_pack_start_defaults (GTK_BOX (vbox), align);
+  gtk_box_pack_start (GTK_BOX (vbox), align, TRUE, TRUE, 0);
   gtk_box_pack_start (GTK_BOX (vbox),
                       gtk_label_new ("Offset Area"), FALSE, FALSE, 0);
 
@@ -579,7 +580,7 @@
   gimp_page_selector_set_n_pages (GIMP_PAGE_SELECTOR (selector), 16);
   gimp_page_selector_select_range (GIMP_PAGE_SELECTOR (selector),
                                    "1,3,7-9,12-15");
-  gtk_box_pack_start_defaults (GTK_BOX (vbox), selector);
+  gtk_box_pack_start (GTK_BOX (vbox), selector, TRUE, TRUE, 0);
   gtk_box_pack_start (GTK_BOX (vbox),
                       gtk_label_new ("Page Selector"), FALSE, FALSE, 0);
 
@@ -600,7 +601,7 @@
   editor = gimp_path_editor_new ("Path Editor", path);
   gtk_widget_set_size_request (editor, -1, 240);
   gtk_container_add (GTK_CONTAINER (align), editor);
-  gtk_box_pack_start_defaults (GTK_BOX (vbox), align);
+  gtk_box_pack_start (GTK_BOX (vbox), align, TRUE, TRUE, 0);
   gtk_box_pack_start (GTK_BOX (vbox),
                       gtk_label_new ("Path Editor"), FALSE, FALSE, 0);
 
@@ -621,7 +622,7 @@
   align = gtk_alignment_new (0.5, 0.5, 0.5, 1.0);
   button =  gimp_pick_button_new ();
   gtk_container_add (GTK_CONTAINER (align), button);
-  gtk_box_pack_start_defaults (GTK_BOX (vbox), align);
+  gtk_box_pack_start (GTK_BOX (vbox), align, TRUE, TRUE, 0);
   gtk_box_pack_start (GTK_BOX (vbox),
                       gtk_label_new ("Pick Button"), FALSE, FALSE, 0);
 
@@ -664,7 +665,7 @@
                                gdk_pixbuf_get_width (pixbuf),
                                gdk_pixbuf_get_height (pixbuf));
   g_object_unref (pixbuf);
-  gtk_box_pack_start_defaults (GTK_BOX (vbox), align);
+  gtk_box_pack_start (GTK_BOX (vbox), align, TRUE, TRUE, 0);
   gtk_box_pack_start (GTK_BOX (vbox),
                       gtk_label_new ("Preview Area"), FALSE, FALSE, 0);
 
@@ -689,7 +690,7 @@
   gimp_string_combo_box_set_active (GIMP_STRING_COMBO_BOX (combo), "Foo");
 
   gtk_container_add (GTK_CONTAINER (align), combo);
-  gtk_box_pack_start_defaults (GTK_BOX (vbox), align);
+  gtk_box_pack_start (GTK_BOX (vbox), align, TRUE, TRUE, 0);
   gtk_box_pack_start (GTK_BOX (vbox),
                       gtk_label_new ("String Combo Box"), FALSE, FALSE, 0);
 
@@ -707,7 +708,7 @@
   align = gtk_alignment_new (0.5, 0.5, 0.5, 0.0);
   menu =  gimp_unit_menu_new ("%p", GIMP_UNIT_MM, TRUE, FALSE, FALSE);
   gtk_container_add (GTK_CONTAINER (align), menu);
-  gtk_box_pack_start_defaults (GTK_BOX (vbox), align);
+  gtk_box_pack_start (GTK_BOX (vbox), align, TRUE, TRUE, 0);
   gtk_box_pack_start (GTK_BOX (vbox),
                       gtk_label_new ("Unit Menu"), FALSE, FALSE, 0);
 

Modified: branches/soc-2008-tagging/libgimp/gimp.def
==============================================================================
--- branches/soc-2008-tagging/libgimp/gimp.def	(original)
+++ branches/soc-2008-tagging/libgimp/gimp.def	Sat Aug  2 19:50:36 2008
@@ -657,6 +657,7 @@
 	gimp_vectors_bezier_stroke_lineto
 	gimp_vectors_bezier_stroke_new_ellipse
 	gimp_vectors_bezier_stroke_new_moveto
+        gimp_vectors_copy
 	gimp_vectors_export_to_file
 	gimp_vectors_export_to_string
 	gimp_vectors_get_image

Modified: branches/soc-2008-tagging/libgimp/gimpvectors_pdb.c
==============================================================================
--- branches/soc-2008-tagging/libgimp/gimpvectors_pdb.c	(original)
+++ branches/soc-2008-tagging/libgimp/gimpvectors_pdb.c	Sat Aug  2 19:50:36 2008
@@ -133,6 +133,39 @@
 }
 
 /**
+ * gimp_vectors_copy:
+ * @vectors_ID: The vectors object to copy.
+ *
+ * Copy a vectors object.
+ *
+ * This procedure copies the specified vectors object and returns the
+ * copy.
+ *
+ * Returns: The newly copied vectors object.
+ *
+ * Since: GIMP 2.6
+ */
+gint32
+gimp_vectors_copy (gint32 vectors_ID)
+{
+  GimpParam *return_vals;
+  gint nreturn_vals;
+  gint32 vectors_copy_ID = -1;
+
+  return_vals = gimp_run_procedure ("gimp-vectors-copy",
+                                    &nreturn_vals,
+                                    GIMP_PDB_VECTORS, vectors_ID,
+                                    GIMP_PDB_END);
+
+  if (return_vals[0].data.d_status == GIMP_PDB_SUCCESS)
+    vectors_copy_ID = return_vals[1].data.d_vectors;
+
+  gimp_destroy_params (return_vals, nreturn_vals);
+
+  return vectors_copy_ID;
+}
+
+/**
  * gimp_vectors_get_image:
  * @vectors_ID: The vectors object.
  *

Modified: branches/soc-2008-tagging/libgimp/gimpvectors_pdb.h
==============================================================================
--- branches/soc-2008-tagging/libgimp/gimpvectors_pdb.h	(original)
+++ branches/soc-2008-tagging/libgimp/gimpvectors_pdb.h	Sat Aug  2 19:50:36 2008
@@ -34,6 +34,7 @@
                                                               const gchar            *name);
 gint32                gimp_vectors_new_from_text_layer       (gint32                  image_ID,
                                                               gint32                  layer_ID);
+gint32                gimp_vectors_copy                      (gint32                  vectors_ID);
 gint32                gimp_vectors_get_image                 (gint32                  vectors_ID);
 gchar*                gimp_vectors_get_name                  (gint32                  vectors_ID);
 gboolean              gimp_vectors_set_name                  (gint32                  vectors_ID,

Modified: branches/soc-2008-tagging/libgimpwidgets/gimpcolorprofilecombobox.c
==============================================================================
--- branches/soc-2008-tagging/libgimpwidgets/gimpcolorprofilecombobox.c	(original)
+++ branches/soc-2008-tagging/libgimpwidgets/gimpcolorprofilecombobox.c	Sat Aug  2 19:50:36 2008
@@ -169,7 +169,7 @@
     {
     case PROP_DIALOG:
       g_return_if_fail (combo_box->dialog == NULL);
-      combo_box->dialog = (GtkWidget *) g_value_dup_object (value);
+      combo_box->dialog = g_value_dup_object (value);
       break;
 
     case PROP_MODEL:

Modified: branches/soc-2008-tagging/plug-ins/common/Makefile.am
==============================================================================
--- branches/soc-2008-tagging/plug-ins/common/Makefile.am	(original)
+++ branches/soc-2008-tagging/plug-ins/common/Makefile.am	Sat Aug  2 19:50:36 2008
@@ -138,7 +138,6 @@
 	$(POPPLER) \
 	postscript \
 	procedure-browser \
-	psd-save \
 	$(PSP) \
 	qbist \
 	raw \
@@ -1808,22 +1807,6 @@
 	$(RT_LIBS)		\
 	$(INTLLIBS)
 
-psd_save_SOURCES = \
-	psd-save.c
-
-psd_save_LDADD = \
-	$(libgimpui)		\
-	$(libgimpwidgets)	\
-	$(libgimpmodule)	\
-	$(libgimp)		\
-	$(libgimpmath)		\
-	$(libgimpconfig)	\
-	$(libgimpcolor)		\
-	$(libgimpbase)		\
-	$(GTK_LIBS)		\
-	$(RT_LIBS)		\
-	$(INTLLIBS)
-
 psp_SOURCES = \
 	psp.c
 

Modified: branches/soc-2008-tagging/plug-ins/common/alien-map.c
==============================================================================
--- branches/soc-2008-tagging/plug-ins/common/alien-map.c	(original)
+++ branches/soc-2008-tagging/plug-ins/common/alien-map.c	Sat Aug  2 19:50:36 2008
@@ -412,8 +412,9 @@
   gtk_widget_show (main_vbox);
 
   preview = gimp_zoom_preview_new (drawable);
-  gtk_box_pack_start_defaults (GTK_BOX (main_vbox), preview);
+  gtk_box_pack_start (GTK_BOX (main_vbox), preview, TRUE, TRUE, 0);
   gtk_widget_show (preview);
+
   g_signal_connect_swapped (preview, "invalidated",
                             G_CALLBACK (dialog_update_preview),
                             drawable);

Modified: branches/soc-2008-tagging/plug-ins/common/blinds.c
==============================================================================
--- branches/soc-2008-tagging/plug-ins/common/blinds.c	(original)
+++ branches/soc-2008-tagging/plug-ins/common/blinds.c	Sat Aug  2 19:50:36 2008
@@ -245,8 +245,9 @@
   gtk_widget_show (main_vbox);
 
   preview = gimp_aspect_preview_new (drawable, NULL);
-  gtk_box_pack_start_defaults (GTK_BOX (main_vbox), preview);
+  gtk_box_pack_start (GTK_BOX (main_vbox), preview, TRUE, TRUE, 0);
   gtk_widget_show (preview);
+
   g_signal_connect_swapped (preview, "invalidated",
                             G_CALLBACK (dialog_update_preview),
                             drawable);

Modified: branches/soc-2008-tagging/plug-ins/common/channel-mixer.c
==============================================================================
--- branches/soc-2008-tagging/plug-ins/common/channel-mixer.c	(original)
+++ branches/soc-2008-tagging/plug-ins/common/channel-mixer.c	Sat Aug  2 19:50:36 2008
@@ -511,8 +511,9 @@
   gtk_widget_show (main_vbox);
 
   preview = gimp_zoom_preview_new (drawable);
-  gtk_box_pack_start_defaults (GTK_BOX (main_vbox), preview);
+  gtk_box_pack_start (GTK_BOX (main_vbox), preview, TRUE, TRUE, 0);
   gtk_widget_show (preview);
+
   g_signal_connect_swapped (preview, "invalidated",
                             G_CALLBACK (cm_preview),
                             mix);

Modified: branches/soc-2008-tagging/plug-ins/common/color-exchange.c
==============================================================================
--- branches/soc-2008-tagging/plug-ins/common/color-exchange.c	(original)
+++ branches/soc-2008-tagging/plug-ins/common/color-exchange.c	Sat Aug  2 19:50:36 2008
@@ -307,7 +307,7 @@
   gtk_widget_show (main_vbox);
 
   frame = gimp_frame_new (_("Middle-Click Inside Preview to Pick \"From Color\""));
-  gtk_box_pack_start_defaults (GTK_BOX (main_vbox), frame);
+  gtk_box_pack_start (GTK_BOX (main_vbox), frame, TRUE, TRUE, 0);
   gtk_widget_show (frame);
 
   preview = gimp_drawable_preview_new (drawable, NULL);

Modified: branches/soc-2008-tagging/plug-ins/common/color-to-alpha.c
==============================================================================
--- branches/soc-2008-tagging/plug-ins/common/color-to-alpha.c	(original)
+++ branches/soc-2008-tagging/plug-ins/common/color-to-alpha.c	Sat Aug  2 19:50:36 2008
@@ -396,8 +396,9 @@
   gtk_widget_show (main_vbox);
 
   preview = gimp_drawable_preview_new (drawable, NULL);
-  gtk_box_pack_start_defaults (GTK_BOX (main_vbox), preview);
+  gtk_box_pack_start (GTK_BOX (main_vbox), preview, TRUE, TRUE, 0);
   gtk_widget_show (preview);
+
   g_signal_connect (preview, "invalidated",
                     G_CALLBACK (color_to_alpha_preview),
                     drawable);

Modified: branches/soc-2008-tagging/plug-ins/common/contrast-retinex.c
==============================================================================
--- branches/soc-2008-tagging/plug-ins/common/contrast-retinex.c	(original)
+++ branches/soc-2008-tagging/plug-ins/common/contrast-retinex.c	Sat Aug  2 19:50:36 2008
@@ -305,7 +305,7 @@
   gtk_widget_show (main_vbox);
 
   preview = gimp_zoom_preview_new (drawable);
-  gtk_box_pack_start_defaults (GTK_BOX (main_vbox), preview);
+  gtk_box_pack_start (GTK_BOX (main_vbox), preview, TRUE, TRUE, 0);
   gtk_widget_show (preview);
 
   g_signal_connect_swapped (preview, "invalidated",

Modified: branches/soc-2008-tagging/plug-ins/common/convolution-matrix.c
==============================================================================
--- branches/soc-2008-tagging/plug-ins/common/convolution-matrix.c	(original)
+++ branches/soc-2008-tagging/plug-ins/common/convolution-matrix.c	Sat Aug  2 19:50:36 2008
@@ -927,8 +927,9 @@
   gtk_widget_show (main_vbox);
 
   preview = gimp_drawable_preview_new (drawable, NULL);
-  gtk_box_pack_start_defaults (GTK_BOX (main_vbox), preview);
+  gtk_box_pack_start (GTK_BOX (main_vbox), preview, TRUE, TRUE, 0);
   gtk_widget_show (preview);
+
   g_signal_connect_swapped (preview, "invalidated",
                             G_CALLBACK (convolve_image),
                             drawable);

Modified: branches/soc-2008-tagging/plug-ins/common/cubism.c
==============================================================================
--- branches/soc-2008-tagging/plug-ins/common/cubism.c	(original)
+++ branches/soc-2008-tagging/plug-ins/common/cubism.c	Sat Aug  2 19:50:36 2008
@@ -287,8 +287,9 @@
   gtk_widget_show (main_vbox);
 
   preview = gimp_drawable_preview_new (drawable, &cvals.preview);
-  gtk_box_pack_start_defaults (GTK_BOX (main_vbox), preview);
+  gtk_box_pack_start (GTK_BOX (main_vbox), preview, TRUE, TRUE, 0);
   gtk_widget_show (preview);
+
   g_signal_connect_swapped (preview, "invalidated",
                             G_CALLBACK (cubism),
                             drawable);

Modified: branches/soc-2008-tagging/plug-ins/common/deinterlace.c
==============================================================================
--- branches/soc-2008-tagging/plug-ins/common/deinterlace.c	(original)
+++ branches/soc-2008-tagging/plug-ins/common/deinterlace.c	Sat Aug  2 19:50:36 2008
@@ -344,7 +344,7 @@
   gtk_widget_show (main_vbox);
 
   preview = gimp_drawable_preview_new (drawable, NULL);
-  gtk_box_pack_start_defaults (GTK_BOX (main_vbox), preview);
+  gtk_box_pack_start (GTK_BOX (main_vbox), preview, TRUE, TRUE, 0);
   gtk_widget_show (preview);
   g_signal_connect_swapped (preview, "invalidated",
                             G_CALLBACK (deinterlace),

Modified: branches/soc-2008-tagging/plug-ins/common/destripe.c
==============================================================================
--- branches/soc-2008-tagging/plug-ins/common/destripe.c	(original)
+++ branches/soc-2008-tagging/plug-ins/common/destripe.c	Sat Aug  2 19:50:36 2008
@@ -457,8 +457,9 @@
   gtk_widget_show (main_vbox);
 
   preview = gimp_drawable_preview_new (drawable, NULL);
-  gtk_box_pack_start_defaults (GTK_BOX (main_vbox), preview);
+  gtk_box_pack_start (GTK_BOX (main_vbox), preview, TRUE, TRUE, 0);
   gtk_widget_show (preview);
+
   g_signal_connect_swapped (preview, "invalidated",
                             G_CALLBACK (destripe),
                             drawable);

Modified: branches/soc-2008-tagging/plug-ins/common/edge-dog.c
==============================================================================
--- branches/soc-2008-tagging/plug-ins/common/edge-dog.c	(original)
+++ branches/soc-2008-tagging/plug-ins/common/edge-dog.c	Sat Aug  2 19:50:36 2008
@@ -297,8 +297,9 @@
   gtk_widget_show (main_vbox);
 
   preview = gimp_drawable_preview_new (drawable, NULL);
-  gtk_box_pack_start_defaults (GTK_BOX (main_vbox), preview);
+  gtk_box_pack_start (GTK_BOX (main_vbox), preview, FALSE, FALSE, 0);
   gtk_widget_show (preview);
+
   g_signal_connect (preview, "invalidated",
                     G_CALLBACK (preview_update_preview),
                     drawable);

Modified: branches/soc-2008-tagging/plug-ins/common/edge.c
==============================================================================
--- branches/soc-2008-tagging/plug-ins/common/edge.c	(original)
+++ branches/soc-2008-tagging/plug-ins/common/edge.c	Sat Aug  2 19:50:36 2008
@@ -652,8 +652,9 @@
   gtk_widget_show (main_vbox);
 
   preview = gimp_drawable_preview_new (drawable, NULL);
-  gtk_box_pack_start_defaults (GTK_BOX (main_vbox), preview);
+  gtk_box_pack_start (GTK_BOX (main_vbox), preview, TRUE, TRUE, 0);
   gtk_widget_show (preview);
+
   g_signal_connect (preview, "invalidated",
                     G_CALLBACK (edge_preview_update),
                     NULL);

Modified: branches/soc-2008-tagging/plug-ins/common/emboss.c
==============================================================================
--- branches/soc-2008-tagging/plug-ins/common/emboss.c	(original)
+++ branches/soc-2008-tagging/plug-ins/common/emboss.c	Sat Aug  2 19:50:36 2008
@@ -465,7 +465,7 @@
   gtk_widget_show (main_vbox);
 
   preview = gimp_drawable_preview_new (drawable, NULL);
-  gtk_box_pack_start_defaults (GTK_BOX (main_vbox), preview);
+  gtk_box_pack_start (GTK_BOX (main_vbox), preview, TRUE, TRUE, 0);
   gtk_widget_show (preview);
   g_signal_connect_swapped (preview, "invalidated",
                             G_CALLBACK (emboss),

Modified: branches/soc-2008-tagging/plug-ins/common/engrave.c
==============================================================================
--- branches/soc-2008-tagging/plug-ins/common/engrave.c	(original)
+++ branches/soc-2008-tagging/plug-ins/common/engrave.c	Sat Aug  2 19:50:36 2008
@@ -228,8 +228,9 @@
   gtk_widget_show (main_vbox);
 
   preview = gimp_drawable_preview_new (drawable, NULL);
-  gtk_box_pack_start_defaults (GTK_BOX (main_vbox), preview);
+  gtk_box_pack_start (GTK_BOX (main_vbox), preview, TRUE, TRUE, 0);
   gtk_widget_show (preview);
+
   g_signal_connect_swapped (preview, "invalidated",
                             G_CALLBACK (engrave),
                             drawable);

Modified: branches/soc-2008-tagging/plug-ins/common/filter-pack.c
==============================================================================
--- branches/soc-2008-tagging/plug-ins/common/filter-pack.c	(original)
+++ branches/soc-2008-tagging/plug-ins/common/filter-pack.c	Sat Aug  2 19:50:36 2008
@@ -1333,7 +1333,7 @@
   gtk_widget_show (inner_vbox);
 
   alignment = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
-  gtk_box_pack_start_defaults (GTK_BOX (inner_vbox), alignment);
+  gtk_box_pack_start (GTK_BOX (inner_vbox), alignment, TRUE, TRUE, 0);
   gtk_widget_show (alignment);
 
   innermost_vbox = gtk_vbox_new (FALSE, 0);

Modified: branches/soc-2008-tagging/plug-ins/common/gif-save.c
==============================================================================
--- branches/soc-2008-tagging/plug-ins/common/gif-save.c	(original)
+++ branches/soc-2008-tagging/plug-ins/common/gif-save.c	Sat Aug  2 19:50:36 2008
@@ -1051,7 +1051,7 @@
   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
                                   GTK_POLICY_AUTOMATIC,
                                   GTK_POLICY_AUTOMATIC);
-  gtk_box_pack_start_defaults (GTK_BOX (hbox), scrolled_window);
+  gtk_box_pack_start (GTK_BOX (hbox), scrolled_window, TRUE, TRUE, 0);
   gtk_widget_show (scrolled_window);
 
   text_buffer = gtk_text_buffer_new (NULL);

Modified: branches/soc-2008-tagging/plug-ins/common/illusion.c
==============================================================================
--- branches/soc-2008-tagging/plug-ins/common/illusion.c	(original)
+++ branches/soc-2008-tagging/plug-ins/common/illusion.c	Sat Aug  2 19:50:36 2008
@@ -369,7 +369,7 @@
   gtk_widget_show (main_vbox);
 
   preview = gimp_zoom_preview_new (drawable);
-  gtk_box_pack_start_defaults (GTK_BOX (main_vbox), preview);
+  gtk_box_pack_start (GTK_BOX (main_vbox), preview, TRUE, TRUE, 0);
   gtk_widget_show (preview);
 
   g_signal_connect (preview, "invalidated",

Modified: branches/soc-2008-tagging/plug-ins/common/jigsaw.c
==============================================================================
--- branches/soc-2008-tagging/plug-ins/common/jigsaw.c	(original)
+++ branches/soc-2008-tagging/plug-ins/common/jigsaw.c	Sat Aug  2 19:50:36 2008
@@ -2435,8 +2435,9 @@
   gtk_widget_show (main_vbox);
 
   preview = gimp_aspect_preview_new (drawable, NULL);
-  gtk_box_pack_start_defaults (GTK_BOX (main_vbox), preview);
+  gtk_box_pack_start (GTK_BOX (main_vbox), preview, TRUE, TRUE, 0);
   gtk_widget_show (preview);
+
   g_signal_connect_swapped (preview, "invalidated",
                             G_CALLBACK (jigsaw),
                             drawable);

Modified: branches/soc-2008-tagging/plug-ins/common/lens-apply.c
==============================================================================
--- branches/soc-2008-tagging/plug-ins/common/lens-apply.c	(original)
+++ branches/soc-2008-tagging/plug-ins/common/lens-apply.c	Sat Aug  2 19:50:36 2008
@@ -412,8 +412,9 @@
   gtk_widget_show (main_vbox);
 
   preview = gimp_aspect_preview_new (drawable, NULL);
-  gtk_box_pack_start_defaults (GTK_BOX (main_vbox), preview);
+  gtk_box_pack_start (GTK_BOX (main_vbox), preview, TRUE, TRUE, 0);
   gtk_widget_show (preview);
+
   g_signal_connect_swapped (preview, "invalidated",
                             G_CALLBACK (drawlens),
                             drawable);

Modified: branches/soc-2008-tagging/plug-ins/common/lens-distortion.c
==============================================================================
--- branches/soc-2008-tagging/plug-ins/common/lens-distortion.c	(original)
+++ branches/soc-2008-tagging/plug-ins/common/lens-distortion.c	Sat Aug  2 19:50:36 2008
@@ -504,8 +504,9 @@
   gtk_widget_show (main_vbox);
 
   preview = gimp_zoom_preview_new (drawable);
-  gtk_box_pack_start_defaults (GTK_BOX (main_vbox), preview);
+  gtk_box_pack_start (GTK_BOX (main_vbox), preview, TRUE, TRUE, 0);
   gtk_widget_show (preview);
+
   g_signal_connect_swapped (preview, "invalidated",
                             G_CALLBACK (lens_distort_preview),
                             drawable);

Modified: branches/soc-2008-tagging/plug-ins/common/max-rgb.c
==============================================================================
--- branches/soc-2008-tagging/plug-ins/common/max-rgb.c	(original)
+++ branches/soc-2008-tagging/plug-ins/common/max-rgb.c	Sat Aug  2 19:50:36 2008
@@ -278,8 +278,9 @@
   gtk_widget_show (main_vbox);
 
   preview = gimp_zoom_preview_new (drawable);
-  gtk_box_pack_start_defaults (GTK_BOX (main_vbox), preview);
+  gtk_box_pack_start (GTK_BOX (main_vbox), preview, TRUE, TRUE, 0);
   gtk_widget_show (preview);
+
   g_signal_connect_swapped (preview, "invalidated",
                             G_CALLBACK (main_function),
                             drawable);

Modified: branches/soc-2008-tagging/plug-ins/common/newsprint.c
==============================================================================
--- branches/soc-2008-tagging/plug-ins/common/newsprint.c	(original)
+++ branches/soc-2008-tagging/plug-ins/common/newsprint.c	Sat Aug  2 19:50:36 2008
@@ -1216,8 +1216,9 @@
   gtk_widget_show (vbox);
 
   preview = gimp_drawable_preview_new (drawable, NULL);
-  gtk_box_pack_start_defaults (GTK_BOX (hbox), preview);
+  gtk_box_pack_start (GTK_BOX (hbox), preview, TRUE, TRUE, 0);
   gtk_widget_show (preview);
+
   g_signal_connect_swapped (preview, "invalidated",
                             G_CALLBACK (newsprint),
                             drawable);

Modified: branches/soc-2008-tagging/plug-ins/common/nl-filter.c
==============================================================================
--- branches/soc-2008-tagging/plug-ins/common/nl-filter.c	(original)
+++ branches/soc-2008-tagging/plug-ins/common/nl-filter.c	Sat Aug  2 19:50:36 2008
@@ -1034,8 +1034,9 @@
   gtk_widget_show (main_vbox);
 
   preview = gimp_drawable_preview_new (drawable, NULL);
-  gtk_box_pack_start_defaults (GTK_BOX (main_vbox), preview);
+  gtk_box_pack_start (GTK_BOX (main_vbox), preview, TRUE, TRUE, 0);
   gtk_widget_show (preview);
+
   g_signal_connect_swapped (preview, "invalidated",
                             G_CALLBACK (nlfilter),
                             drawable);

Modified: branches/soc-2008-tagging/plug-ins/common/noise-hsv.c
==============================================================================
--- branches/soc-2008-tagging/plug-ins/common/noise-hsv.c	(original)
+++ branches/soc-2008-tagging/plug-ins/common/noise-hsv.c	Sat Aug  2 19:50:36 2008
@@ -380,7 +380,7 @@
   gtk_widget_show (main_vbox);
 
   preview = gimp_drawable_preview_new (drawable, NULL);
-  gtk_box_pack_start_defaults (GTK_BOX (main_vbox), preview);
+  gtk_box_pack_start (GTK_BOX (main_vbox), preview, TRUE, TRUE, 0);
   gtk_widget_show (preview);
 
   g_signal_connect (preview, "invalidated",

Modified: branches/soc-2008-tagging/plug-ins/common/noise-solid.c
==============================================================================
--- branches/soc-2008-tagging/plug-ins/common/noise-solid.c	(original)
+++ branches/soc-2008-tagging/plug-ins/common/noise-solid.c	Sat Aug  2 19:50:36 2008
@@ -582,8 +582,9 @@
   gtk_widget_show (main_vbox);
 
   preview = gimp_aspect_preview_new (drawable, NULL);
-  gtk_box_pack_start_defaults (GTK_BOX (main_vbox), preview);
+  gtk_box_pack_start (GTK_BOX (main_vbox), preview, TRUE, TRUE, 0);
   gtk_widget_show (preview);
+
   g_signal_connect_swapped (preview, "invalidated",
                             G_CALLBACK (solid_noise),
                             drawable);

Modified: branches/soc-2008-tagging/plug-ins/common/pixelize.c
==============================================================================
--- branches/soc-2008-tagging/plug-ins/common/pixelize.c	(original)
+++ branches/soc-2008-tagging/plug-ins/common/pixelize.c	Sat Aug  2 19:50:36 2008
@@ -333,7 +333,7 @@
   gtk_widget_show (main_vbox);
 
   preview = gimp_drawable_preview_new (drawable, NULL);
-  gtk_box_pack_start_defaults (GTK_BOX (main_vbox), preview);
+  gtk_box_pack_start (GTK_BOX (main_vbox), preview, TRUE, TRUE, 0);
   gtk_widget_show (preview);
   g_signal_connect_swapped (preview, "invalidated",
                             G_CALLBACK (pixelize),

Modified: branches/soc-2008-tagging/plug-ins/common/plasma.c
==============================================================================
--- branches/soc-2008-tagging/plug-ins/common/plasma.c	(original)
+++ branches/soc-2008-tagging/plug-ins/common/plasma.c	Sat Aug  2 19:50:36 2008
@@ -319,8 +319,9 @@
   gtk_widget_show (main_vbox);
 
   preview = gimp_aspect_preview_new (drawable, NULL);
-  gtk_box_pack_start_defaults (GTK_BOX (main_vbox), preview);
+  gtk_box_pack_start (GTK_BOX (main_vbox), preview, TRUE, TRUE, 0);
   gtk_widget_show (preview);
+
   g_signal_connect_swapped (preview, "invalidated",
                             G_CALLBACK (plasma_seed_changed_callback),
                             drawable);

Modified: branches/soc-2008-tagging/plug-ins/common/plugin-defs.pl
==============================================================================
--- branches/soc-2008-tagging/plug-ins/common/plugin-defs.pl	(original)
+++ branches/soc-2008-tagging/plug-ins/common/plugin-defs.pl	Sat Aug  2 19:50:36 2008
@@ -101,7 +101,6 @@
     'poppler' => { ui => 1, optional => 1, cflags => 1 },
     'postscript' => { ui => 1 },
     'procedure-browser' => { ui => 1 },
-    'psd-save' => { ui => 1 },
     'psp' => { ui => 1, optional => 1, libopt => 'z' },
     'qbist' => { ui => 1 },
     'raw' => { ui => 1 },

Modified: branches/soc-2008-tagging/plug-ins/common/polar-coords.c
==============================================================================
--- branches/soc-2008-tagging/plug-ins/common/polar-coords.c	(original)
+++ branches/soc-2008-tagging/plug-ins/common/polar-coords.c	Sat Aug  2 19:50:36 2008
@@ -612,8 +612,9 @@
 
   /* Preview */
   preview = gimp_zoom_preview_new (drawable);
-  gtk_box_pack_start_defaults (GTK_BOX (main_vbox), preview);
+  gtk_box_pack_start (GTK_BOX (main_vbox), preview, TRUE, TRUE, 0);
   gtk_widget_show (preview);
+
   g_signal_connect_swapped (preview, "invalidated",
                             G_CALLBACK (dialog_update_preview),
                             drawable);

Modified: branches/soc-2008-tagging/plug-ins/common/ripple.c
==============================================================================
--- branches/soc-2008-tagging/plug-ins/common/ripple.c	(original)
+++ branches/soc-2008-tagging/plug-ins/common/ripple.c	Sat Aug  2 19:50:36 2008
@@ -488,8 +488,9 @@
   gtk_widget_show (main_vbox);
 
   preview = gimp_drawable_preview_new (drawable, NULL);
-  gtk_box_pack_start_defaults (GTK_BOX (main_vbox), preview);
+  gtk_box_pack_start (GTK_BOX (main_vbox), preview, TRUE, TRUE, 0);
   gtk_widget_show (preview);
+
   g_signal_connect_swapped (preview, "invalidated",
                             G_CALLBACK (ripple),
                             drawable);

Modified: branches/soc-2008-tagging/plug-ins/common/shift.c
==============================================================================
--- branches/soc-2008-tagging/plug-ins/common/shift.c	(original)
+++ branches/soc-2008-tagging/plug-ins/common/shift.c	Sat Aug  2 19:50:36 2008
@@ -374,10 +374,12 @@
   gtk_widget_show (main_vbox);
 
   preview = gimp_drawable_preview_new (drawable, NULL);
-  gtk_box_pack_start_defaults (GTK_BOX (main_vbox), preview);
+  gtk_box_pack_start (GTK_BOX (main_vbox), preview, TRUE, TRUE, 0);
   gtk_widget_show (preview);
+
   g_signal_connect_swapped (preview, "invalidated",
-                            G_CALLBACK (shift), drawable);
+                            G_CALLBACK (shift),
+                            drawable);
 
   frame = gimp_int_radio_group_new (FALSE, NULL,
                                     G_CALLBACK (gimp_radio_button_update),

Modified: branches/soc-2008-tagging/plug-ins/common/sparkle.c
==============================================================================
--- branches/soc-2008-tagging/plug-ins/common/sparkle.c	(original)
+++ branches/soc-2008-tagging/plug-ins/common/sparkle.c	Sat Aug  2 19:50:36 2008
@@ -356,7 +356,7 @@
   gtk_widget_show (main_vbox);
 
   preview = gimp_drawable_preview_new (drawable, NULL);
-  gtk_box_pack_start_defaults (GTK_BOX (main_vbox), preview);
+  gtk_box_pack_start (GTK_BOX (main_vbox), preview, TRUE, TRUE, 0);
   gtk_widget_show (preview);
   g_signal_connect_swapped (preview, "invalidated",
                             G_CALLBACK (sparkle),

Modified: branches/soc-2008-tagging/plug-ins/common/tile-glass.c
==============================================================================
--- branches/soc-2008-tagging/plug-ins/common/tile-glass.c	(original)
+++ branches/soc-2008-tagging/plug-ins/common/tile-glass.c	Sat Aug  2 19:50:36 2008
@@ -269,8 +269,9 @@
   gtk_widget_show (main_vbox);
 
   preview = gimp_drawable_preview_new (drawable, NULL);
-  gtk_box_pack_start_defaults (GTK_BOX (main_vbox), preview);
+  gtk_box_pack_start (GTK_BOX (main_vbox), preview, TRUE, TRUE, 0);
   gtk_widget_show (preview);
+
   g_signal_connect_swapped (preview, "invalidated",
                             G_CALLBACK (glasstile),
                             drawable);

Modified: branches/soc-2008-tagging/plug-ins/common/value-propagate.c
==============================================================================
--- branches/soc-2008-tagging/plug-ins/common/value-propagate.c	(original)
+++ branches/soc-2008-tagging/plug-ins/common/value-propagate.c	Sat Aug  2 19:50:36 2008
@@ -1082,8 +1082,9 @@
   gtk_widget_show (main_vbox);
 
   preview = gimp_drawable_preview_new (drawable, NULL);
-  gtk_box_pack_start_defaults (GTK_BOX (main_vbox), preview);
+  gtk_box_pack_start (GTK_BOX (main_vbox), preview, TRUE, TRUE, 0);
   gtk_widget_show (preview);
+
   g_signal_connect_swapped (preview, "invalidated",
                             G_CALLBACK (value_propagate_body),
                             drawable);

Modified: branches/soc-2008-tagging/plug-ins/common/waves.c
==============================================================================
--- branches/soc-2008-tagging/plug-ins/common/waves.c	(original)
+++ branches/soc-2008-tagging/plug-ins/common/waves.c	Sat Aug  2 19:50:36 2008
@@ -267,8 +267,9 @@
   gtk_widget_show (main_vbox);
 
   preview = gimp_zoom_preview_new (drawable);
-  gtk_box_pack_start_defaults (GTK_BOX (main_vbox), preview);
+  gtk_box_pack_start (GTK_BOX (main_vbox), preview, TRUE, TRUE, 0);
   gtk_widget_show (preview);
+
   g_signal_connect_swapped (preview, "invalidated",
                             G_CALLBACK (waves_preview),
                             drawable);

Modified: branches/soc-2008-tagging/plug-ins/common/whirl-pinch.c
==============================================================================
--- branches/soc-2008-tagging/plug-ins/common/whirl-pinch.c	(original)
+++ branches/soc-2008-tagging/plug-ins/common/whirl-pinch.c	Sat Aug  2 19:50:36 2008
@@ -547,8 +547,9 @@
   gtk_widget_show (main_vbox);
 
   preview = gimp_zoom_preview_new (drawable);
-  gtk_box_pack_start_defaults (GTK_BOX (main_vbox), preview);
+  gtk_box_pack_start (GTK_BOX (main_vbox), preview, TRUE, TRUE, 0);
   gtk_widget_show (preview);
+
   g_signal_connect_swapped (preview, "invalidated",
                             G_CALLBACK (dialog_update_preview),
                             drawable);

Modified: branches/soc-2008-tagging/plug-ins/common/wind.c
==============================================================================
--- branches/soc-2008-tagging/plug-ins/common/wind.c	(original)
+++ branches/soc-2008-tagging/plug-ins/common/wind.c	Sat Aug  2 19:50:36 2008
@@ -898,10 +898,12 @@
   gtk_widget_show (main_vbox);
 
   preview = gimp_drawable_preview_new (drawable, NULL);
-  gtk_box_pack_start_defaults (GTK_BOX (main_vbox), preview);
+  gtk_box_pack_start (GTK_BOX (main_vbox), preview, TRUE, TRUE, 0);
   gtk_widget_show (preview);
+
   g_signal_connect_swapped (preview, "invalidated",
-                            G_CALLBACK (render_effect), drawable);
+                            G_CALLBACK (render_effect),
+                            drawable);
 
   /*****************************************************
     outer frame and table

Modified: branches/soc-2008-tagging/plug-ins/help-browser/dialog.c
==============================================================================
--- branches/soc-2008-tagging/plug-ins/help-browser/dialog.c	(original)
+++ branches/soc-2008-tagging/plug-ins/help-browser/dialog.c	Sat Aug  2 19:50:36 2008
@@ -876,20 +876,23 @@
   for (list = items; list; list = g_list_next (list))
     {
       WebKitWebHistoryItem *item = list->data;
-      GtkWidget            *menu_item;
       const gchar          *title;
 
       title = webkit_web_history_item_get_title (item);
-      menu_item = gtk_menu_item_new_with_label (title);
 
-      gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item);
-      gtk_widget_show (menu_item);
+      if (title)
+        {
+          GtkWidget *menu_item = gtk_menu_item_new_with_label (title);
+
+          gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item);
+          gtk_widget_show (menu_item);
+
+          g_signal_connect_object (menu_item, "activate",
+                                   G_CALLBACK (menu_callback),
+                                   item, 0);
 
-      g_signal_connect_object (menu_item, "activate",
-                               G_CALLBACK (menu_callback),
-                               item, 0);
-
-      g_object_unref (item);
+          g_object_unref (item);
+        }
     }
 
   g_list_free (items);

Modified: branches/soc-2008-tagging/plug-ins/help/gimphelplocale.c
==============================================================================
--- branches/soc-2008-tagging/plug-ins/help/gimphelplocale.c	(original)
+++ branches/soc-2008-tagging/plug-ins/help/gimphelplocale.c	Sat Aug  2 19:50:36 2008
@@ -194,7 +194,7 @@
     }
 
 #ifdef GIMP_HELP_DEBUG
-  g_printerr ("help (%s): parsing '%s' for locale \"%s\"\n",
+  g_printerr ("help (%s): parsing '%s' for \"%s\"\n",
               locale->locale_id, uri, help_domain);
 #endif
 
@@ -219,8 +219,8 @@
                                            cancellable, error);
       if (! info)
         {
-          locale_set_error (error, _("Could not open '%s' for reading: %s"),
-                            file);
+          locale_set_error (error,
+                            _("Could not open '%s' for reading: %s"), file);
           g_object_unref (file);
 
           return FALSE;
@@ -235,7 +235,8 @@
 
   if (! stream)
     {
-      locale_set_error (error, _("Could not open '%s' for reading: %s"), file);
+      locale_set_error (error, 
+                        _("Could not open '%s' for reading: %s"), file);
       g_object_unref (file);
 
       return FALSE;

Modified: branches/soc-2008-tagging/plug-ins/psd/Makefile.am
==============================================================================
--- branches/soc-2008-tagging/plug-ins/psd/Makefile.am	(original)
+++ branches/soc-2008-tagging/plug-ins/psd/Makefile.am	Sat Aug  2 19:50:36 2008
@@ -16,9 +16,11 @@
 
 libexecdir = $(gimpplugindir)/plug-ins
 
-libexec_PROGRAMS = psd
+libexec_PROGRAMS = \
+	psd-load	\
+	psd-save
 
-psd_SOURCES = \
+psd_load_SOURCES = \
 	psd.c			\
 	psd.h			\
 	psd-util.c		\
@@ -32,6 +34,9 @@
 	psd-layer-res-load.c	\
 	psd-layer-res-load.h		
 
+psd_save_SOURCES = \
+	psd-save.c
+
 EXTRA_DIST = \
 	TODO.txt		\
 	new-resource-ids.txt

Modified: branches/soc-2008-tagging/plug-ins/uri/Makefile.am
==============================================================================
--- branches/soc-2008-tagging/plug-ins/uri/Makefile.am	(original)
+++ branches/soc-2008-tagging/plug-ins/uri/Makefile.am	Sat Aug  2 19:50:36 2008
@@ -25,13 +25,13 @@
 else
 if HAVE_GNOMEVFS
 backend_sources = uri-backend-gnomevfs.c
-backend_cflags = $(URI_GNOME_VFS_CFLAGS)
-backend_libs = $(URI_GNOME_VFS_LIBS)
+backend_cflags = $(GNOME_VFS_CFLAGS)
+backend_libs = $(GNOME_VFS_LIBS)
 else
 if HAVE_LIBCURL
 backend_sources = uri-backend-libcurl.c
-backend_cflags = $(URI_LIBCURL_CFLAGS)
-backend_libs = $(URI_LIBCURL_LIBS)
+backend_cflags = $(CURL_CFLAGS)
+backend_libs = $(CURL_LIBS)
 else
 backend_sources = uri-backend-wget.c
 backend_cflags = 

Modified: branches/soc-2008-tagging/plug-ins/uri/uri-backend-gvfs.c
==============================================================================
--- branches/soc-2008-tagging/plug-ins/uri/uri-backend-gvfs.c	(original)
+++ branches/soc-2008-tagging/plug-ins/uri/uri-backend-gvfs.c	Sat Aug  2 19:50:36 2008
@@ -199,9 +199,11 @@
         case DOWNLOAD:
           format = _("Downloading image (%s of %s)");
           break;
+
         case UPLOAD:
           format = _("Uploading image (%s of %s)");
           break;
+
         default:
           g_assert_not_reached ();
         }
@@ -223,9 +225,11 @@
         case DOWNLOAD:
           format = _("Downloaded %s of image data");
           break;
+
         case UPLOAD:
           format = _("Uploaded %s of image data");
           break;
+
         default:
           g_assert_not_reached ();
         }

Modified: branches/soc-2008-tagging/plug-ins/uri/uri-backend-libcurl.c
==============================================================================
--- branches/soc-2008-tagging/plug-ins/uri/uri-backend-libcurl.c	(original)
+++ branches/soc-2008-tagging/plug-ins/uri/uri-backend-libcurl.c	Sat Aug  2 19:50:36 2008
@@ -21,12 +21,12 @@
 
 #include "config.h"
 
-#include <stdio.h>
-
 #include <curl/curl.h>
 #include <curl/types.h>
 #include <curl/easy.h>
 
+#include <glib/gstdio.h>
+
 #include <libgimp/gimp.h>
 #include <libgimp/gimpui.h>
 
@@ -154,7 +154,7 @@
 
   gimp_progress_init (_("Connecting to server"));
 
-  if ((out_file = fopen(tmpname, "wb")) == NULL)
+  if ((out_file = g_fopen (tmpname, "wb")) == NULL)
     {
       g_set_error (error, 0, 0,
                    _("Could not open output file for writing"));

Modified: branches/soc-2008-tagging/po-plug-ins/POTFILES.in
==============================================================================
--- branches/soc-2008-tagging/po-plug-ins/POTFILES.in	(original)
+++ branches/soc-2008-tagging/po-plug-ins/POTFILES.in	Sat Aug  2 19:50:36 2008
@@ -111,7 +111,6 @@
 plug-ins/common/poppler.c
 plug-ins/common/postscript.c
 plug-ins/common/procedure-browser.c
-plug-ins/common/psd-save.c
 plug-ins/common/psp.c
 plug-ins/common/qbist.c
 plug-ins/common/raw.c
@@ -263,6 +262,7 @@
 plug-ins/print/print.c
 plug-ins/psd/psd-image-res-load.c
 plug-ins/psd/psd-load.c
+plug-ins/psd/psd-save.c
 plug-ins/psd/psd-thumb-load.c
 plug-ins/psd/psd-util.c
 plug-ins/psd/psd.c

Modified: branches/soc-2008-tagging/tools/pdbgen/pdb/edit.pdb
==============================================================================
--- branches/soc-2008-tagging/tools/pdbgen/pdb/edit.pdb	(original)
+++ branches/soc-2008-tagging/tools/pdbgen/pdb/edit.pdb	Sat Aug  2 19:50:36 2008
@@ -871,7 +871,8 @@
 	headers => [ qw("core/gimpstrokedesc.h") ],
 	code => <<'CODE'
 {
-  if (gimp_pdb_item_is_attached (GIMP_ITEM (drawable), error))
+  if (gimp_pdb_item_is_attached (GIMP_ITEM (drawable), error) &&
+      gimp_pdb_item_is_attached (GIMP_ITEM (vectors), error))
     {
       GimpStrokeDesc *desc  = gimp_stroke_desc_new (gimp, context);
 

Modified: branches/soc-2008-tagging/tools/pdbgen/pdb/vectors.pdb
==============================================================================
--- branches/soc-2008-tagging/tools/pdbgen/pdb/vectors.pdb	(original)
+++ branches/soc-2008-tagging/tools/pdbgen/pdb/vectors.pdb	Sat Aug  2 19:50:36 2008
@@ -122,6 +122,41 @@
     );
 }
 
+sub vectors_copy {
+    $blurb = 'Copy a vectors object.';
+
+    $help = <<'HELP';
+This procedure copies the specified vectors object and returns the copy.
+HELP
+
+    $author = 'Barak Itkin <lightningismyname gmail com>';
+    $copyright = 'Barak Itkin';
+    $date = '2008';
+    $since = '2.6';
+
+    @inargs = (
+	{ name => 'vectors', type => 'vectors',
+	  desc => 'The vectors object to copy' }
+    );
+
+    @outargs = (
+	{ name => 'vectors_copy', type => 'vectors',
+	  desc => 'The newly copied vectors object' }
+    );
+
+    %invoke = (
+	code => <<'CODE'
+{
+  vectors_copy = GIMP_VECTORS (gimp_item_duplicate (GIMP_ITEM (vectors),
+                               G_TYPE_FROM_INSTANCE (vectors)));
+
+  if (! vectors_copy)
+    success = FALSE;
+}
+CODE
+    );
+}
+
 sub vectors_get_image {
     $blurb = 'Returns the vectors objects image.';
     $help  = 'Returns the vectors objects image.';
@@ -1404,6 +1439,7 @@
 @procs = qw(vectors_is_valid
             vectors_new
 	    vectors_new_from_text_layer
+            vectors_copy
             vectors_get_image
             vectors_get_name vectors_set_name
             vectors_get_visible vectors_set_visible



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]