1. 30 Jul, 2020 1 commit
  2. 29 Jul, 2020 2 commits
    • Ell's avatar
      app: add progressive performance logs · 60ca6110
      Ell authored
      Add an option to record progressive performance logs.  Progressive
      logs contain complete information after each recorded sample, by
      writing partial address maps at each sample, containing all new
      addresses introduced by the sample.  Furthermore, when recording a
      progressive log, the output stream is flushed after each sample.
      
      This allows recording complete logs even in cases where they can't
      be properly terminated, such as when GIMP crashes or freezes in the
      middle of the log.
      
      Progressive logs are disabled by default, since they potentially
      increase the sampling cost.  They can be enabled through a toggle
      in the log file-dialog, or through the
      GIMP_PERFORMANCE_LOG_PROGRESSIVE environment varaible.
      
      (cherry picked from commit 146c2343)
      60ca6110
    • Ell's avatar
      app: allow controlling performance-log parameters through the UI · 7e21f792
      Ell authored
      When recording a performance log, allow setting the log parametrs
      through the file dialog.  Currently, this includes the sample
      frequency, and the option to include backtraces.
      
      These options are still controllable through the
      GIMP_PERFORMANCE_LOG_SAMPLE_FREQUENCY and
      GIMP_PERFORMANCE_LOG_BACKTRACE environment variables.  When set,
      the variables override the values entered through the UI.
      
      (cherry picked from commit 126002c5)
      7e21f792
  3. 02 Jun, 2020 1 commit
  4. 14 May, 2020 2 commits
  5. 11 May, 2020 1 commit
  6. 29 Apr, 2020 1 commit
  7. 07 Apr, 2020 2 commits
    • Ell's avatar
      app: apply common operation settings when reapplying a filter · 1a41acec
      Ell authored
      Add a new gimp_drawable_apply_operation_with_config() function,
      which takes an operation node together with a config object, and
      applies the operation using the config options, including both the
      operation-specific options, and the common GimpOperationSettings
      options.
      
      Use the function in gimp_gegl_procedure_execute(), so that
      reapplying a filter takes the common operation settings used
      originally into account.
      1a41acec
    • Ell's avatar
      app: add GimpOperationSettings · 9e5fabf8
      Ell authored
      Add a new GimpOperationSettings class, to be used as a base class
      for all operation-config types.  The class provides options common
      to all operations (namely, the clipping mode, input region, and
      color options), which were previously stored in GimpFilterOptions,
      and were therefore bound to the filter tool, instead of being
      stored as part of the operation settings; as a result, these
      options would have no effect when reapplying a filter, or when
      restoring a preset.
      
      The GimpOperationSettings options do not affect the operation
      node, but rather the associated GimpDrawableFilter object.  The
      class provides a gimp_operation_settings_sync_drawable_filter()
      function, which applies the options to the filter.
      
      Modify all custom and auto-generated operation-config types to
      derive from GimpOperationSettings, and modify the GimpConfig
      functions of the former to account for the GimpOperationSettings
      properties, using a set of protected functions provided by the
      class.
      9e5fabf8
  8. 23 Mar, 2020 1 commit
  9. 30 Jan, 2020 3 commits
    • Ell's avatar
      app: add GimpToolButton · bcc56340
      Ell authored
      Add a new GimpToolButton class, used for tool-buttons in the
      toolbox, instead of implementing them directly in GimpToolPalette.
      Each GimpToolButton is associated with a GimpToolItem, which can be
      either an individual tool or a group.
      
      When a tool button is associated with a group, it displays the
      group's active tool, with an arrow at the corner.  Clicking the
      button selects the active tool, while clicking-and-holding, or
      right-clicking, shows a menu of all the tools in the group.
      Alternatively, the active tool can be changed using the scroll
      wheel.
      bcc56340
    • Ell's avatar
      app: add gimp_tool_info_get_action_name() · 0bd3c2e1
      Ell authored
      Move the logic for translating a tool identifier to a corresponding
      action name to GimpToolInfo.  It's currently only used in
      tools-actions.c, but the next commits will use it in tool buttons.
      0bd3c2e1
    • Ell's avatar
      app: add GimpToolItem; derive GimpToolInfo from it · b3583041
      Ell authored
      Add GimpToolItem as a common base class for toolbox items.
      Derive GimpToolInfo from GimpToolItem, representing an individual
      tool.  The next commits add support for tool groups, represented by
      an alternative subclass of GimpToolItem.
      
      Most of the tool-info properties remain in GimpToolInfo, however,
      GimpToolItem takes care of tool-item visibility.
      b3583041
  10. 17 Jan, 2020 2 commits
    • Ell's avatar
      Issue #4366 - Color-to-alpha unnecessarily grayed out for grayscale images · b55afe87
      Ell authored
      Don't disable color-to-alpha for grayscale drawable, since the
      operation is applicable to grayscale images (in particular, it
      doesn't add color where there was none), and since we no longer
      distinguish between layers and channels according to the drawable
      format when updating the filters actions.
      b55afe87
    • Ell's avatar
      Issue #1975 - Color to alpha now requires an alpha-channel ... · 75d5eb78
      Ell authored
      ... (used to add one automatically)
      
      In GimpFilterTool and gimp_drawable_apply_operation(), use
      gimp_drawable_filter_set_add_alpha() to add an alpha channel when
      applying an operation that specifies "needs-alpha" to a drawable
      that can have alpha.
      
      Don't disable gegl:color-to-alpha (which has "needs-alpha") when
      the drawable doesn't have an alpha channel, if one can be added.
      75d5eb78
  11. 06 Jan, 2020 2 commits
    • woob's avatar
      app: expand functionality of merge-down button · b419aa5d
      woob authored
      Adds a number of modifier keys to the layer dockable's new "Merge Down"
      button to access further functions, and adds among them a new action to
      merge visible layers using the dialog's last values, akin to those
      accompanying the New Layer and Add Layer Mask dialogs.
      
      Modifier keys are bound as follows:
        Shift -> Merge layer group
        Ctrl -> Merge visible layers
        Ctrl + Shift -> Merge visible layers from last used values
      
      The Merge Down button is kept sensitive even when the current layer
      can't be merged down to allow access to these functions
      
      (cherry picked from commit a11ada4c)
      b419aa5d
    • woob's avatar
      app: consolidate UI for merging down and anchoring layers (issue #1184) · 3bab2e60
      woob authored
      As they are both mutually exclusive and serve an almost identical
      purpose, the "Merge down" and "Anchor Layer" are given mutually
      exclusive visibility in menus, and the anchor button is replaced
      with a merge down button in the Layers dockable whenever there is
      no active floating selection
      
      (cherry picked from commit f539fc78)
      3bab2e60
  12. 23 Oct, 2019 1 commit
  13. 01 Oct, 2019 1 commit
  14. 19 Sep, 2019 1 commit
  15. 15 Sep, 2019 2 commits
    • Ell's avatar
    • Ell's avatar
      app: add option to keep canvas padding in "show all" mode · c8df8169
      Ell authored
      Add an option to keep the normal canvas padding in "show all" mode,
      instead of extending the checkerboard pattern indefinitely.  This
      is useful when wanting to show the image content beyond the canvas,
      while still keeping the focus on the canvas; further commits will
      extend this mode to behave in more view-related cases as if "show
      all" wasn't enabled.
      
      Add a new 'View -> Padding Color -> Keep Padding in "Show All"
      Mode" toggle, which controls this behavior, with a corresponding
      default-value option in the preferences, under "Image Windows ->
      Appearance".
      c8df8169
  16. 05 Sep, 2019 1 commit
  17. 04 Sep, 2019 5 commits
    • Ell's avatar
      app: fix a few compilation warnings · 877acad5
      Ell authored
      877acad5
    • Ell's avatar
      app, menus: add "show canvas boundary" display option · 214cda54
      Ell authored
      Add a "show canvas boundary" display option, and a corresponding
      "View" menu item and default-apperance preferences option.  When
      enabled (the default), the canvas boundary is shown as an orange/
      black dashed line in "show all" mode.
      214cda54
    • Ell's avatar
      app: add "clip" parameter to gimp_display_shell_untransform_viewport() · 1f76013d
      Ell authored
      ... which specifies whether to clip the viewport to the canvas
      (previously, it would always be clipped).  Use the appropriate
      value in all callers, depending on the shell's "show all" mode.  In
      particular, this commit avoids clipping the image projection's
      priority rect to the canvas in "show all" mode.
      1f76013d
    • Ell's avatar
      app, menus: add "show all" mode to GimpDisplayShell; "View -> Show All" toggle · 162665e4
      Ell authored
      Add a "show all" mode to GimpDisplayShell, controlled through a
      corresponding "View -> Show All" menu item.  When enabled, the
      entire image content is displayed, instead of cropping the image
      to the canvas size.  More generally, the display behaves as if the
      canvas were infinite.  The following commits improve the overall
      behavior in this mode.
      
      Add a prefernces option to control the default "show all" state.
      162665e4
    • Ell's avatar
      app: add gimp_image_invalidate_all() · 2e30ec35
      Ell authored
      ... which invalidates the entire image.  This replaces all calls to
      gimp_image_invalidate() with the full canvas size, since the image
      content can now be larger than the canvas.
      2e30ec35
  18. 12 Aug, 2019 1 commit
  19. 10 Aug, 2019 2 commits
  20. 09 Aug, 2019 1 commit
    • Ell's avatar
      app, pdb: use gimp_item_get_clip() everywhere · f221b424
      Ell authored
      Remove the special clipping-mode handling for channels throughout
      the transform (and drawable-filter) code, and rather use
      gimp_item_get_clip(), added in the previous commit, instead.  As
      mentioned in the previous commit, we only modify the clipping mode
      in top-level code, while having lower-level code use the clipping
      mode as-is.  This not only hides the actual clipping-mode logic
      from the transform code, but, in particular, allows code performing
      transformation internally to use arbitrary clipping modes.
      
      Also, this commit fixes a bunch of PDB bugs all over the place :)
      f221b424
  21. 05 Aug, 2019 1 commit
  22. 19 Jul, 2019 1 commit
  23. 17 Jul, 2019 1 commit
  24. 05 Jul, 2019 1 commit
  25. 03 Jul, 2019 1 commit
    • Michael Natterer's avatar
      app: GtkAction -> GAction madness part two · ff7ca87c
      Michael Natterer authored
      Change all action callbacks so they can be invoked by a GAction:
      
      - add GimpActionCallback typedef:
        void (* cb) (GimpAction*, GVariant*, gpointer)
      - change all action callbacks to the GimpActionCallback signature
      - add "gimp-activate" and "gimp-change-state" signals to GimpAction,
        with the same signature as the resp. GAction signals
      - remove all other custom action signals and only use the new
        GimpAction signals
      - pass around appropriate GVariants containing booleans, int32,
        strings
      - badly hack around to force a GimpProcedure pointer into a
        uint64 variant
      - remove all G_CALLBACK() casts from all action callbacks,
        they all have the same signature now
      
      (cherry picked from commit 3b6b3fc1)
      ff7ca87c
  26. 02 Jul, 2019 2 commits
    • Michael Natterer's avatar
      app: change all action callback signatures to use GimpAction · a1a8f006
      Michael Natterer authored
      instead of GtkAction, which is correct now because all our actions
      implement the GimpAction interface.
      
      (cherry picked from commit b9d47f2d)
      a1a8f006
    • Michael Natterer's avatar
      app: start porting away from GtkAction and friends · 417d0dcc
      Michael Natterer authored
      Step one: get rid of all those deprecation warnings that make
      it hard to see any other warnings:
      
      - add a lot of dummy API to GimpAction, GimpActionGroup, GimpUIManager
        etc. which simply forwards to the deprecated GTK functions, they
        will all go away again later
      - rename GimpAction to GimpActionImpl
      - add interface GimpAction that is implemented by all action classes,
        creates a common interface and allows to remove some duplicated
        logic from GimpToggleAction and GimpRadioAction, and at the same
        time adds more features
      
      (cherry picked from commit 86e07c16)
      
      Merged to gimp-2-10 to keep the diff to master as small as possible
      417d0dcc