Merged from trunk revisions 26246:26352.

svn path=/branches/soc-2008-tagging/; revision=26353
This commit is contained in:
Aurimas Juška 2008-08-02 19:50:36 +00:00
parent bdf1342419
commit 963abb0c2e
146 changed files with 49883 additions and 26476 deletions

264
ChangeLog
View File

@ -17,6 +17,10 @@
* app/widgets/gimptagentry.c: hide tags on assign tag entry when
selected item is not visible in the view.
2008-07-31 Sven Neumann <sven@gimp.org>
* app/core/gimpimage-scale.c (gimp_image_scale): formatting.
2008-07-31 Aurimas Juška <aurisj@svn.gnome.org>
* app/widgets/gimpcombotagentry.[ch]
@ -29,6 +33,19 @@
* app/widgets/gimptagentry.c (gimp_tag_entry_assign_tags): don't unref
tags since they are currently only referenced by tagged objects.
2008-07-30 Jakub Steiner <jimmac@ximian.com>
* data/images/gimp-splash.png: new devel splash from
Aurore Derriennic <aurore.d@gmail.com>
2008-07-30 Sven Neumann <sven@gimp.org>
* app/dialogs/file-open-dialog.c (file_open_dialog_response):
attach the URI of the last opened image to the Gimp object.
* app/actions/file-commands.c (file_open_dialog_show): use the
last opened URI as a fallback for initializing the dialog.
2008-07-30 Aurimas Juška <aurisj@svn.gnome.org>
* app/widgets/gimptagentry.c (gimp_tag_entry_dispose): free recently
@ -41,6 +58,22 @@
tag and release mouse button. Selected tag is toggled
selected/deselected and popup is closed.
2008-07-29 Sven Neumann <sven@gimp.org>
* plug-ins/common/Makefile.am
* plug-ins/common/plugin-defs.pl
* plug-ins/common/psd-save.c: removed psd-save source here ...
* plug-ins/psd/Makefile.am
* plug-ins/psd/psd-save.c: ... and added it back here.
2008-07-29 Sven Neumann <sven@gimp.org>
* tools/pdbgen/pdb/vectors.pdb: added the real name of the author
of the new PDB function.
* app/pdb/vectors-cmds.c: regenerated.
2008-07-29 Aurimas Juška <aurisj@svn.gnome.org>
* app/widgets/gimptagentry.[ch]: added support for switching between
@ -61,6 +94,46 @@
been moved to a separate class GimpTagPopup in order to prepare for
upcoming feature additions.
2008-07-28 Sven Neumann <sven@gimp.org>
* tools/pdbgen/pdb/edit.pdb (edit_stroke_vectors_invoker): check
that the passed vectors item is attached.
* app/pdb/edit-cmds.c: regenerated.
2008-07-28 Sven Neumann <sven@gimp.org>
* tools/pdbgen/pdb/vectors.pdb: applied patch from LightningIsMyName
adding the new PDB function gimp-vectors-copy (bug #544212).
* app/pdb/internal-procs.c
* app/pdb/vectors-cmds.c
* libgimp/gimpvectors_pdb.[ch]: regenerated.
* libgimp/gimp.def: updated.
2008-07-27 Sven Neumann <sven@gimp.org>
* app/text/gimptext-compat.c (text_get_extents): applied the same
workaround for a memory leak in PangoFT2 (bug #143542) as was
applied long ago in gimptextlayout.c.
2008-07-27 Sven Neumann <sven@gimp.org>
* app/text/gimptext-compat.c (text_get_extents)
* app/text/gimptextlayout-render.c (gimp_text_layout_render):
use the readonly variant of pango_layout_iter_get_line().
2008-07-27 Martin Nordholts <martinn@svn.gnome.org>
* app/tools/gimprectangletool.c
(gimp_rectangle_tool_synthesize_motion): Bail out if there is no
pending rectangle to synthesize a motion on. Fixes bug #544181.
2008-07-27 Sven Neumann <sven@gimp.org>
* plug-ins/psd/Makefile.am: renamed executable to 'psd-load'.
2008-07-27 Aurimas Juška <aurisj@svn.gnome.org>
* app/widgets/gimpcombotagentry.c: ported GimpComboTagEntry to use
@ -107,6 +180,151 @@
* app/widgets/gimpcombotagentry.[ch]: improved tag drawing in popup
list.
2008-07-24 Sven Neumann <sven@gimp.org>
* app/widgets/gtkscalebutton.c: added missing prototypes.
2008-07-24 Sven Neumann <sven@gimp.org>
* plug-ins/help/gimphelplocale.c: formatting.
2008-07-24 Sven Neumann <sven@gimp.org>
* configure.in: minor cleanup of the checks for the URI plug-in.
* plug-ins/uri/Makefile.am: changed accordingly.
2008-07-24 Sven Neumann <sven@gimp.org>
* plug-ins/uri/uri-backend-libcurl.c: use g_fopen().
* plug-ins/uri/uri-backend-gvfs.c: formatting.
2008-07-24 Sven Neumann <sven@gimp.org>
* app/paint/gimppaintcore-stroke.c
(gimp_paint_core_stroke_emulate_dynamics): renamed variables.
2008-07-23 Sven Neumann <sven@gimp.org>
* app/paint/gimppaintcore-stroke.[ch]: also implement brush
dynamics emulation for stroking selections.
* app/core/gimpchannel.c: pass the 'emulate-dynamics' parameter to
gimp_paint_core_stroke_boundary().
2008-07-23 Sven Neumann <sven@gimp.org>
* app/widgets/gimpsessioninfo.c (gimp_session_info_get_geometry):
don't report negative offsets, they would be interpreted wrongly.
2008-07-23 Sven Neumann <sven@gimp.org>
Based on a patch from Alexia Death (bug #543706):
* app/paint/gimppaintcore-stroke.[ch]
(gimp_paint_core_stroke_vectors): added code to emulate brush
dynamics by modifying pressure and velocity along the stroke.
* app/vectors/gimpvectors.c (gimp_vectors_stroke): pass the
'emulate-dynamics' parameter to gimp_paint_core_stroke_vectors().
2008-07-23 Sven Neumann <sven@gimp.org>
* app/widgets/gimpcontrollerinfo.c
* app/widgets/gimpcontrollerlist.c
* app/widgets/gimpdasheditor.c
* app/widgets/gimpdock.c
* app/widgets/gimpeditor.c
* app/widgets/gimpgrideditor.c
* app/widgets/gimppdbdialog.c
* app/widgets/gimppluginaction.c
* app/widgets/gimpstrokeeditor.c
* app/widgets/gimptemplateeditor.c
* libgimpwidgets/gimpcolorprofilecombobox.c: no need to cast the
return value of g_value_dup_object().
2008-07-23 Sven Neumann <sven@gimp.org>
* app/core/gimpguideundo.c
* app/core/gimpitemundo.c
* app/core/gimplayermaskundo.c
* app/core/gimppdbprogress.c
* app/core/gimpstrokedesc.c
* app/core/gimptooloptions.c
* app/core/gimptoolpresets.c
* app/paint/gimppaintoptions.c
* app/text/gimpfont.c
* app/tools/gimptool.c
* app/widgets/gimpaction.c
* app/widgets/gimpcontrollereditor.c: no need to cast the return
value of g_value_dup_object().
2008-07-22 Sven Neumann <sven@gimp.org>
* app/widgets/gimpcellrendererviewable.c: no need to cast the
return value of g_value_dup_object().
2008-07-22 Sven Neumann <sven@gimp.org>
* plug-ins/help-browser/dialog.c (build_menu): check the return
value of webkit_web_history_item_get_title() to guard us against
a (reported) bug in WebKit.
2008-07-22 Michael Natterer <mitch@gimp.org>
* app/widgets/gimpviewrendererimagefile.c
(gimp_view_renderer_imagefile_get_icon): guard against
g_file_query_info() returning NULL (if the file doesn't exist or
whatever error).
2008-07-22 Michael Natterer <mitch@gimp.org>
* app/tools/gimpcolortool.c: set scroll_lock to TRUE while moving
or creating sample points so the image doesn't scroll while a new
sample point is dragged from the rulers and sample points can be
deleted by dragging them out of image without scrolling at the
same time.
2008-07-22 Sven Neumann <sven@gimp.org>
* app/tools/gimpvectortool.c: only use the position from the event
coordinates when creating or modifying strokes. Initialize all
other GimpCoords fields with default values.
2008-07-22 Sven Neumann <sven@gimp.org>
* app/vectors/gimpbezierstroke.c: formatting.
2008-07-22 Sven Neumann <sven@gimp.org>
* app/widgets/gimpsessioninfo-aux.c
(gimp_session_info_aux_new_from_props): plugged memory leak.
2008-07-22 Sven Neumann <sven@gimp.org>
* app/widgets/gimphistogramview.c
(gimp_histogram_view_set_background): fixed refcounting issue.
This plugs the memory leak I tried to fix in GimpHistogramEditor.
2008-07-22 Sven Neumann <sven@gimp.org>
* app/base/gimphistogram.[ch]: added new method
gimp_histogram_duplicate().
* app/widgets/gimphistogrameditor.c
(gimp_histogram_editor_frozen_update): instead of recalculating
the histogram, use a duplicate for the background histogram.
2008-07-22 Sven Neumann <sven@gimp.org>
* app/widgets/gimphistogrameditor.c (gimp_histogram_editor_set_image):
reverted last change, it did not plug the leak.
2008-07-22 Sven Neumann <sven@gimp.org>
* app/gui/session.c (session_init): plugged a small memory leak.
2008-07-22 Aurimas Juška <aurisj@svn.gnome.org>
* app/widgets/gimpcombotagentry.c
@ -120,6 +338,52 @@
(gimp_tag_entry_toggle_desc): fixed ill recursion which later results
in segmentation fault.
2008-07-21 Sven Neumann <sven@gimp.org>
* app/widgets/gimphistogrameditor.c
(gimp_histogram_editor_set_image): always unset and unref the
histograms. Plugs a memory leak reported by valgrind.
2008-07-21 Simon Budig <simon@gimp.org>
* app/core/gimpcoords.c: incorporate the velocity.
2008-07-21 Sven Neumann <sven@gimp.org>
* app/tools/gimpdrawtool.c (gimp_draw_tool_on_vectors_handle):
plugged a not so small memory leak.
2008-07-21 Sven Neumann <sven@gimp.org>
* app/actions/windows-actions.c (windows_actions_dock_notify):
plugged another small memory leak.
2008-07-21 Sven Neumann <sven@gimp.org>
* app/menus/file-menu.c (file_menu_open_recent_query_tooltip):
plugged a small memory leak.
2008-07-21 Sven Neumann <sven@gimp.org>
* app/core/gimpstrokedesc.[ch]: added boolean property
'emulate-brush-dynamics', in preparation for bug #543706.
* app/dialogs/stroke-dialog.c: added a toggle for the new parameter.
2008-07-21 Sven Neumann <sven@gimp.org>
* configure.in (ALL_LINGUAS): updated note to translators.
2008-07-21 Michael Natterer <mitch@gimp.org>
* app/gui/splash.c
* plug-ins/common/*.c: don't use gtk_box_pack_start_defaults(),
it got deprecated in GTK+ trunk.
2008-07-21 Sven Neumann <sven@gimp.org>
* configure.in (ALL_LINGUAS): added 'be' (Belarusian).
2008-07-21 Aurimas Juška <aurisj@svn.gnome.org>
* app/widgets/gimpdatafactoryview.c

View File

@ -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 @@ void
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 @@ file_open_cmd_callback (GtkAction *action,
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 @@ file_file_open_dialog (Gimp *gimp,
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 @@ file_file_open_dialog (Gimp *gimp,
static void
file_open_dialog_show (GtkWidget *parent,
Gimp *gimp,
GimpImage *image,
const gchar *uri,
gboolean open_as_layers)
@ -456,6 +462,9 @@ file_open_dialog_show (GtkWidget *parent,
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);

View File

@ -321,9 +321,11 @@ windows_actions_dock_notify (GimpDock *dock,
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,

View File

@ -102,6 +102,39 @@ gimp_histogram_unref (GimpHistogram *histogram)
}
}
/**
* 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,

View File

@ -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);

View File

@ -712,6 +712,7 @@ gimp_channel_stroke (GimpItem *item,
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);

View File

@ -120,7 +120,8 @@ gimp_coords_scalarprod (const GimpCoords *a,
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 @@ gimp_coords_length_squared (const GimpCoords *a)
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 @@ gimp_coords_manhattan_dist (const GimpCoords *a,
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 @@ gimp_coords_equal (const GimpCoords *a,
a->pressure == b->pressure &&
a->xtilt == b->xtilt &&
a->ytilt == b->ytilt &&
a->wheel == b->wheel);
a->wheel == b->wheel &&
a->velocity == b->velocity);
}

View File

@ -115,7 +115,7 @@ gimp_guide_undo_set_property (GObject *object,
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:

View File

@ -192,7 +192,9 @@ gimp_image_scale (GimpImage *image,
}
/* 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;

View File

@ -107,8 +107,9 @@ gimp_item_undo_set_property (GObject *object,
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 @@ gimp_item_undo_get_property (GObject *object,
case PROP_ITEM:
g_value_set_object (value, item_undo->item);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
break;

View File

@ -119,7 +119,7 @@ gimp_layer_mask_undo_set_property (GObject *object,
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:

View File

@ -237,13 +237,13 @@ gimp_pdb_progress_set_property (GObject *object,
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:

View File

@ -47,6 +47,7 @@ enum
PROP_METHOD,
PROP_STROKE_OPTIONS,
PROP_PAINT_INFO,
PROP_EMULATE_DYNAMICS,
PROP_PAINT_OPTIONS
};
@ -109,6 +110,10 @@ gimp_stroke_desc_class_init (GimpStrokeDescClass *klass)
"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 @@ gimp_stroke_desc_set_property (GObject *object,
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 @@ gimp_stroke_desc_get_property (GObject *object,
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;

View File

@ -46,13 +46,14 @@ struct _GimpStrokeDesc
GimpStrokeOptions *stroke_options;
GimpPaintInfo *paint_info;
gboolean emulate_dynamics;
GimpPaintOptions *paint_options;
};
struct _GimpStrokeDescClass
{
GimpObjectClass parent_class;
GimpObjectClass parent_class;
};

View File

@ -106,7 +106,7 @@ gimp_tool_options_set_property (GObject *object,
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;

View File

@ -139,7 +139,7 @@ gimp_tool_presets_set_property (GObject *object,
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:

View File

@ -118,6 +118,10 @@ file_open_dialog_response (GtkWidget *open_dialog,
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))

View File

@ -204,18 +204,24 @@ stroke_dialog_new (GimpItem *item,
NULL);
{
GtkWidget *vbox;
GtkWidget *hbox;
GtkWidget *label;
GtkWidget *combo;
GtkWidget *button;
vbox = gtk_vbox_new (FALSE, 6);
gtk_container_add (GTK_CONTAINER (frame), vbox);
gtk_widget_show (vbox);
gtk_widget_set_sensitive (vbox,
desc->method == GIMP_STROKE_METHOD_PAINT_CORE);
g_object_set_data (G_OBJECT (paint_radio), "set_sensitive", vbox);
hbox = gtk_hbox_new (FALSE, 6);
gtk_container_add (GTK_CONTAINER (frame), hbox);
gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
gtk_widget_show (hbox);
gtk_widget_set_sensitive (hbox,
desc->method == GIMP_STROKE_METHOD_PAINT_CORE);
g_object_set_data (G_OBJECT (paint_radio), "set_sensitive", hbox);
label = gtk_label_new (_("Paint tool:"));
gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
gtk_widget_show (label);
@ -234,6 +240,12 @@ stroke_dialog_new (GimpItem *item,
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;

View File

@ -155,6 +155,8 @@ session_init (Gimp *gimp)
skip = (info->toplevel_entry == NULL);
}
g_free (entry_name);
if (GIMP_CONFIG_GET_INTERFACE (info)->deserialize (GIMP_CONFIG (info),
scanner,
1,

View File

@ -151,7 +151,7 @@ splash_create (gboolean be_verbose)
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);

View File

@ -105,7 +105,12 @@ file_menu_open_recent_query_tooltip (GtkWidget *widget,
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,

View File

@ -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 @@ 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,
@ -160,6 +164,9 @@ gimp_paint_core_stroke_boundary (GimpPaintCore *core,
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 @@ gboolean
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 @@ gimp_paint_core_stroke_vectors (GimpPaintCore *core,
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 @@ gimp_paint_core_stroke_vectors (GimpPaintCore *core,
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 @@ gimp_paint_core_stroke_vectors (GimpPaintCore *core,
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;
}
}
}

View File

@ -29,6 +29,7 @@ gboolean gimp_paint_core_stroke (GimpPaintCore *core,
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_boundary (GimpPaintCore *core,
gboolean gimp_paint_core_stroke_vectors (GimpPaintCore *core,
GimpDrawable *drawable,
GimpPaintOptions *paint_options,
gboolean emulate_dynamics,
GimpVectors *vectors,
GError **error);

View File

@ -412,15 +412,17 @@ gimp_paint_options_set_property (GObject *object,
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 @@ gimp_paint_options_set_property (GObject *object,
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 @@ gimp_paint_options_set_property (GObject *object,
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 @@ gimp_paint_options_set_property (GObject *object,
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 @@ gimp_paint_options_set_property (GObject *object,
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 @@ gimp_paint_options_set_property (GObject *object,
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 @@ gimp_paint_options_set_property (GObject *object,
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 @@ gimp_paint_options_set_property (GObject *object,
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 @@ gimp_paint_options_set_property (GObject *object,
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 @@ gimp_paint_options_set_property (GObject *object,
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 @@ gimp_paint_options_get_property (GObject *object,
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 @@ gimp_paint_options_get_property (GObject *object,
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 @@ gimp_paint_options_get_property (GObject *object,
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 @@ gimp_paint_options_get_property (GObject *object,
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 @@ gimp_paint_options_get_property (GObject *object,
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 @@ gimp_paint_options_get_property (GObject *object,
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 @@ gimp_paint_options_get_property (GObject *object,
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 @@ gimp_paint_options_get_property (GObject *object,
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 @@ gimp_paint_options_get_property (GObject *object,
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 @@ gimp_paint_options_get_property (GObject *object,
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;

View File

@ -766,7 +766,8 @@ edit_stroke_vectors_invoker (GimpProcedure *procedure,
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);

View File

@ -29,7 +29,7 @@
#include "internal-procs.h"
/* 587 procedures registered total */
/* 588 procedures registered total */
void
internal_procs_init (GimpPDB *pdb)

View File

@ -144,6 +144,38 @@ vectors_new_from_text_layer_invoker (GimpProcedure *procedure,
return return_vals;
}
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,
@ -1485,6 +1517,35 @@ register_vectors_procs (GimpPDB *pdb)
gimp_pdb_register_procedure (pdb, procedure);
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
*/

View File

@ -165,7 +165,7 @@ gimp_font_set_property (GObject *object,
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:

View File

@ -154,6 +154,17 @@ text_get_extents (const gchar *fontname,
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 @@ text_get_extents (const gchar *fontname,
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);

View File

@ -91,7 +91,7 @@ gimp_text_layout_render (GimpTextLayout *layout,
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);

View File

@ -247,6 +247,8 @@ gimp_color_tool_button_press (GimpTool *tool,
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_color_tool_button_release (GimpTool *tool,
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 @@ gimp_color_tool_start_sample_point (GimpTool *tool,
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),

View File

@ -1362,7 +1362,6 @@ gimp_draw_tool_on_vectors_handle (GimpDrawTool *draw_tool,
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 @@ gimp_draw_tool_on_vectors_handle (GimpDrawTool *draw_tool,
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);

View File

@ -2183,23 +2183,33 @@ gimp_rectangle_tool_synthesize_motion (GimpRectangleTool *rect_tool,
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 @@ gimp_rectangle_tool_synthesize_motion (GimpRectangleTool *rect_tool,
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);
}

View File

@ -198,7 +198,7 @@ gimp_tool_set_property (GObject *object,
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:

View File

@ -286,6 +286,7 @@ gimp_vector_tool_button_press (GimpTool *tool,
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_button_press (GimpTool *tool,
gimp_vector_tool_set_vectors (vector_tool, vectors);
vector_tool->function = VECTORS_CREATE_STROKE;
}
gimp_vectors_freeze (vector_tool->vectors);
@ -335,21 +335,28 @@ gimp_vector_tool_button_press (GimpTool *tool,
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 @@ gimp_vector_tool_button_press (GimpTool *tool,
vector_tool->cur_anchor,
GIMP_ANCHOR_FEATURE_EDGE);
}
vector_tool->function = VECTORS_MOVE_ANCHOR;
}
else
@ -391,7 +399,7 @@ gimp_vector_tool_button_press (GimpTool *tool,
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_vector_tool_button_press (GimpTool *tool,
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_button_press (GimpTool *tool,
{
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 @@ gimp_vector_tool_button_press (GimpTool *tool,
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_vector_tool_button_press (GimpTool *tool,
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 @@ gimp_vector_tool_motion (GimpTool *tool,
{
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_vector_tool_motion (GimpTool *tool,
{
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 @@ gimp_vector_tool_motion (GimpTool *tool,
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_vector_tool_motion (GimpTool *tool,
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 @@ gimp_vector_tool_oper_update (GimpTool *tool,
else
{
vector_tool->function = VECTORS_MOVE_HANDLE;
if (state & TOGGLE_MASK)
vector_tool->restriction = GIMP_ANCHOR_FEATURE_SYMMETRIC;
else
@ -988,6 +1006,7 @@ gimp_vector_tool_oper_update (GimpTool *tool,
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 @@ gimp_vector_tool_move_selected_anchors (GimpVectorTool *vector_tool,
{
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 @@ gimp_vector_tool_verify_state (GimpVectorTool *vector_tool)
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 @@ gimp_vector_tool_verify_state (GimpVectorTool *vector_tool)
}
}
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;
}

View File

@ -611,6 +611,7 @@ gimp_bezier_stroke_nearest_point_get (const GimpStroke *stroke,
if (dist < min_dist || min_dist < 0)
{
min_dist = dist;
if (ret_pos)
*ret_pos = pos;
if (ret_point)
@ -620,6 +621,7 @@ gimp_bezier_stroke_nearest_point_get (const GimpStroke *stroke,
if (ret_segment_end)
*ret_segment_end = segment_end;
}
segment_start = anchorlist->data;
segmentcoords[0] = segmentcoords[3];
count = 1;
@ -635,7 +637,9 @@ gimp_bezier_stroke_nearest_point_get (const GimpStroke *stroke,
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 @@ gimp_bezier_stroke_nearest_point_get (const GimpStroke *stroke,
if (dist < min_dist || min_dist < 0)
{
min_dist = dist;
if (ret_pos)
*ret_pos = pos;
if (ret_point)
@ -716,7 +721,8 @@ gimp_bezier_stroke_segment_nearest_point_get (const GimpCoords *beziercoords,
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 @@ gimp_bezier_stroke_nearest_tangent_get (const GimpStroke *stroke,
if (dist >= 0 && (dist < min_dist || min_dist < 0))
{
min_dist = dist;
if (ret_pos)
*ret_pos = pos;
if (nearest)
@ -846,6 +853,7 @@ gimp_bezier_stroke_nearest_tangent_get (const GimpStroke *stroke,
if (ret_segment_end)
*ret_segment_end = segment_end;
}
segment_start = anchorlist->data;
segmentcoords[0] = segmentcoords[3];
count = 1;
@ -861,7 +869,9 @@ gimp_bezier_stroke_nearest_tangent_get (const GimpStroke *stroke,
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 @@ gimp_bezier_stroke_nearest_tangent_get (const GimpStroke *stroke,
if (dist >= 0 && (dist < min_dist || min_dist < 0))
{
min_dist = dist;
if (ret_pos)
*ret_pos = pos;
if (nearest)
@ -1536,6 +1547,7 @@ gimp_bezier_stroke_make_bezier (const GimpStroke *stroke)
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 @@ arcto_circleparam (gdouble h,
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 @@ arcto_ellipsesegment (gdouble radius_x,
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 @@ arcto_ellipsesegment (gdouble radius_x,
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])
{

View File

@ -522,6 +522,7 @@ gimp_vectors_stroke (GimpItem *item,
retval = gimp_paint_core_stroke_vectors (core, drawable,
stroke_desc->paint_options,
stroke_desc->emulate_dynamics,
vectors, error);
g_object_unref (core);

View File

@ -177,15 +177,19 @@ gimp_action_get_property (GObject *object,
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 @@ gimp_action_set_property (GObject *object,
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;

View File

@ -174,11 +174,11 @@ gimp_cell_renderer_viewable_set_property (GObject *object,
{
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;

View File

@ -410,11 +410,11 @@ gimp_controller_editor_set_property (GObject *object,
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:

View File

@ -199,17 +199,20 @@ gimp_controller_info_set_property (GObject *object,
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:

View File

@ -348,8 +348,9 @@ gimp_controller_list_set_property (GObject *object,
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 @@ gimp_controller_list_get_property (GObject *object,
case PROP_GIMP:
g_value_set_object (value, list->gimp);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
break;

View File

@ -170,7 +170,7 @@ gimp_dash_editor_set_property (GObject *object,
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);

View File

@ -225,11 +225,13 @@ gimp_dock_set_property (GObject *object,
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 @@ gimp_dock_get_property (GObject *object,
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;

View File

@ -246,23 +246,29 @@ gimp_editor_set_property (GObject *object,
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 @@ gimp_editor_get_property (GObject *object,
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;

View File

@ -126,17 +126,21 @@ gimp_grid_editor_set_property (GObject *object,
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 @@ gimp_grid_editor_get_property (GObject *object,
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;

View File

@ -77,7 +77,7 @@ static GimpDockedInterface *parent_docked_iface = NULL;
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_layer_changed (GimpImage *image,
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 @@ gimp_histogram_editor_frozen_update (GimpHistogramEditor *editor,
{
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 @@ gimp_histogram_editor_info_update (GimpHistogramEditor *editor)
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;
}

View File

@ -632,7 +632,7 @@ gimp_histogram_view_set_background (GimpHistogramView *view,
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;

View File

@ -242,11 +242,11 @@ gimp_pdb_dialog_set_property (GObject *object,
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 @@ gimp_pdb_dialog_set_property (GObject *object,
break;
case PROP_MENU_FACTORY:
dialog->menu_factory = (GimpMenuFactory *) g_value_dup_object (value);
dialog->menu_factory = g_value_dup_object (value);
break;
default:

View File

@ -150,7 +150,7 @@ gimp_plug_in_action_set_property (GObject *object,
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:

View File

@ -100,6 +100,7 @@ gimp_session_info_aux_new_from_props (GObject *object,
}
g_value_unset (&value);
g_string_free (str, TRUE);
}
else
{

View File

@ -477,13 +477,21 @@ gimp_session_info_get_geometry (GimpSessionInfo *info)
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
{

View File

@ -113,7 +113,7 @@ gimp_stroke_editor_set_property (GObject *object,
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:

View File

@ -437,8 +437,9 @@ gimp_template_editor_set_property (GObject *object,
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 @@ gimp_template_editor_get_property (GObject *object,
case PROP_TEMPLATE:
g_value_set_object (value, editor->template);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
break;

View File

@ -169,18 +169,24 @@ gimp_view_renderer_imagefile_get_icon (GimpImagefile *imagefile,
{
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

View File

@ -1294,6 +1294,10 @@ cb_scale_grab_notify (GtkWidget *widget,
* 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))

View File

@ -401,10 +401,10 @@ fi
# 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 @@ AC_ARG_WITH(gvfs, [ --without-gvfs build without GIO/GVfs support])
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 @@ have_gnomevfs="no (disabled)"
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 @@ else
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 @@ fi
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)")

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

After

Width:  |  Height:  |  Size: 152 KiB

View File

@ -1,3 +1,14 @@
2008-07-28 Sven Neumann <sven@gimp.org>
* libgimp/libgimp-sections.txt: added gimp_vectors_copy().
* libgimp/tmpl/gimpvectors.sgml: regenerated.
2008-07-21 Michael Natterer <mitch@gimp.org>
* tools/widgets.c: don't use gtk_box_pack_start/end_defaults(),
they got deprecated in GTK+ trunk.
2008-07-16 Sven Neumann <sven@gimp.org>
* libgimp/libgimp-sections.txt: added gimp_palette_get_colors()

View File

@ -931,6 +931,7 @@ gimp_image_undo_thaw
<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

View File

@ -37,6 +37,15 @@ gimpvectors
@Returns:
<!-- ##### FUNCTION gimp_vectors_copy ##### -->
<para>
</para>
@vectors_ID:
@Returns:
<!-- ##### FUNCTION gimp_vectors_is_valid ##### -->
<para>

View File

@ -168,7 +168,7 @@ create_browser (void)
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 @@ create_chain_button (void)
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 @@ create_chain_button (void)
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 @@ create_color_area (void)
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 @@ create_color_button (void)
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 @@ create_color_hex_entry (void)
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 @@ create_color_profile_combo_box (void)
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 @@ create_color_scale (void)
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 @@ create_color_selection (void)
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 @@ create_enum_combo_box (void)
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 @@ create_enum_label (void)
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 @@ create_file_entry (void)
"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 @@ create_number_pair_entry (void)
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 @@ create_int_combo_box (void)
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 @@ create_memsize_entry (void)
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 @@ create_offset_area (void)
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 @@ create_page_selector (void)
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 @@ create_path_editor (void)
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 @@ create_pick_button (void)
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 @@ create_preview_area (void)
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 @@ create_string_combo_box (void)
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 @@ create_unit_menu (void)
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);

View File

@ -657,6 +657,7 @@ EXPORTS
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

View File

@ -132,6 +132,39 @@ gimp_vectors_new_from_text_layer (gint32 image_ID,
return vectors_ID;
}
/**
* 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.

View File

@ -34,6 +34,7 @@ gint32 gimp_vectors_new (gint32
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,

View File

@ -169,7 +169,7 @@ gimp_color_profile_combo_box_set_property (GObject *object,
{
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:

View File

@ -138,7 +138,6 @@ libexec_PROGRAMS = \
$(POPPLER) \
postscript \
procedure-browser \
psd-save \
$(PSP) \
qbist \
raw \
@ -1808,22 +1807,6 @@ procedure_browser_LDADD = \
$(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

View File

@ -412,8 +412,9 @@ alienmap2_dialog (void)
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);

View File

@ -245,8 +245,9 @@ blinds_dialog (GimpDrawable *drawable)
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);

View File

@ -511,8 +511,9 @@ cm_dialog (CmParamsType *mix,
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);

View File

@ -307,7 +307,7 @@ exchange_dialog (GimpDrawable *drawable)
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);

View File

@ -396,8 +396,9 @@ color_to_alpha_dialog (GimpDrawable *drawable)
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);

View File

@ -305,7 +305,7 @@ retinex_dialog (GimpDrawable *drawable)
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",

View File

@ -927,8 +927,9 @@ convolve_image_dialog (GimpDrawable *drawable)
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);

View File

@ -287,8 +287,9 @@ cubism_dialog (GimpDrawable *drawable)
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);

View File

@ -344,7 +344,7 @@ deinterlace_dialog (GimpDrawable *drawable)
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),

View File

@ -457,8 +457,9 @@ destripe_dialog (GimpDrawable *drawable)
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);

View File

@ -297,8 +297,9 @@ dog_dialog (gint32 image_ID,
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);

View File

@ -652,8 +652,9 @@ edge_dialog (GimpDrawable *drawable)
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);

View File

@ -465,7 +465,7 @@ emboss_dialog (GimpDrawable *drawable)
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),

View File

@ -228,8 +228,9 @@ engrave_dialog (GimpDrawable *drawable)
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);

View File

@ -1333,7 +1333,7 @@ fp_advanced_dialog (GtkWidget *parent)
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);

View File

@ -1051,7 +1051,7 @@ save_dialog (gint32 image_ID)
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);

View File

@ -369,7 +369,7 @@ illusion_dialog (GimpDrawable *drawable)
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",

View File

@ -2435,8 +2435,9 @@ jigsaw_dialog (GimpDrawable *drawable)
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);

View File

@ -412,8 +412,9 @@ lens_dialog (GimpDrawable *drawable)
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);

View File

@ -504,8 +504,9 @@ lens_dialog (GimpDrawable *drawable)
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);

View File

@ -278,8 +278,9 @@ max_rgb_dialog (GimpDrawable *drawable)
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);

View File

@ -1216,8 +1216,9 @@ newsprint_dialog (GimpDrawable *drawable)
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);

View File

@ -1034,8 +1034,9 @@ nlfilter_dialog (GimpDrawable *drawable)
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);

View File

@ -380,7 +380,7 @@ scatter_hsv_dialog (GimpDrawable *drawable)
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",

View File

@ -582,8 +582,9 @@ solid_noise_dialog (GimpDrawable *drawable)
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);

View File

@ -333,7 +333,7 @@ pixelize_dialog (GimpDrawable *drawable)
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),

View File

@ -319,8 +319,9 @@ plasma_dialog (GimpDrawable *drawable)
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);

View File

@ -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 },

View File

@ -612,8 +612,9 @@ polarize_dialog (GimpDrawable *drawable)
/* 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);

View File

@ -488,8 +488,9 @@ ripple_dialog (GimpDrawable *drawable)
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);

View File

@ -374,10 +374,12 @@ shift_dialog (gint32 image_ID,
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),

View File

@ -356,7 +356,7 @@ sparkle_dialog (GimpDrawable *drawable)
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),

View File

@ -269,8 +269,9 @@ glasstile_dialog (GimpDrawable *drawable)
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);

Some files were not shown because too many files have changed in this diff Show More