Bug#669712: [freeplane] RE: freeplane: Visual corruption after scrolling mindmap

Felix Natter fnatter at gmx.net
Sat Jun 22 10:07:23 UTC 2013


Omega Weapon <omegaphil at gmail.com> writes:

hello Omega,

> On 18/06/13 19:39, Felix Natter wrote:
>>
>> Since it might not be a Freeplane issue, I cannot promise that your
>> keyboard issue gets better (or even that it doesn't get worse) :-/ But
>> if it's a reproducible Freeplane issue, then Dimitry will probably (at
>> least try to) fix it.
>
> I have tried to make a test case to reproduce it, but its not happening -
> both fast node creation and node moving hasn't triggered the problem in a
> new or old mindmap (my experience with the issue is its pretty
> non-deterministic, but at times it hits frequently - i.e. happens, restart
> freeplane, happens again in a minute).
>
> The problem started at some point last year, here are my notes up until
> February, where I gave up tracking it:
>
> 30.12.12: Just had my first failure under OpenJDK v7 - have to assume its
> Freeplane's problem.
> 08.02.13: Seems to be more easily triggerable when I am using a chord with
> the keyboard - e.g. Cntrl + Up/down to move nodes up/down etc. Had this
> twice quickly in a row when this happened.
> 12.02.13: Happened repeatedly whilst I was making C mindmap Language data
> types char*/string escapes nodes.
> 15.02.13: Probably happens if you press a key between node creation and
> finalisation - i.e. create a node or type text into a node and enter then
> press another key before the node is 'fixed'.
> 27.02.13: Search on 'sizeof' in C programming mindmap - a few Cntrl+Gs
> leads to this issue

I talked to Dimitry, the project lead, about the issue. _Roughly_ it's
like this:

- there is an EventQueue to make sure that the input order is preserved
- an EventBuffer/KeyEventDispatcher waits for the component to get focus
  or for an ESCAPE key press
- There is only one Thread, so it's not a multi-threading issue.

=> *a workaround is to press ESCAPE in this case :-)*

> I had hoped to learn Java and then hook into keypresses - some completely
> clueless notes:

Dimitry tried hard to reproduce this with a fixed set of steps, and he
didn't succeed, so it may be hard to do :-(

> ====================================================================
>
> grep -iInr 'getNodeKeyListener'
> src/org/freeplane/view/swing/ui/UserInputListenerFactory.java:192: public
> KeyListener getNodeKeyListener() {
> src/org/freeplane/view/swing/map/NodeView.java:1126:
> mainView.addKeyListener(userInputListenerFactory.getNodeKeyListener());
> src/org/freeplane/core/ui/IUserInputListenerFactory.java:58: KeyListener
> getNodeKeyListener();
>
> These are under the freeplane source
> directory. 'src/org/freeplane/core/ui/IUserInputListenerFactory.java' looks
> to be the initial interface which ties Java functionality (KeyListener)
> with a method. It looks like
> src/org/freeplane/view/swing/ui/UserInputListenerFactory.java' might allow
> me to insert code on keypresses, but theres nothing about keypress events,
> just method calls - so it might not be doable without creating my own
> KeyListener method?

I am a Java dev myself, and I don't know how to fix this. I think you
have to dive really deeply into swing _and_ into the freeplane codebase
(like Dimitry does) in order to fix this.

> ====================================================================
>
>
>>> (At
>>> work I tried a recent version and they'd changed the way things were
>>> rendered, making it a lot less space efficient etc - went straight back to
>>> the 'current' version).
>>
>> Do you refer to 1.3.x vs 1.2.x or 1.2.x vs 1.1.x?
>>
>> Anyway, IMHO this is the price for high level java programming and a
>> rich feature set. Or are you referring to "screen space"?
>
> Screen space - hence visual comment. I'll stop here now since its been some
> months since I tested and my memory is hazy - quick testing right now
> on

I think you can hide every sub-window in Freeplane. Freeplane 1.3.x (not
yet released) will be even more flexible as every subwindow can be
arranged independently.

> the work Windows machine shows that nodes are no longer bubbles, automatic
> formatting style appears to have changed, icons are not on the side closest
> the centre (which is where my eyes scan), etc etc... I guess all that is
> just a project to fight to get the appearance back to normal. I also
> remember having to mess with DPI to get a similar size, but it looks OK now
> in this test.

If you have a question concerning the new features that you can't figure
out yourself, you can post here:
  http://sourceforge.net/apps/phpbb/freeplane/viewforum.php?f=1

>>> I was imagining I'd need to get C++ and Java progression to fight the
>>> keyboard issue.
>>
>> Does the issue also occur with other Java software?
>
> I havent seen this in anything else - freeplane is by far my most used Java
> program, but I use Eclipse + PyDev fairly often so I should have had this
> happen a few times by now if the problem was more widespread.

According to the above, the keyboard issue is not a JDK issue, but
rather a swing/freeplane issue.

> Thanks!

You're welcome :-)

Best Regards,
-- 
Felix Natter



More information about the pkg-java-maintainers mailing list