[Plugin Release] Docker Under Cursor - make docker display in mouse position

DockerUnderCursor can make any docker float and display in the mouse position with keyboard shotcuts. Support Plugin Panel, E.g Pigment.O.

Preview

More introductions in github.

26 Likes

well it works nice but there seems to be some odd things I am not sure if they are fixable even but:

  • when you send the docker back the mouse take the initial calling position of the docker until you move the mouse again.
  • I had another situation where when the docker was sent back it would shrink a bit and doing a couple of times would shrink the docker more and more but I still don’t know how to trigger this to say where is the cause.

Beyond that, it is a really cool plugin and seems very useful. thank yous.

Indeed, I will try to fix it. I had been using tablet so much that I didn’t notice it

this is a Known issues, it is krita’ bug. solution in README last part on github. you just need manual drag floating docker back mainwindow.

thx for your feedback.

1 Like

I Updated plugin, brush outline now not offset. :grinning:

4 Likes

It is is working all good for what I can notice, now it feel very ergonomic. Thank you.

What I noticed was some of my panels not updating well while others updated good. I will try and fix them so it reacts better to yours.

2 Likes

omg :flushed: This looks super handy! With plugins like these Krita inches ever closer to the speed of light! Thanks for sharing!

4 Likes

One update, add function remember mouse position relative to docker.you can enable it in setting panel.
NewFunction

9 Likes

New function!
docker can auto-hide when mouse leaves the floating docker :kissing_heart:
auto-hide

12 Likes

Thanks a lot, it’s really fun to work with the plug-in.
And it looks like you got joy in programming.
:+1:

Michelist

1 Like

yes,although I’m a beginner in python, it’s fun to implement the functions I want by myself. Hope it can help you too!

5 Likes

A fellow implementer myself.
I started in trying to implement features I wanted in blender. Now I’m kind of hooked and enjoy every moment when I force the computer to do whatever I wanted :).
If you like it…don’t give up when people criticize or just ignore your stuff(like with my addon :face_exhaling: ). But one advice…don’t let it get in the way of your main field of work…this thing is really addictive :stuck_out_tongue: .

5 Likes

Thanks for sharing. I will have a test with it, it looks very handy.

1 Like

Thank you for making this. Its working great so far on macos.

1 Like

I encountered an error

AttributeError
Python 3.8.1: C:\Program Files\Krita (x64)\bin\krita.exe
Thu Oct 27 22:46:31 2022

A problem occurred in a Python script.  Here is the sequence of
function calls leading up to the error, in the order they occurred.

 C:\Users\EyeOd\AppData\Roaming\krita\pykrita\dockerundercursor\dockertogglemanager.py in finalSetup(self=<dockerundercursor.dockertogglemanager.DockerToggleManager object>)
   26         self.widget = Krita.instance().activeWindow().qwindow().findChild(QWidget,self.name)
   27         self.monitor = DockerMonitor(self)
   28         self.setMonitor()
   29 
   30     def setMonitor(self):
self = <dockerundercursor.dockertogglemanager.DockerToggleManager object>
self.setMonitor = <bound method DockerToggleManager.setMonitor of ....dockertogglemanager.DockerToggleManager object>>

 C:\Users\EyeOd\AppData\Roaming\krita\pykrita\dockerundercursor\dockertogglemanager.py in setMonitor(self=<dockerundercursor.dockertogglemanager.DockerToggleManager object>)
   32             self.widget.installEventFilter(self.monitor)
   33         if self.AUTOCONCEAL == "False":
   34             self.widget.removeEventFilter(self.monitor)
   35 
   36     def targetPotion(self,pos):
self = <dockerundercursor.dockertogglemanager.DockerToggleManager object>
self.widget = None
self.widget.removeEventFilter undefined
self.monitor = <dockerundercursor.dockermonitor.DockerMonitor object>
AttributeError: 'NoneType' object has no attribute 'removeEventFilter'
    __cause__ = None
    __class__ = <class 'AttributeError'>
    __context__ = None
    __delattr__ = <method-wrapper '__delattr__' of AttributeError object>
    __dict__ = {}
    __dir__ = <built-in method __dir__ of AttributeError object>
    __doc__ = 'Attribute not found.'
    __eq__ = <method-wrapper '__eq__' of AttributeError object>
    __format__ = <built-in method __format__ of AttributeError object>
    __ge__ = <method-wrapper '__ge__' of AttributeError object>
    __getattribute__ = <method-wrapper '__getattribute__' of AttributeError object>
    __gt__ = <method-wrapper '__gt__' of AttributeError object>
    __hash__ = <method-wrapper '__hash__' of AttributeError object>
    __init__ = <method-wrapper '__init__' of AttributeError object>
    __init_subclass__ = <built-in method __init_subclass__ of type object>
    __le__ = <method-wrapper '__le__' of AttributeError object>
    __lt__ = <method-wrapper '__lt__' of AttributeError object>
    __ne__ = <method-wrapper '__ne__' of AttributeError object>
    __new__ = <built-in method __new__ of type object>
    __reduce__ = <built-in method __reduce__ of AttributeError object>
    __reduce_ex__ = <built-in method __reduce_ex__ of AttributeError object>
    __repr__ = <method-wrapper '__repr__' of AttributeError object>
    __setattr__ = <method-wrapper '__setattr__' of AttributeError object>
    __setstate__ = <built-in method __setstate__ of AttributeError object>
    __sizeof__ = <built-in method __sizeof__ of AttributeError object>
    __str__ = <method-wrapper '__str__' of AttributeError object>
    __subclasshook__ = <built-in method __subclasshook__ of type object>
    __suppress_context__ = False
    __traceback__ = <traceback object>
    args = ("'NoneType' object has no attribute 'removeEventFilter'",)
    with_traceback = <built-in method with_traceback of AttributeError object>

The above is a description of an error in a Python program.  Here is
the original traceback:

Traceback (most recent call last):
  File "C:\Users\EyeOd\AppData\Roaming\krita\pykrita\dockerundercursor\dockertogglemanager.py", line 28, in finalSetup
    self.setMonitor()
  File "C:\Users\EyeOd\AppData\Roaming\krita\pykrita\dockerundercursor\dockertogglemanager.py", line 34, in setMonitor
    self.widget.removeEventFilter(self.monitor)
AttributeError: 'NoneType' object has no attribute 'removeEventFilter'

its mean that you used wrong docker name. maybe some docker have disable or renamed. the simplest solution is click save button in settings panel, it will refresh .action file.

At the same time, i uploaded new code that block this error, you can update it.

1 Like

Why can’t I edit my post :thinking:, I think it’s outdated.

@Aqao I think there’s a 30 day limit on editing posts. This has been noticed before.

1 Like

Try now ! I enabled unlimited edit for owner in this particular category.

2 Likes