Bug 399435 - crash when rightclicking the animation curves docker
Summary: crash when rightclicking the animation curves docker
Status: RESOLVED FIXED
Alias: None
Product: krita
Classification: Applications
Component: Dockers (show other bugs)
Version: git master (please specify the git hash!)
Platform: Other Linux
: NOR crash
Target Milestone: ---
Assignee: Eoin O'Neill
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2018-10-06 11:37 UTC by wolthera
Modified: 2018-11-20 08:57 UTC (History)
2 users (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments
(Video example) (497.61 KB, video/mp4)
2018-10-10 20:46 UTC, mvowada
Details

Note You need to log in before you can comment on or make changes to this bug.
Description wolthera 2018-10-06 11:37:54 UTC
No idea what happened here. Went from my custom work space to the animation workspace, and boom, crash.

GDB backtrace
-------------------------------------------------

Thread 1 "krita" received signal SIGABRT, Aborted.
__GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
51      ../sysdeps/unix/sysv/linux/raise.c: No such file or directory.
(gdb) thread apply all backtrace

Thread 9 (Thread 0x7fff9bfff700 (LWP 15255)):
#0  0x00007ffff4112bf9 in __GI___poll (fds=0x7fff90003ce0, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007fffebe79439 in ?? () from /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007fffebe7954c in g_main_context_iteration () from /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007ffff4c65a9b in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#4  0x00007ffff4c09dea in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#5  0x00007ffff4a34b8a in QThread::exec() () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#6  0x00007ffff4a3faab in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#7  0x00007fffed7756db in start_thread (arg=0x7fff9bfff700) at pthread_create.c:463
#8  0x00007ffff411f88f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 8 (Thread 0x7fffa0d93700 (LWP 15246)):
#0  0x00007ffff4112bf9 in __GI___poll (fds=0x7fff94005440, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007fffebe79439 in ?? () from /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007fffebe7954c in g_main_context_iteration () from /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007ffff4c65a7f in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#4  0x00007ffff4c09dea in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#5  0x00007ffff4a34b8a in QThread::exec() () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#6  0x00007fffd90c6906 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Quick.so.5
#7  0x00007ffff4a3faab in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#8  0x00007fffed7756db in start_thread (arg=0x7fffa0d93700) at pthread_create.c:463
#9  0x00007ffff411f88f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 7 (Thread 0x7fffaee1d700 (LWP 15241)):
#0  0x00007ffff4112bf9 in __GI___poll (fds=0x7fff9c004ee0, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007fffebe79439 in ?? () from /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007fffebe7954c in g_main_context_iteration () from /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007ffff4c65a7f in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#4  0x00007ffff4c09dea in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) ()
---Type <return> to continue, or q <return> to quit---
   from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#5  0x00007ffff4a34b8a in QThread::exec() () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#6  0x00007fffd8c4b8b5 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Qml.so.5
#7  0x00007ffff4a3faab in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#8  0x00007fffed7756db in start_thread (arg=0x7fffaee1d700) at pthread_create.c:463
#9  0x00007ffff411f88f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 6 (Thread 0x7fffae61c700 (LWP 15216)):
#0  syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
#1  0x00007ffff4a33840 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#2  0x00007ffff4a336b2 in QSemaphore::tryAcquire(int, int) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#3  0x00007ffff1adede3 in KisTileDataSwapper::waitForWork (this=<optimized out>)
    at /home/wolthera/krita/src/libs/image/tiles3/swap/kis_tile_data_swapper.cpp:86
#4  0x00007ffff1adf03a in KisTileDataSwapper::run (
    this=0x7ffff2188c80 <_ZZN12_GLOBAL__N_116Q_QGS_s_instance13innerFunctionEvE6holder+64>)
    at /home/wolthera/krita/src/libs/image/tiles3/swap/kis_tile_data_swapper.cpp:92
#5  0x00007ffff4a3faab in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#6  0x00007fffed7756db in start_thread (arg=0x7fffae61c700) at pthread_create.c:463
#7  0x00007ffff411f88f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 4 (Thread 0x7fffb5d09700 (LWP 15210)):
#0  0x00007ffff4112bf9 in __GI___poll (fds=0x7fffb0004ae0, nfds=1, timeout=9991) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007fffebe79439 in ?? () from /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007fffebe7954c in g_main_context_iteration () from /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007ffff4c65a7f in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#4  0x00007ffff4c09dea in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#5  0x00007ffff4a34b8a in QThread::exec() () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#6  0x00007ffff4a3faab in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#7  0x00007fffed7756db in start_thread (arg=0x7fffb5d09700) at pthread_create.c:463
#8  0x00007ffff411f88f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 3 (Thread 0x7fffce0dd700 (LWP 15056)):
#0  0x00007ffff4112bf9 in __GI___poll (fds=0x7fffc80194b0, nfds=4, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
---Type <return> to continue, or q <return> to quit---
#1  0x00007fffebe79439 in ?? () from /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007fffebe7954c in g_main_context_iteration () from /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007ffff4c65a7f in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#4  0x00007ffff4c09dea in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#5  0x00007ffff4a34b8a in QThread::exec() () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#6  0x00007fffed9a2e45 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5DBus.so.5
#7  0x00007ffff4a3faab in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#8  0x00007fffed7756db in start_thread (arg=0x7fffce0dd700) at pthread_create.c:463
#9  0x00007ffff411f88f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 2 (Thread 0x7fffdbfed700 (LWP 15051)):
#0  0x00007ffff4112bf9 in __GI___poll (fds=0x7fffdbfecc68, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007ffff23e8747 in ?? () from /usr/lib/x86_64-linux-gnu/libxcb.so.1
#2  0x00007ffff23ea36a in xcb_wait_for_event () from /usr/lib/x86_64-linux-gnu/libxcb.so.1
#3  0x00007fffde95a129 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5
#4  0x00007ffff4a3faab in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#5  0x00007fffed7756db in start_thread (arg=0x7fffdbfed700) at pthread_create.c:463
#6  0x00007ffff411f88f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 1 (Thread 0x7ffff7f92cc0 (LWP 14946)):
#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
#1  0x00007ffff403e801 in __GI_abort () at abort.c:79
#2  0x00007ffff4a105db in QMessageLogger::fatal(char const*, ...) const () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#3  0x00007ffff4a0fdd1 in qt_assert(char const*, char const*, int) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#4  0x00007ffff1d3555a in KisPaintDevice::keyframeChannel (this=<optimized out>)
    at /home/wolthera/krita/src/libs/image/kis_paint_device.cc:1967
#5  0x00007ffff1cc12c6 in KisLayer::createThumbnailForFrame (this=0x55557acce1f0, w=177, h=200, time=0)
    at /home/wolthera/krita/src/libs/image/kis_layer.cc:947
#6  0x00007fffb9cce919 in TimelineFramesModel::data (this=<optimized out>, index=..., role=<optimized out>)
    at /home/wolthera/krita/src/plugins/dockers/animation/timeline_frames_model.cpp:399
#7  0x00007ffff1676e98 in QModelIndex::data (arole=257, this=0x7fffffffd550)
    at /usr/include/x86_64-linux-gnu/qt5/QtCore/qabstractitemmodel.h:455
#8  KoIconToolTip::createDocument (this=0x555567219008, index=...)
---Type <return> to continue, or q <return> to quit---
    at /home/wolthera/krita/src/libs/widgets/KoIconToolTip.cpp:44
#9  0x00007ffff16941a9 in KoItemToolTip::showTip (this=0x555567219008, widget=0x55556720d4a0, pos=..., option=..., 
    index=...) at /home/wolthera/krita/src/libs/widgets/KoItemToolTip.cpp:60
#10 0x00007fffb9cda38e in TimelineFramesView::viewportEvent (this=0x55556720d4a0, event=0x7fffffffd980)
    at /home/wolthera/krita/src/plugins/dockers/animation/timeline_frames_view.cpp:1497
#11 0x00007ffff4c0b83d in QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#12 0x00007ffff5998e65 in QApplicationPrivate::notify_helper(QObject*, QEvent*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#13 0x00007ffff59a152a in QApplication::notify(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#14 0x00007ffff73d04f7 in KisApplication::notify (this=<optimized out>, receiver=0x55556722a0b0, event=0x7fffffffd980)
    at /home/wolthera/krita/src/libs/ui/KisApplication.cpp:610
#15 0x00007ffff4c0bab8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#16 0x00007ffff599ed48 in QApplication::event(QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#17 0x00007ffff7451ba2 in QtSingleApplication::event (this=<optimized out>, event=<optimized out>)
    at /home/wolthera/krita/src/libs/ui/qtsingleapplication/qtsingleapplication.cpp:128
#18 0x00007ffff5998e8c in QApplicationPrivate::notify_helper(QObject*, QEvent*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#19 0x00007ffff59a045f in QApplication::notify(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#20 0x00007ffff73d04f7 in KisApplication::notify (this=<optimized out>, receiver=0x7fffffffe0b0, event=0x7fffffffdcc0)
    at /home/wolthera/krita/src/libs/ui/KisApplication.cpp:610
#21 0x00007ffff4c0bab8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#22 0x00007ffff4c64f0e in QTimerInfoList::activateTimers() () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#23 0x00007ffff4c65709 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#24 0x00007fffebe79287 in g_main_context_dispatch () from /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#25 0x00007fffebe794c0 in ?? () from /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#26 0x00007fffebe7954c in g_main_context_iteration () from /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#27 0x00007ffff4c65a7f in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#28 0x00007fffde9e4ed1 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5
#29 0x00007ffff4c09dea in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#30 0x00007ffff4c12fa0 in QCoreApplication::exec() () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
---Type <return> to continue, or q <return> to quit---
#31 0x0000555555e8d1da in main (argc=<optimized out>, argv=0x7fffffffe218) at /home/wolthera/krita/src/krita/main.cc:435
(gdb)
Comment 1 wolthera 2018-10-06 11:43:26 UTC
No, it seems to be happening when I rightclick the timeline ????
Comment 2 Halla Rempt 2018-10-06 18:09:37 UTC
Git commit b3a62eb6d7863de12d2f94091b48c5ec5de47c85 by Boudewijn Rempt.
Committed on 06/10/2018 at 18:09.
Pushed by rempt into branch 'master'.

Since the places where this method is called check whether 0 is
returned or not, it's wrong to assert here.

M  +1    -1    libs/image/kis_layer.cc
M  +4    -2    libs/image/kis_paint_device.cc
M  +1    -1    libs/image/kis_paint_device.h

https://commits.kde.org/krita/b3a62eb6d7863de12d2f94091b48c5ec5de47c85
Comment 3 Halla Rempt 2018-10-10 09:57:08 UTC
Git commit b8dae8a7476734b306c80b8e8680916af16a2000 by Boudewijn Rempt.
Committed on 10/10/2018 at 07:39.
Pushed by rempt into branch 'krita/4.1'.

Since the places where this method is called check whether 0 is
returned or not, it's wrong to assert here.

(cherry picked from commit b3a62eb6d7863de12d2f94091b48c5ec5de47c85)

M  +1    -1    libs/image/kis_layer.cc
M  +4    -2    libs/image/kis_paint_device.cc
M  +1    -1    libs/image/kis_paint_device.h

https://commits.kde.org/krita/b8dae8a7476734b306c80b8e8680916af16a2000
Comment 4 mvowada 2018-10-10 20:46:21 UTC
Created attachment 115551 [details]
(Video example)

(Krita 4.2.0-pre-alpha (git 4a0b033) - Ubuntu 14.04 LTS, Unity)

Hi all, possibly the same issue still affects the "Animation Curves" docker in the latest nightly build? (see video)

    1. right-click over the timeline of the "Animation Curves" docker

Actual Results: assert abort
Comment 5 Halla Rempt 2018-10-11 09:11:03 UTC
That's actually a completely different thing...

Thread 1 (Thread 0x7f59f6e7b980 (LWP 32568)):
[KCrash Handler]
#6  0x00007f59ea4e3f67 in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:55
#7  0x00007f59ea4e533a in __GI_abort () at abort.c:78
#8  0x00007f59eb17ef1c in QMessageLogger::fatal(char const*, ...) const () from /usr/lib64/libQt5Core.so.5
#9  0x00007f59f1b22e04 in kis_assert_common(char const*, char const*, int, bool, bool) () from /home/boud/dev/i-krita/lib64/libkritaglobal.so.18
#10 0x00007f59f1b2315e in kis_safe_assert_recoverable(char const*, char const*, int) () from /home/boud/dev/i-krita/lib64/libkritaglobal.so.18
#11 0x00007f59f6038867 in KisActionManager::safePopulateMenu(QMenu*, QString const&, KisActionManager*) () from /home/boud/dev/i-krita/lib64/libkritaui.so.18
#12 0x00007f59be98e025 in TimelineRulerHeader::mousePressEvent(QMouseEvent*) () from /home/boud/dev/i-krita/lib64/kritaplugins/kritaanimationdocker.so
#13 0x00007f59ec338ca0 in QWidget::event(QEvent*) () from /usr/lib64/libQt5Widgets.so.5
#14 0x00007f59ec3dc39e in QFrame::event(QEvent*) () from /usr/lib64/libQt5Widgets.so.5
#15 0x00007f59ec53b12b in QAbstractItemView::viewportEvent(QEvent*) () from /usr/lib64/libQt5Widgets.so.5
#16 0x00007f59ec549dd0 in QHeaderView::viewportEvent(QEvent*) () from /usr/lib64/libQt5Widgets.so.5
#17 0x00007f59eb35276e in QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) () from /usr/lib64/libQt5Core.so.5
#18 0x00007f59ec2fd185 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib64/libQt5Widgets.so.5
#19 0x00007f59ec304718 in QApplication::notify(QObject*, QEvent*) () from /usr/lib64/libQt5Widgets.so.5
#20 0x00007f59f6255e3b in KisApplication::notify(QObject*, QEvent*) () from /home/boud/dev/i-krita/lib64/libkritaui.so.18
#21 0x00007f59eb3528f5 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib64/libQt5Core.so.5
#22 0x00007f59ec3031e9 in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) () from /usr/lib64/libQt5Widgets.so.5
#23 0x00007f59ec35149f in ?? () from /usr/lib64/libQt5Widgets.so.5
#24 0x00007f59ec353993 in ?? () from /usr/lib64/libQt5Widgets.so.5
#25 0x00007f59ec2fd1ac in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib64/libQt5Widgets.so.5
#26 0x00007f59ec303b52 in QApplication::notify(QObject*, QEvent*) () from /usr/lib64/libQt5Widgets.so.5
#27 0x00007f59f6255e3b in KisApplication::notify(QObject*, QEvent*) () from /home/boud/dev/i-krita/lib64/libkritaui.so.18
#28 0x00007f59eb3528f5 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib64/libQt5Core.so.5
#29 0x00007f59eb8eb74f in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) () from /usr/lib64/libQt5Gui.so.5
#30 0x00007f59eb8ed855 in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) () from /usr/lib64/libQt5Gui.so.5
#31 0x00007f59eb8cc7eb in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQt5Gui.so.5
#32 0x00007f59dfb3108b in ?? () from /usr/lib64/libQt5XcbQpa.so.5
#33 0x00007f59eb35108b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQt5Core.so.5
#34 0x00007f59eb359770 in QCoreApplication::exec() () from /usr/lib64/libQt5Core.so.5
#35 0x000000000040af08 in main ()
Comment 6 Eoin O'Neill 2018-10-12 13:03:43 UTC
Git commit 86039f8ce3b273c0cab35832d08a147bfdd12d6c by Eoin O'Neill.
Committed on 12/10/2018 at 13:03.
Pushed by eoinoneill into branch 'master'.

Fixed safe-assert on right click context menu in animation
curves docker.

Note: There should be another way to reuse animation
timeline headers without sharing menu behavior between
dockers that utilize them. For now, simply checking
for an action manager is a simple work around for avoiding
invalid menu population inside of kis_anim_curves_docker.

M  +10   -0    plugins/dockers/animation/timeline_ruler_header.cpp

https://commits.kde.org/krita/86039f8ce3b273c0cab35832d08a147bfdd12d6c
Comment 7 Halla Rempt 2018-11-20 08:57:36 UTC
Git commit abd10fde65a9692c4a63d4995fcfabbf62a6878a by Boudewijn Rempt, on behalf of Eoin O'Neill.
Committed on 20/11/2018 at 08:21.
Pushed by rempt into branch 'krita/4.1'.

Fixed safe-assert on right click context menu in animation
curves docker.

Note: There should be another way to reuse animation
timeline headers without sharing menu behavior between
dockers that utilize them. For now, simply checking
for an action manager is a simple work around for avoiding
invalid menu population inside of kis_anim_curves_docker.

M  +10   -0    plugins/dockers/animation/timeline_ruler_header.cpp

https://commits.kde.org/krita/abd10fde65a9692c4a63d4995fcfabbf62a6878a