1. 09 Oct, 2017 4 commits
  2. 08 Oct, 2017 4 commits
    • Jehan's avatar
      Bug 787457 - Paint brush settings display system language (e.g. zh_TW) · d01e182c
      Jehan authored
      ... and ignore language setting (e.g. en_US).
      The problem came from the fact that these settings names are class
      properties of GimpPaintOptions/GimpContext which is first instanciated
      when the Gimp object is created. This unfortunately happened before
      language_init() since we needed these objects when loading gimprc
      (making inversion of calls rather complicated).
      Therefore they were localized with the system language, not the
      configured language.
      The solution was to create a very simple object GimpLangRC which
      implements the GimpConfig interface, for sole purpose to read the
      language from `gimprc` in a first pass. gimp_load_config() will still
      happen later as a second pass to properly load the rest of the
    • Marco Ciampa's avatar
      Updated Italian translation · 18cb45f2
      Marco Ciampa authored
    • Piotr Drąg's avatar
      Update Polish translation · e1afed3d
      Piotr Drąg authored
    • Marco Ciampa's avatar
      Updated Italian translation · b62b4425
      Marco Ciampa authored
  3. 07 Oct, 2017 4 commits
  4. 06 Oct, 2017 1 commit
  5. 05 Oct, 2017 5 commits
    • Ell's avatar
      Bug 788461 - Selection with a Fixed size is created with an ... · 80a52686
      Ell authored
      ... off-by one size in special cases
      The last commit wasn't drastic enough.  We changed SIGNED_ROUND()
      to use RINT(), which, in turn, may use rint().  However, rint()
      effectively breaks ties to even, so that we get stuff like
      'rint (1.5) - rint (0.5) == 2.0 - 0.0 == 2.0'.  This can't be
      good--it's entirely possible that we're bitten by this in other
      cases without noticing.
      Avoid rint() entirely in RINT(), and always use 'floor (x) + 0.5'
      instead, which always breaks ties up.  Hopefully, this doesn't
      break anything else...
    • Ell's avatar
      Bug 788461 - Selection with a Fixed size is created with an ... · e8b37a7a
      Ell authored
      ... off-by one size in special cases
      SIGNED_ROUND(), which is used by GimpToolRectangle, among other
      things, used to round negative values which lie exactly between
      two integers, i.e., -foo.5, down.  This could lead to the rectangle
      being one pixel bigger than expected, in either dimension, when one
      of its edges had a negative coordinate, and the opposite edge had a
      positive coordinate.
      Fix SIGNED_ROUND() to always round such values up, regardless of
    • Ell's avatar
      libgimpwidgets: use default unit for eevl ratio quantity in size boxes · 9fee677b
      Ell authored
      Pass the ratio quantity to be used for eevl ratio expressions in
      terms of the default unit of the size box, instead of as a
      dimensionless value.
    • Jehan's avatar
    • Jehan's avatar
      build: base both the dev and nightly builds off a BaseApp. · 54f4f445
      Jehan authored
      Keeping all dependencies inside the main manifest is very annoying
      because flatpak-builder will check them every time the package is
      rebuilt. Worse, sometimes the cache won't be hit (even though it should
      have), resulting into a rebuild of many dependencies. I create a BaseApp
      build which is the recommended process (and not creating our own runtime
      based on GNOME one's, as I first thought) which won't need to be built
      as often as the main manifests. The other advantage is obviously that
      this BaseApp can be shared between the dev and nightly (and likely even
      the stable later) builds. I will only keep differences inside the main
      manifests (for instance lcms2 which requires a higher version on master
      than on the GNOME runtime and the last dev release).
      I also move webkitgtk as the first dependencies since it takes too long
      and flatpak uses a sequential dependency graph (so any change to a
      previously listed dependency, even when actually unrelated, was
      triggering a rebuild of webkitgtk!).
      Only remaining issue is that I don't manage yet to run the cleanup of
      the BaseApp at the end of the main manifests (for files needed for
      building, but not at runtime).
  6. 04 Oct, 2017 9 commits
    • Jehan's avatar
      build: run flatpak-builder with --ccache option for faster builds. · e545116b
      Jehan authored
      So I discover today that there is an option --ccache to request
      flatpak-builder to compile using ccache, which is obviously a great idea
      when rebuilding the same deps too often. Update the howto with the info.
    • Jehan's avatar
      app: also make options_box into a GWeakRef. · 55083baa
      Jehan authored
      While I am at it, let's spread the improvement to options_box which was
      also a weak pointer with g_object_add_weak_pointer(). Let's make it
      rather a GWeakRef for the same reason as I did options_gui.
    • Jehan's avatar
      app: use GWeakRef instead of g_object_add_weak_pointer(). · 7be856a4
      Jehan authored
      Other than multi-threading (which here is not the problem), using
      GWeakRef has the other advantage that it makes the type of pointer
      obvious, hence avoiding the kind of errors as fixed in commit 12df7960.
      One can't just change the pointer value directly, and has to use
      g_weak_ref_set(), so such problem won't happen again.
    • Jehan's avatar
      Bug 788442 - Gimp crashes not using GEGL Operation tool. · 12df7960
      Jehan authored
      Properly set the pointer as a weak pointer, same as in GimpOperationTool
      parent class, to make sure it is resetted to NULL upon destruction.
    • Ell's avatar
      app: use a single size entry for the pos/size props of GimpRectangleOptions · e06a18b9
      Ell authored
      Repalce the two separate size entries, used for the position and
      size properties of GimpRectangleOptions, with a single size entry
      with two fields, so that they accept ratio expressions.  Note that
      this doesn't change the UI.
    • Ell's avatar
      libgimpwidgets: enable ratio expressions for size entries with two fields · f2a80a09
      Ell authored
      When a size entry has exactly two fields, enable ratio expressions
      in eevl.  Set the reference value to the value of the field that is
      not currently being evaluated, and invert the ratio when evaluating
      the second field.
    • Ell's avatar
      libgimpwidgets: add ratio expressions to eevl · 6caae9c5
      Ell authored
      Ratio expressions have the form 'x : y' (the ':' operator has the
      highest precedence for a binary operator, and is left-associative).
      Given a reference value 'a', the expression evaluates to
      'a * (x / y)'.
      Ratio expressions can be controlled by the caller by:
        - Enabling or disabling them:  They're meant to be used when the
          eevl servers two paired entries, and can be disabled otherwise.
        - Setting the reference value:  That's normally the value of the
          "other" entry of the pair--the one not currently being
        - Inverting the ratios:  Normally, one entry refers to the
          antecedent term of the ratio, and the other entry refers to the
          consequent term of the ratio.  When evaluating the latter one,
          the ratio should be inverted.
    • Ell's avatar
      libgimpwidgets: use struct, not parameters, to pass eevl options · 7362d479
      Ell authored
      Pass the evaluation options to gimp_eevl_evaluate() using a single
      parameter of type GimpEevlOptions, instead of using individual
      parameters for each option.  Add a GIMP_EEVL_OPTIONS_INIT macro,
      used to initialize a GimpEevlOptions struct to the default set of
      options.  This would allow us to add evaluation options more
    • Ell's avatar
      app: in xcf-load, avoid writing buffer data for empty tiles · 0ae7acd5
      Ell authored
      When loading tile data, avoid copying the data into the GEGL
      buffer when the tile is empty (i.e., all its bytes are 0), so that
      GEGL doesn't allocate memory for it unnecessarily.
  7. 03 Oct, 2017 7 commits
  8. 01 Oct, 2017 6 commits