1. 25 Mar, 2018 9 commits
    • 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.
      5763b50d
    • 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
      individually.
      
      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.
      139a2345
    • 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
      popped.
      
      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.
      3ee5054e
    • 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.
      0f532787
    • 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
      operations.
      
      This fixed erroneous group-layer mask cropping when undoing/redoing
      a group-layer move operation multiple times.
      76a88cc6
    • 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.
      6a825f18
    • Jehan's avatar
      f8de2387
    • Jehan's avatar
      desktop: update the release date. · c0343a59
      Jehan authored
      Seems it will be today after all!
      c0343a59
    • 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.
      1b623a99
  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.
      8f07d767
    • 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.
      888baac9
    • 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.
      554347e0
    • 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.
      9adeee9d
    • Piotr Drąg's avatar
      Update Polish translation · 08c4f844
      Piotr Drąg authored
      08c4f844
    • 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
      dialog.
      c49e34cf
  3. 23 Mar, 2018 14 commits
  4. 22 Mar, 2018 7 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.
      25af765f
    • 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
      drawables.
      
      Note that this (intentionally) only affects whole-image/layer
      scaling, and not scaling done using any of the transform tools.
      289ecebd
    • 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.
      ab4b7ab3
    • Ell's avatar
      app: add crop_input parameter to gimp_gegl_apply_operation() · e1b1611e
      Ell authored
      Add a crop_input parameter to gimp_gegl_apply_[cached_]operation().
      When TRUE, the functions crop the op's input to the destination
      rect.  This is particularly useful for functions that process the
      entire input in one go (by means of get_cached_region()).  See the
      next commit.
      
      Pass crop_input = FALSE at all call sites for now, to keep the
      current behavior.
      e1b1611e
    • Jehan's avatar
      app, NEWS: metadata export settings are now ON by default. · 45802855
      Jehan authored
      After many discussions, it has been decided to export the metadata by
      default since it seems to be what many people would expect and they
      would consider they "lost" metadata (especially if they overwrite their
      original). I don't entirely agree since privacy (particularly if you are
      not aware of metadata and information they may contain) is also an issue
      but not many seem to agree with me.
      So here it is! All metadata now exported as a default!
      45802855
    • Jehan's avatar
      autogen: add support for recent automake 1.16. · 848b89af
      Jehan authored
      848b89af
    • Jehan's avatar
      app: only show FATAL errors by default for stable releases. · f4972878
      Jehan authored
      The debug dialog is awesome and extremely helpful, but I realize it may
      be a better default experience on *stable* to raise it only in case of
      crashes. CRITICAL are bad and should be fixed, but sometimes their
      consequence is actually not visible except for this dialog, and people
      on stable builds may prefer not to see this dialog. Also we will likely
      get a lot of duplicates for the same bugs once everybody has this by
      default, which will be very annoying to attend to, unless we had
      automation (which we don't right now).
      The option is still available in preferences anyway so people really
      interested in helping can activate the option for CRITICAL and even
      WARNING anyway, even on stable releases.
      f4972878
  5. 21 Mar, 2018 1 commit
  6. 20 Mar, 2018 3 commits
    • Michael Natterer's avatar
      Bug 794378 - GIMP crashed while I was moving the image window · 9a365eaf
      Michael Natterer authored
      Use a weak pointer in GimpToolGui to not keep a dangling
      private->viewable around.
      9a365eaf
    • Jehan's avatar
      NEWS: keep up-to-date. · c44f5a2f
      Jehan authored
      c44f5a2f
    • Jehan's avatar
      plug-ins: rename s/YUV/YCbCr/ s/eYCC/xvYCC/ s/RGB/sRGB/. · 34b68a2c
      Jehan authored
      Exchanging with OpenJPEG developers and searching more on the topic, it
      seems that YUV is more often refered to as YCbCr. Wikipedia says:
      
      > typically the terms YCbCr and YUV are used interchangeably, leading to
      > some confusion. The main difference is that YUV is analog and YCbCr is
      > digital
      
      As for eYCC, I am told this is extended YCC. It seems this is refered as
      xvYCC (I really can't find much under "eYCC"). So let's rename it too.
      
      Hopefully I made no mistakes!
      34b68a2c