1. 23 Mar, 2018 2 commits
  2. 22 Mar, 2018 6 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
      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
  3. 21 Mar, 2018 1 commit
  4. 20 Mar, 2018 1 commit
  5. 19 Mar, 2018 2 commits
    • Michael Natterer's avatar
      Bug 792686 - Colormap widget not updated when adding entry · 28d9e43f
      Michael Natterer authored
      gimp_image_add_colormap_entry(): increment private->n_colors *before*
      calling gimp_image_colormap_set_palette_entry() so it actually adds an
      entry.
      28d9e43f
    • Jehan's avatar
      Bug 793777 - CRITICALs on focus change in MWM with stylus. · 845eb522
      Jehan authored
      Focus change events were expecting the current tool control to be
      inactive, which was the case most of the time. Yet with stylus, the
      canvas was sometimes receiving GDK_BUTTON_PRESS events before
      GDK_FOCUS_CHANGE. In particular the canvas was receiving a button press
      before the focus out, then button release and focus in. Therefore by the
      time the focus out event happens, the tool control is active, which
      broke a few calls.
      Therefore I add a few checks and returns immediately when
      gimp_tool_control_is_active() return TRUE, especially since we also run
      gimp_display_shell_update_focus() calls after a button press anyway so
      the state should already be consistent.
      845eb522
  6. 18 Mar, 2018 6 commits
    • Ell's avatar
      app: reset GimpFilterTool widget when resetting settings · cada28e9
      Ell authored
      Add a gimp_filter_tool_reset_widget() function, which resets the
      tool widget associated with the filter's controller -- i.e., it
      resets those properties of the widget that aren't controlled by the
      op's properties to some "default" state.  For most controller types
      this is a NOP; for transform-grid controllers, we move the pivot
      back to the center of the drawable, w.r.t. the current transform.
      
      Call gimp_filter_tool_reset_widget() after resetting or reloading
      the tool's config.
      cada28e9
    • Massimo Valentini's avatar
      Bug 791315: Using the Gaussian Blur filter twice (Re-Show)... · 16b0110f
      Massimo Valentini authored
      ...only remembers horizontal radius, duplicates it for vertical
      
      Keep a list of the GUI's chain buttons around. When changing the
      entire config object like on reset or selecting saved settings, unlik
      them all after remembering their "active" state, and after changing
      the settings activate the ones that were active before, but only if
      the values they link are still the same.
      16b0110f
    • Jehan's avatar
      Bug 793638 - (gimp-edit-stroke ...) crashes gimp-console-2.9 unless... · a1b4f4ae
      Jehan authored
      ... (gimp-context-set-paint-method...) is called.
      GimpContext initialized with standard paint info at constructed() time
      to ensure there is always a paint_info even if none were set manually.
      a1b4f4ae
    • Michael Natterer's avatar
      pdb: add jehan_pdb_misc() and use it in the new procedures · 753bd0a0
      Michael Natterer authored
      so they have the correct aithor.
      753bd0a0
    • Jehan's avatar
      app, libgimp, pdb: update gimp_edit_blend() description. · 1789f0fe
      Jehan authored
      Make it known that gimp_context_set_distance_metric() influences the end
      render of a shapeburst blend.
      1789f0fe
    • Jehan's avatar
      app, libgimp, pdb: add "distance-metric" property to GimpPDBContext. · e164aee7
      Jehan authored
      This property is currently only used for gimp_edit_blend() to control
      how are computed distances. In the future, it could be used for more
      functions making use of "gegl:distance-transform" operation, or even for
      other algorithms, if relevant.
      This new property obviously comes with 2 new PDB calls:
      gimp_context_get_distance_metric() & gimp_context_set_distance_metric()
      e164aee7
  7. 17 Mar, 2018 4 commits
  8. 16 Mar, 2018 4 commits
    • Jehan's avatar
      app: return from gimp_display_shell_space_pressed() immediately when... · 8aaf77ba
      Jehan authored
      ... scrolling in progress.
      In particular, this could happen while panning with mouse middle click
      and hitting space. This space should simply be ignored.
      8aaf77ba
    • Jehan's avatar
      Bug 724692 - Canvas rotation stuck with specific order of actions. · b279c2d2
      Jehan authored
      The bug was affecting actually both canvas rotation and panning when
      done with space key. If the first mouse button was also clicked, then
      released after the space key, we ended up in some stuck action. It could
      only be unstuck by hitting/releasing space again.
      
      I am actually unsure that this was not originally done on purpose,
      especially since the code has these 2 status variables space_pressed and
      space_release_pending, but really apart from looking at this code, the
      behavior just looks very buggy and impracticable.
      The new behavior is to just stop the canvas panning/rotation as soon as
      space is released (which is also how it is documented in our manual, and
      how everyone seems to use the feature). I only kept the variable
      space_release_pending, which I use as was used space_pressed before.
      b279c2d2
    • Ell's avatar
      app: throttle GimpCanvasProgress updates · dc185204
      Ell authored
      Avoid redrawing GimpCanvasProgress items upon
      GimpProgress::set_value() if a minimal amount of time hasn't passed
      since the last call.  This notably improves performance of
      frequently-updated GimpCanvasProgress items.
      dc185204
    • Ell's avatar
      app: fix indentation in gimpcanvasprogress.c · 1cc90e52
      Ell authored
      1cc90e52
  9. 15 Mar, 2018 2 commits
    • Jehan's avatar
      app: don't sync Blend tool's gradient-repeat property with gimp:blend... · c403e472
      Jehan authored
      ... when gradient_type >= GIMP_GRADIENT_SHAPEBURST_ANGULAR.
      Our current GUI code for the Blend tool options disables the "Repeat"
      widget with any of the shaped and spiral gradient types, which means (I
      assume) no repeat mode is allowed on these gradients. Nevertheless it
      was possible to change the repeat mode in another gradient type, then
      switch to one of these and get the repeat processed even though the GUI
      shows insensitive.
      I could simply reset the repeat mode to GIMP_REPEAT_NONE when setting
      one of these gradient types, but I think you'd want the repeat to stay
      at its value (being insensitive is enough to mean whatever value is set
      is not taken into account). So instead, I just unsync this specific
      property when appropriate.
      Note also I don't do this in the gimp:blend operation code because I am
      not sure this specific behavior is meant to be a generic blend behavior
      or just relative to the tool (render of the shaped gradients is barely
      different with a repeat, but there is still a difference).
      c403e472
    • Jehan's avatar
      app: add "distance-metric" property to the Blend tool options. · 87330a77
      Jehan authored
      It seems old blend tool (from GIMP 2.8) was using manhattan distance,
      whereas the new one uses euclidean. I guess there must be use cases for
      both. In any case, it is a good idea to simply propose the option since
      the property exists in the "gegl:distance-transform" operation.
      See also bug 781621.
      87330a77
  10. 14 Mar, 2018 3 commits
    • Ell's avatar
      app, pdb, libgimp, plug-ins, menus: rename layer composite modes · a7f3a2dd
      Ell authored
      Our composite modes don't correspond directly to the Porter-Duff
      operators after which they're named, and these names aren't too
      descriptive anyway.
      
      Rename the composite modes as follows:
      
        Source Over       =>  Union
        Source Atop       =>  Clip to Backdrop
        Destination Atop  =>  Clip to Layer
        Source In         =>  Intersection
      
      Update relevant code, including UI text, enumerator names, function
      names, and action names.
      a7f3a2dd
    • Jehan's avatar
      app: check "gradient-repeat" sensitivity at Blend Options creation. · 11ce60ba
      Jehan authored
      When starting the tool with one of the gradient types for which the
      repeat option should be deactivated, it is not. Run the handler function
      once at GUI creation.
      Also compare the gradient type with an enum value, which makes the test
      clearer than using an int.
      11ce60ba
    • Jehan's avatar
      Bug 781621 - PDB shapeburst gradient is slower than the blend tool. · 5751bb11
      Jehan authored
      PDB function gimp_edit_blend() was based on "gimp:shapeburst" operation
      whereas the rest of GIMP (in particular, the Blend tool) used
      "gegl:distance-transform" which is much faster.
      Setting the operation to "manhattan" metric ensures that it still
      renders the same way as in 2.8 while being a lot faster.
      
      There was still a problem regarding as how it renders differently from
      the Blend tool, but it turns out that the Blend tool is the one
      rendering differently from how it used to in 2.8. We should discuss
      adding the "metric" property in the tool options.
      5751bb11
  11. 13 Mar, 2018 1 commit
    • Jehan's avatar
      app: disable multi-threading on "gimp:shapeburst" operation. · 6f127f9d
      Jehan authored
      This operation is currently broken on multi-thread. So disable
      multi-threading, at least temporarily (if not forever since apparently
      we can get similar output with "gegl:distance-transform", but much
      faster and nicer). See bug 781621.
      6f127f9d
  12. 10 Mar, 2018 1 commit
    • Ell's avatar
      app: fix #include order in gimp-spawn.c · b590b595
      Ell authored
      ... so that GLib is included before the platform-specific headers,
      so that we can check for G_OS_WIN32.
      
      Spotted by Partha, as usual :)
      b590b595
  13. 08 Mar, 2018 1 commit
  14. 07 Mar, 2018 6 commits