1. 25 Mar, 2018 17 commits
    • Jehan's avatar
    • Jehan's avatar
      app: run errors_init() after gimp_load_config(). · 9f3ee499
      Jehan authored
      Since error handling is based on preferences, the config needs to be
      loaded first. Otherwise the gimp->config object does not exist yet and
      we get a bunch of "'G_IS_OBJECT (object)' failed" assertion which
      recurse in error handling when trying to get the "debug-policy"
      Just init the error handling later. It means it won't handle early
      loading code, but that is not much of an issue.
    • Alexandre Prokoudine's avatar
      Update Russian translation · 3261e03d
      Alexandre Prokoudine authored
    • Massimo Valentini's avatar
      app: various speedups to gimp_brush_core_color_area_with_pixmap() · f561231e
      Massimo Valentini authored
      In gimp_brush_core_color_area_with_pixmap(), use the native area
      format when painting the brush, instead of always going through
      "RGBA float", and create the pixmap -> area fish only once, instead
      of once per scanrow.
      In gimp_brush_core_paint_line_pixmap_mask(), avoid modulus
      calculation at each pixel.
      See bug #694917.
    • Piotr Drąg's avatar
      Update Polish translation · 67041d6b
      Piotr Drąg authored
    • Alexandre Prokoudine's avatar
    • Ell's avatar
      build: update Windows installer splash for 2.10 RC · e931d354
      Ell authored
    • Jehan's avatar
      devel-docs: adding new splash requirements. · 923ffb7e
      Jehan authored
      Current splash is not right within these requirements. But that's all
      right for this RC.
      These requirements are meant to be followed from next release.
    • Ell's avatar
      app: round layer bounds to global pixel grid when scaling image/group · 5763b50d
      Ell authored
      Add gimp_item_scale_by_factors_with_origin(), which is an extension
      of gimp_item_scale_by_factors(), taking the input/output points of
      origin for the transformation (both of which are (0, 0) in the case
      of gimp_item_scale_by_factors()).  Implement
      gimp_item_scale_by_factors() in terms of the new function, and Use
      the new function when scaling group layers, instead of manually
      calculating the children boundaries, so that the behavior is
      uniform across whole-image scaling and group-layer scaling.
      The new function rounds all four edges of the boundary to the
      image-global pixel grid, instead of only rounding the top/left
      edges to the global grid, and the bottom/right edges to the item-
      local grid.  This preserves layer-adjacency when scaling.
    • Ell's avatar
      app: use GimpObjectQueue in lots of places · 139a2345
      Ell authored
      Use GimpObjectQueue, added in the previous commit, in various
      instances where we perform an action on a set of objects.  This
      improves progress reporting, by using a single progress for the
      entire operation, rather than reporting the progress of each object
      individually, and by taking the relative cost of each object into
      account, instead of assuming a uniform cost for all objects.
      In particular, this affects the various whole-image operations
      (i.e., transformations and color conversions), operations on linked
      items, and operations on layer groups.  This also affects layers
      with masks, whose progress is now reported together instead of
      Additionally, this commit fixes erroneous group-layer mask cropping
      during undo when resizing the image, by properly calling
      {start,end}_move() on all the resized layers before starting the
      operation, and when scaling the image, by only scaling top-level
      layers, and letting group layers scale their children themselves.
    • Ell's avatar
      app: add GimpObjectQueue · 3ee5054e
      Ell authored
      GimpObjectQueue implements a queue of GimpObjects.  It derives from
      GimpSubProgress, and hence can be used as a GimpProgress object.
      It keeps track of the total memsize of the objects that were
      pushed-to and popped-from the queue, and uses these numbers to set
      the corresponding subrange of the progress object when an object is
      This provides an easy way to perform an operation on a set of
      objects, correctly reporting progress based on the relative sizes
      of the objects, which is assumed to be a good estimate of the
      relative cost of processing each object.
    • Ell's avatar
      app: add "progress" property to GimpSubProgress · 0f532787
      Ell authored
      Make the parent GimpProgress object of a GimpSubProgress instance
      settable through a property during construction, so that we can use
      it as a base class.
    • Ell's avatar
      app: fix layer-group mask cropping during move operation undo · 76a88cc6
      Ell authored
      In gimp_group_layer_{start,end}_move(), push corresponding undo
      steps, which perform the opposite operation during undo, and make
      sure that mask-cropping is frozen during group-layer move
      This fixed erroneous group-layer mask cropping when undoing/redoing
      a group-layer move operation multiple times.
    • Jehan's avatar
      desktop, po: also update the appdata description. · 6a825f18
      Jehan authored
      GIMP 2.10 is 2.10.0 and "2.10 RC1" is "2.10.0-RC1".
      I also update directly the Polish msgid and msgstr (only language having
      a translation on time, though it's our fault!) to avoid the translation
      getting fuzzy uselessly.
      I let the "rc" as lowercase in version property of <release> tag,
      assuming the more official/parsable name should be lowercase. Not sure
      if it makes sense.
    • Jehan's avatar
    • Jehan's avatar
      desktop: update the release date. · c0343a59
      Jehan authored
      Seems it will be today after all!
    • Michael Natterer's avatar
      Bug 794469 - Shift-click to create layer/channel/path... · 1b623a99
      Michael Natterer authored
      ...should really use last values
      When creating a layer or channel "from last values", really use the
      values last set be the user in the respective dialogs. In particular,
      don't use properties of the active layer or channel. I have no idea
      what we were thinking when adding that obscure logic.
  2. 24 Mar, 2018 6 commits
    • Ell's avatar
      app: fix paste-in-place when pasting over a layer group/locked item · 8f07d767
      Ell authored
      When pasting in place over a layer group or a content-locked item,
      change the paste type to NEW_LAYER_IN_PLACE, rather than NEW_LAYER,
      so that the new layer is still pasted in the right location.
      Additionally, avoid showing the "Pasted as new layer because ..."
      message when pasting over a layer group or a content-locked item,
      when the paste type is NEW_LAYER[_IN_PLACE] to begin with.
    • Jehan's avatar
      Revert "app: tweak sessionrc-expected-2-6 for make check to succeed." · 888baac9
      Jehan authored
      This reverts commit 554347e0.
      For some weird reason, this fixed the `make check` but broke the `make
      distcheck`. I am lost. Better revert, and now distcheck works great.
    • Jehan's avatar
      app: tweak sessionrc-expected-2-6 for make check to succeed. · 554347e0
      Jehan authored
      I'm not sure how useful is this test if we have to just constantly tweak
      the sessionrc for it to pass. But well… here it is.
      Now make check fully passes.
    • Jehan's avatar
      app, po: revert commit a0724783 and add a TRANSLATORS comment. · 9adeee9d
      Jehan authored
      Not using %d in the singular form of English does not prevent other
      languages to use %d in any form they wish to. This will still work and
      will still be replaced by the relevant number of images.
      So I revert commit a0724783 because it is just prettier (in English)
      to write "An image" rather than "1 image", but this does not mean you
      have to do the same in other languages! Adding a comment so that
      translators know about it.
      Also directly modify the msgid in the Polish and Russian translations
      which already translated this string, so that the translations does not
      end up unnecessarily fuzzy.
    • Piotr Drąg's avatar
      Update Polish translation · 08c4f844
      Piotr Drąg authored
    • Jehan's avatar
      app: shorten to "Debug Policy" the long label in Preferences. · c49e34cf
      Jehan authored
      The text was too long and increasing the minimum width of Preferences
  3. 23 Mar, 2018 14 commits
  4. 22 Mar, 2018 3 commits
    • Jehan's avatar
      app: output a dialog to recover images salvaged after a crash. · 25af765f
      Jehan authored
      Since commit d916fedf, GIMP has had the hidden feature to salvage
      images (if possible) during a crash into a backup folder. This commit
      finishes the feature by opening a dialog proposing to try and recover
      the salvaged images.
      This is not perfect yet since it doesn't "remember" the XCF path (in
      case it was a previously saved image). The images open as new unsaved
      and dirty images, but directly from the contents at crash time. For now,
      it is up to people to figure out what they correspond to, if relevant.
    • Ell's avatar
      Bug 793734 - White alpha border after upscaling · 289ecebd
      Ell authored
      In gimp_gegl_apply_scale(), use a CLAMP abyss policy for the scale
      op, to avoid leaking transparency into the image when scaling
      Note that this (intentionally) only affects whole-image/layer
      scaling, and not scaling done using any of the transform tools.
    • Ell's avatar
      app: crop input to output rect in channel ops · ab4b7ab3
      Ell authored
      In gimp_gegl_apply_{border,grow,shrink,flood}(), which are used
      by the corresponding channel functions, pass crop_input = TRUE to
      gimp_gegl_apply_operation(), to clip the input to the output rect.
      These operations process the entire input in one go, regardless of
      the requested output region; however, the channel functions
      calculate the output region according to the known channel bounds,
      hence clipping the input to these bounds doesn't affect discard any
      information, while avoiding unnecessary work.  In particular, this
      makes the corresponding operations on small selections in big images
      much faster.