1. 08 Apr, 2018 1 commit
    • Boudewijn Rempt's avatar
      Move two widgets to libs/widgets · 2d068df9
      Boudewijn Rempt authored
      The confusingly named KisGradientSlider KisGradientSliderWidget
      don't depend on anything Krita-specific, so they can be part of
      the generic widgets library. Also export KisGradientSliderWidget
      so it can be used anywhere.
  2. 03 Apr, 2018 1 commit
  3. 28 Mar, 2018 1 commit
  4. 26 Mar, 2018 1 commit
  5. 15 Mar, 2018 1 commit
    • Boudewijn Rempt's avatar
      Resources: Remove KoResourceLoaderThread · 5d361cf0
      Boudewijn Rempt authored
      All resources were loaded synchronously by now, so KoResourceLoaderThread
      was obsolete. This also moved the bundle server to it's own singleton,
      since it needs a completely instantiated singleton of KisResourceServerProvider.
      KisApplication now instantiates the singletons in the correct order, without
      superfluously getting the actual resource providers. Since the order is now
      properly known, we can clear the empty krita 3 system preset tags from the
      tag database after loading the last bundles. However, the tag system seems
      to be case-insensitive, but we used to have both ink and Ink; that still
      needs fixing.
      This fixes item 2 from
      Curiously enough, this also makes Krita start quite a bit faster for me...
  6. 14 Mar, 2018 2 commits
    • Boudewijn Rempt's avatar
      Create actions per-window instead of per-application · e9b06616
      Boudewijn Rempt authored
      Note that this changes the libkis scripting api. The Extension
      class now has two methods: setup and createActions. Old code
      was like this:
      from PyQt5.QtGui import *
      from PyQt5.QtWidgets import *
      from krita import *
      def hello():
          QMessageBox.information(QWidget(), "Test", "Hello World")
      class HelloExtension(Extension):
        def __init__(self, parent):
        def setup(self):
            action = Krita.createAction("Hello")
      New code is like this:
      from PyQt5.QtGui import *
      from PyQt5.QtWidgets import *
      from krita import *
      def hello():
          QMessageBox.information(QWidget(), "Test", "Hello World")
      class HelloExtension(Extension):
        def __init__(self, parent):
        def setup(self):
        def createActions(self, window):
            action = window.createAction("Hello")
      This also adds a new parameter to createAction: the menu location. This
      is a path separated by /, for instance tools/scripts. Note that this
      path must exist, otherwise a crash will happen. The paths are defined in
      Note: we're still leaking Action objects created in Window::createAction;
      that's the next fix.
    • Boudewijn Rempt's avatar
      Rename KisViewPlugin to KisActionPlugin · e443dc64
      Boudewijn Rempt authored
      These plugins are not created per-view, but per-mainwindow, and exist
      so every main window can have its own actions, so this makes the naming
      more clear.
  7. 07 Mar, 2018 1 commit
  8. 27 Feb, 2018 1 commit
  9. 23 Feb, 2018 1 commit
  10. 21 Feb, 2018 1 commit
  11. 15 Feb, 2018 1 commit
  12. 08 Feb, 2018 1 commit
  13. 01 Feb, 2018 1 commit
  14. 31 Jan, 2018 1 commit
  15. 29 Jan, 2018 1 commit
    • Dmitry Kazakov's avatar
      Block all the non-view input user actions while filter dialog is active · 042dbe51
      Dmitry Kazakov authored
      Now all the input actions are divided into two groups: view-transform and
      modifying. And the canvas can block any of these action by setting a special
      flag, that is checked by the shortcuts matcher.
      When the filter dialog opens, it just blocks all the modifying actions,
      allowing the view ones at the same time :)
  16. 24 Jan, 2018 1 commit
  17. 20 Jan, 2018 1 commit
  18. 23 Dec, 2017 1 commit
  19. 21 Dec, 2017 1 commit
  20. 19 Dec, 2017 1 commit
    • Dmitry Kazakov's avatar
      Refactor the PainterInfo object to allow painting multiple strokes at the same time · fac19258
      Dmitry Kazakov authored
      === PainterInfo -> renamed -> KisFreehandStrokeInfo ===
      A special object that has encapsulates the environment for a single
      freehand stroke and stores all the needed data: KisPainter and
      === KisMaskedFreehandStrokePainter ===
      Is a new class having a KisPainter-like interface to let the caller
      call the methods of multiple KisPainter objects at once (main and
      masking ones).
  21. 18 Dec, 2017 1 commit
  22. 06 Dec, 2017 1 commit
  23. 03 Dec, 2017 1 commit
  24. 12 Nov, 2017 1 commit
  25. 30 Oct, 2017 1 commit
  26. 23 Oct, 2017 1 commit
    • Bernhard Liebl's avatar
      Delay purging of KisTextureTileInfoPoolSingleSize · c998e136
      Bernhard Liebl authored
      Adds a KisSignalCompressor to the purge memory logic in KisTextureTileInfoPool, such that the pool items are not freed immediately as the pool allocation reaches 0, but only after a delay of 1s. This fixes a performance hit on some systems, where the pool gets completely freed and reallocated several times a second.
      Differential Revision: https://phabricator.kde.org/D8279
  27. 13 Oct, 2017 3 commits
  28. 12 Oct, 2017 1 commit
  29. 29 Sep, 2017 1 commit
  30. 20 Sep, 2017 1 commit
  31. 05 Sep, 2017 2 commits
  32. 03 Aug, 2017 2 commits
    • Dmitry Kazakov's avatar
      Remove now unused animation rendering classes · 17f0062d
      Dmitry Kazakov authored
      They are substituted with KisAsyncAnimationRenderDialogBase and friends
    • Dmitry Kazakov's avatar
      Implement common code for rendering frame sequences · bb7994cd
      Dmitry Kazakov authored
      Right now we have a pair of common classes that can be reused for
      rendering a sequence of frames with user feedback, multithreading and
      cancellation capabilities.
      KisAsyncAnimationRendererBase is a base class for rendering a single
      frame in a separate thread using a dedicated image. The user should just
      reimplement two pure virtual callback functions to make it save real data
      on frame completion and error.
      KisAsyncAnimationRenderDialogBase is a class that constructs a set of
      renderer objects, multithreads them and shows the progress reports to
      the user (if needed).
  33. 31 Jul, 2017 1 commit
  34. 18 Jul, 2017 1 commit
    • Nikita Vertikov's avatar
      Fix for qLineEdits everywhere · 657156ed
      Nikita Vertikov authored
      QLineEdit gives away to Qt's shortcut system
      some key events (basically, everything with modiiers)
      even if it could handle them and use for text editing,
      when there is registered shortcut, matching this key input.
      Example: pressing "ctrl+backspace" (used to delete word
               left from cursor) in layer name editing field
               will cause filing canvas with background color,
               instead of deleting word left from cursor.
      Differential Revision: https://phabricator.kde.org/D5265
  35. 24 Jun, 2017 1 commit
    • Dmitry Kazakov's avatar
      Implement asynchronous saving of Krita documents · bb5db7ce
      Dmitry Kazakov authored
      Now all the saving operations work in the following way:
      1) Make a shallow copy of the image
      2) Create a separate document with it
      3) Save it in a separate thread in background
      The functionality basically works, except the following parts:
      1) Cloning the image "forgets" some image stuff. I don't have a list of what
         is forgotten yet (layer styles?).
      2) Closing the image while Krita is saving will most probably cause a crash.
      3) D&D of layers is not tested, though it should work.
      4) There was some option to provide "real name" for json export plugin,
         it is not supported anymore.