Index: app/paint/gimpsmudge.c =================================================================== --- app/paint/gimpsmudge.c (revision 24138) +++ app/paint/gimpsmudge.c (working copy) @@ -249,14 +249,14 @@ gimp_smudge_motion (GimpPaintCore *pa if (opacity == 0.0) return; - /* Get the unclipped brush coordinates */ - gimp_smudge_brush_coords (paint_core, &x, &y, &w, &h); - /* Get the paint area (Smudge won't scale!) */ area = gimp_paint_core_get_paint_area (paint_core, drawable, paint_options); if (! area) return; + /* Get the unclipped brush coordinates */ + gimp_smudge_brush_coords (paint_core, &x, &y, &w, &h); + /* srcPR will be the pixels under the current painthit from the drawable */ pixel_region_init (&srcPR, gimp_drawable_get_tiles (drawable), area->x, area->y, area->width, area->height, FALSE); @@ -323,10 +323,15 @@ gimp_smudge_brush_coords (GimpPaintCore gint *h) { GimpBrushCore *brush_core = GIMP_BRUSH_CORE (paint_core); + gint width; + gint height; + + gimp_brush_scale_size (brush_core->brush, brush_core->scale, + &width, &height); /* Note: these are the brush mask size plus a border of 1 pixel */ - *x = (gint) paint_core->cur_coords.x - brush_core->brush->mask->width / 2 - 1; - *y = (gint) paint_core->cur_coords.y - brush_core->brush->mask->height / 2 - 1; - *w = brush_core->brush->mask->width + 2; - *h = brush_core->brush->mask->height + 2; + *x = (gint) paint_core->cur_coords.x - width / 2 - 1; + *y = (gint) paint_core->cur_coords.y - height / 2 - 1; + *w = width + 2; + *h = height + 2; } Index: app/paint/gimpbrushcore.c =================================================================== --- app/paint/gimpbrushcore.c (revision 24138) +++ app/paint/gimpbrushcore.c (working copy) @@ -677,8 +677,10 @@ gimp_brush_core_get_paint_area (GimpPain gint drawable_width, drawable_height; gint brush_width, brush_height; - core->scale = gimp_brush_core_calc_brush_scale (core, paint_options, - paint_core->cur_coords.pressure); + if (GIMP_BRUSH_CORE_GET_CLASS (core)->use_scale) + core->scale = gimp_brush_core_calc_brush_scale (core, paint_options, + paint_core->cur_coords.pressure); + /* else use scale from start(), we don't support on-the-fly scaling */ gimp_brush_scale_size (core->brush, core->scale, &brush_width, &brush_height); @@ -766,8 +768,7 @@ gimp_brush_core_create_bound_segs (GimpB g_return_if_fail (core->main_brush != NULL); g_return_if_fail (core->brush_bound_segs == NULL); - if (GIMP_BRUSH_CORE_GET_CLASS (core)->use_scale) - scale = paint_options->brush_scale; + scale = paint_options->brush_scale; if (scale > 0.0) mask = gimp_brush_scale_mask (core->main_brush, scale); @@ -909,24 +910,22 @@ gimp_brush_core_calc_brush_scale (GimpBr { gdouble scale = 1.0; - if (GIMP_BRUSH_CORE_GET_CLASS (core)->use_scale) + if (GIMP_BRUSH_CORE_GET_CLASS (core)->use_scale && + GIMP_PAINT_CORE (core)->use_pressure) { - if (GIMP_PAINT_CORE (core)->use_pressure) - { - if (paint_options->pressure_options->inverse_size) - scale = 1.0 - 0.9 * pressure; - else if (paint_options->pressure_options->size) - scale = pressure; - - if (scale < 1 / 256.0) - scale = 1 / 16.0; - else - scale = sqrt (scale); - } + if (paint_options->pressure_options->inverse_size) + scale = 1.0 - 0.9 * pressure; + else if (paint_options->pressure_options->size) + scale = pressure; - scale *= paint_options->brush_scale; + if (scale < 1 / 256.0) + scale = 1 / 16.0; + else + scale = sqrt (scale); } + scale *= paint_options->brush_scale; + return scale; } Index: app/tools/gimppaintoptions-gui.c =================================================================== --- app/tools/gimppaintoptions-gui.c (revision 24138) +++ app/tools/gimppaintoptions-gui.c (working copy) @@ -116,24 +116,20 @@ gimp_paint_options_gui (GimpToolOptions /* the brush */ if (g_type_is_a (tool_type, GIMP_TYPE_BRUSH_TOOL)) { + GtkObject *adj; + button = gimp_prop_brush_box_new (NULL, GIMP_CONTEXT (tool_options), 2, "brush-view-type", "brush-view-size"); gimp_table_attach_aligned (GTK_TABLE (table), 0, table_row++, _("Brush:"), 0.0, 0.5, button, 2, FALSE); - if (tool_type != GIMP_TYPE_SMUDGE_TOOL) - { - GtkObject *adj; - - adj = gimp_prop_scale_entry_new (config, "brush-scale", - GTK_TABLE (table), 0, table_row++, - _("Scale:"), - 0.01, 0.1, 2, - FALSE, 0.0, 0.0); - - gimp_scale_entry_set_logarithmic (adj, TRUE); - } + adj = gimp_prop_scale_entry_new (config, "brush-scale", + GTK_TABLE (table), 0, table_row++, + _("Scale:"), + 0.01, 0.1, 2, + FALSE, 0.0, 0.0); + gimp_scale_entry_set_logarithmic (adj, TRUE); } /* the gradient */