Review Request 123878: Introduction of a Concentration mode

Milian Wolff mail at milianw.de
Fri Jun 5 16:18:11 UTC 2015


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://git.reviewboard.kde.org/r/123878/#review81236
-----------------------------------------------------------


just tested it, some comments:

- you also want to change the ALT shortcut for the quickfixes i.e. assistants now, i.e. ALT + 0 etc. should now be something else I guess
- should the setting be remembered across restarts?
- should a dialog tell the user that he can press meta + c again to get out of the concentration mode (if he pressed it accidentally, similar to ctrl + m to (un)hide the menu)
- otherwise, I like it. 

and it crashed after pressing meta+c: three times in a row - just tested it and could reproduce it:

Application: KDevelop (kdevelop), signal: Segmentation fault
Using host libthread_db library "/usr/lib/libthread_db.so.1".
[Current thread is 1 (Thread 0x7f0a40365800 (LWP 25046))]

Thread 10 (Thread 0x7f0a1e4ea700 (LWP 25047)):
#0  0x00007f0a36385e8d in poll () from /usr/lib/libc.so.6
#1  0x00007f0a2d8059f2 in ?? () from /usr/lib/libxcb.so.1
#2  0x00007f0a2d80756f in xcb_wait_for_event () from /usr/lib/libxcb.so.1
#3  0x00007f0a1f5cf089 in ?? () from /usr/lib/qt/plugins/platforms/libqxcb.so
#4  0x00007f0a36f8508e in ?? () from /usr/lib/libQt5Core.so.5
#5  0x00007f0a2eb3e354 in start_thread () from /usr/lib/libpthread.so.0
#6  0x00007f0a3638ebfd in clone () from /usr/lib/libc.so.6

Thread 9 (Thread 0x7f0a0dc49700 (LWP 25049)):
#0  0x00007f0a2eb43d18 in pthread_cond_timedwait@@GLIBC_2.3.2 () from /usr/lib/libpthread.so.0
#1  0x00007f0a36f86256 in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib/libQt5Core.so.5
#2  0x00007f0a347f4545 in KDevelop::DUChainPrivate::CleanupThread::run (this=0x51dbb80) at /home/milian/projects/kf5/src/extragear/kdevelop/kdevplatform/language/duchain/duchain.cpp:277
#3  0x00007f0a36f8508e in ?? () from /usr/lib/libQt5Core.so.5
#4  0x00007f0a2eb3e354 in start_thread () from /usr/lib/libpthread.so.0
#5  0x00007f0a3638ebfd in clone () from /usr/lib/libc.so.6

Thread 8 (Thread 0x7f0a07b91700 (LWP 25050)):
#0  0x00007f0a36385e8d in poll () from /usr/lib/libc.so.6
#1  0x00007f0a2bf75c7c in ?? () from /usr/lib/libglib-2.0.so.0
#2  0x00007f0a2bf75d8c in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#3  0x00007f0a371bbcff in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Core.so.5
#4  0x00007f0a37161ffa in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Core.so.5
#5  0x00007f0a36f801a4 in QThread::exec() () from /usr/lib/libQt5Core.so.5
#6  0x00007f0a36f8508e in ?? () from /usr/lib/libQt5Core.so.5
#7  0x00007f0a2eb3e354 in start_thread () from /usr/lib/libpthread.so.0
#8  0x00007f0a3638ebfd in clone () from /usr/lib/libc.so.6

Thread 7 (Thread 0x7f0a07390700 (LWP 25051)):
#0  0x00007f0a36387b03 in select () from /usr/lib/libc.so.6
#1  0x00007f0a370f87e0 in ?? () from /usr/lib/libQt5Core.so.5
#2  0x00007f0a36f8508e in ?? () from /usr/lib/libQt5Core.so.5
#3  0x00007f0a2eb3e354 in start_thread () from /usr/lib/libpthread.so.0
#4  0x00007f0a3638ebfd in clone () from /usr/lib/libc.so.6

Thread 6 (Thread 0x7f09f335f700 (LWP 25055)):
#0  0x00007f0a36385e8d in poll () from /usr/lib/libc.so.6
#1  0x00007f0a2bf75c7c in ?? () from /usr/lib/libglib-2.0.so.0
#2  0x00007f0a2bf75d8c in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#3  0x00007f0a371bbd1b in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Core.so.5
#4  0x00007f0a37161ffa in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Core.so.5
#5  0x00007f0a36f801a4 in QThread::exec() () from /usr/lib/libQt5Core.so.5
#6  0x00007f0a3492f1f4 in KDevelop::CompletionWorkerThread::run (this=0x54e3970) at /home/milian/projects/kf5/src/extragear/kdevelop/kdevplatform/language/codecompletion/codecompletionmodel.cpp:83
#7  0x00007f0a36f8508e in ?? () from /usr/lib/libQt5Core.so.5
#8  0x00007f0a2eb3e354 in start_thread () from /usr/lib/libpthread.so.0
#9  0x00007f0a3638ebfd in clone () from /usr/lib/libc.so.6

Thread 5 (Thread 0x7f09eb494700 (LWP 25065)):
#0  0x00007f0a36385e8d in poll () from /usr/lib/libc.so.6
#1  0x00007f0a2bf75c7c in ?? () from /usr/lib/libglib-2.0.so.0
#2  0x00007f0a2bf75d8c in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#3  0x00007f0a371bbcff in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Core.so.5
#4  0x00007f0a37161ffa in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Core.so.5
#5  0x00007f0a36f801a4 in QThread::exec() () from /usr/lib/libQt5Core.so.5
#6  0x00007f0a3492f1f4 in KDevelop::CompletionWorkerThread::run (this=0x5ee3ce0) at /home/milian/projects/kf5/src/extragear/kdevelop/kdevplatform/language/codecompletion/codecompletionmodel.cpp:83
#7  0x00007f0a36f8508e in ?? () from /usr/lib/libQt5Core.so.5
#8  0x00007f0a2eb3e354 in start_thread () from /usr/lib/libpthread.so.0
#9  0x00007f0a3638ebfd in clone () from /usr/lib/libc.so.6

Thread 4 (Thread 0x7f09eac93700 (LWP 25073)):
#0  0x00007f0a2eb4396f in pthread_cond_wait@@GLIBC_2.3.2 () from /usr/lib/libpthread.so.0
#1  0x00007f0a36f8631b in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib/libQt5Core.so.5
#2  0x00007f0a32d8c01f in ThreadWeaver::Weaver::blockThreadUntilJobsAreBeingAssigned_locked (this=0x4317ea0, th=0x8365340) at /home/milian/projects/kf5/src/frameworks/threadweaver/src/weaver.cpp:594
#3  0x00007f0a32d8be8e in ThreadWeaver::Weaver::takeFirstAvailableJobOrSuspendOrWait (this=0x4317ea0, th=0x8365340, threadWasBusy=true, suspendIfInactive=false, justReturning=false) at /home/milian/projects/kf5/src/frameworks/threadweaver/src/weaver.cpp:554
#4  0x00007f0a32d96184 in ThreadWeaver::WorkingHardState::applyForWork (this=0x4318250, th=0x8365340, wasBusy=true) at /home/milian/projects/kf5/src/frameworks/threadweaver/src/workinghardstate.cpp:66
#5  0x00007f0a32d963f5 in non-virtual thunk to ThreadWeaver::WorkingHardState::applyForWork(ThreadWeaver::Thread*, bool) () at /home/milian/projects/kf5/src/frameworks/threadweaver/src/workinghardstate.cpp:61
#6  0x00007f0a32d8c192 in ThreadWeaver::Weaver::applyForWork (this=0x4317ea0, th=0x8365340, wasBusy=true) at /home/milian/projects/kf5/src/frameworks/threadweaver/src/weaver.cpp:568
#7  0x00007f0a32d91665 in ThreadWeaver::Thread::run (this=0x8365340) at /home/milian/projects/kf5/src/frameworks/threadweaver/src/thread.cpp:103
#8  0x00007f0a36f8508e in ?? () from /usr/lib/libQt5Core.so.5
#9  0x00007f0a2eb3e354 in start_thread () from /usr/lib/libpthread.so.0
#10 0x00007f0a3638ebfd in clone () from /usr/lib/libc.so.6

Thread 3 (Thread 0x7f09e0bce700 (LWP 25075)):
#0  0x00007f0a2eb4396f in pthread_cond_wait@@GLIBC_2.3.2 () from /usr/lib/libpthread.so.0
#1  0x00007f0a36f8631b in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib/libQt5Core.so.5
#2  0x00007f0a32d8c01f in ThreadWeaver::Weaver::blockThreadUntilJobsAreBeingAssigned_locked (this=0x4317ea0, th=0x7f09dc002d70) at /home/milian/projects/kf5/src/frameworks/threadweaver/src/weaver.cpp:594
#3  0x00007f0a32d8be8e in ThreadWeaver::Weaver::takeFirstAvailableJobOrSuspendOrWait (this=0x4317ea0, th=0x7f09dc002d70, threadWasBusy=false, suspendIfInactive=false, justReturning=false) at /home/milian/projects/kf5/src/frameworks/threadweaver/src/weaver.cpp:554
#4  0x00007f0a32d96184 in ThreadWeaver::WorkingHardState::applyForWork (this=0x4318250, th=0x7f09dc002d70, wasBusy=false) at /home/milian/projects/kf5/src/frameworks/threadweaver/src/workinghardstate.cpp:66
#5  0x00007f0a32d963f5 in non-virtual thunk to ThreadWeaver::WorkingHardState::applyForWork(ThreadWeaver::Thread*, bool) () at /home/milian/projects/kf5/src/frameworks/threadweaver/src/workinghardstate.cpp:61
#6  0x00007f0a32d8c192 in ThreadWeaver::Weaver::applyForWork (this=0x4317ea0, th=0x7f09dc002d70, wasBusy=false) at /home/milian/projects/kf5/src/frameworks/threadweaver/src/weaver.cpp:568
#7  0x00007f0a32d9633a in ThreadWeaver::WorkingHardState::applyForWork (this=0x4318250, th=0x7f09dc002d70, wasBusy=true) at /home/milian/projects/kf5/src/frameworks/threadweaver/src/workinghardstate.cpp:73
#8  0x00007f0a32d963f5 in non-virtual thunk to ThreadWeaver::WorkingHardState::applyForWork(ThreadWeaver::Thread*, bool) () at /home/milian/projects/kf5/src/frameworks/threadweaver/src/workinghardstate.cpp:61
#9  0x00007f0a32d8c192 in ThreadWeaver::Weaver::applyForWork (this=0x4317ea0, th=0x7f09dc002d70, wasBusy=true) at /home/milian/projects/kf5/src/frameworks/threadweaver/src/weaver.cpp:568
#10 0x00007f0a32d91665 in ThreadWeaver::Thread::run (this=0x7f09dc002d70) at /home/milian/projects/kf5/src/frameworks/threadweaver/src/thread.cpp:103
#11 0x00007f0a36f8508e in ?? () from /usr/lib/libQt5Core.so.5
#12 0x00007f0a2eb3e354 in start_thread () from /usr/lib/libpthread.so.0
#13 0x00007f0a3638ebfd in clone () from /usr/lib/libc.so.6

Thread 2 (Thread 0x7f0a06b8f700 (LWP 30399)):
#0  0x00007f0a2eb4396f in pthread_cond_wait@@GLIBC_2.3.2 () from /usr/lib/libpthread.so.0
#1  0x00007f0a331394a4 in ?? () from /usr/lib/libQt5Script.so.5
#2  0x00007f0a331394e9 in ?? () from /usr/lib/libQt5Script.so.5
#3  0x00007f0a2eb3e354 in start_thread () from /usr/lib/libpthread.so.0
#4  0x00007f0a3638ebfd in clone () from /usr/lib/libc.so.6

Thread 1 (Thread 0x7f0a40365800 (LWP 25046)):
[KCrash Handler]
#6  0x00007f0a37e464df in QLayout::addChildWidget(QWidget*) () from /usr/lib/libQt5Widgets.so.5
#7  0x00007f0a37e4661f in QLayout::addWidget(QWidget*) () from /usr/lib/libQt5Widgets.so.5
#8  0x00007f0a3f1fe1f6 in Sublime::MainWindowPrivate::restoreConcentrationMode (this=0x28d3890) at /home/milian/projects/kf5/src/extragear/kdevelop/kdevplatform/sublime/mainwindow_p.cpp:233
#9  0x00007f0a3f207ab3 in QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, void (Sublime::MainWindowPrivate::*)()>::call(void (Sublime::MainWindowPrivate::*)(), Sublime::MainWindowPrivate*, void**) (f=(void (Sublime::MainWindowPrivate::*)(Sublime::MainWindowPrivate * const)) 0x7f0a3f1fddc0 <Sublime::MainWindowPrivate::restoreConcentrationMode()>, o=0x28d3890, arg=0x7fff99dfc500) at /usr/include/qt/QtCore/qobjectdefs_impl.h:500
#10 0x00007f0a3f207a20 in QtPrivate::FunctionPointer<void (Sublime::MainWindowPrivate::*)()>::call<QtPrivate::List<>, void>(void (Sublime::MainWindowPrivate::*)(), Sublime::MainWindowPrivate*, void**) (f=(void (Sublime::MainWindowPrivate::*)(Sublime::MainWindowPrivate * const)) 0x7f0a3f1fddc0 <Sublime::MainWindowPrivate::restoreConcentrationMode()>, o=0x28d3890, arg=0x7fff99dfc500) at /usr/include/qt/QtCore/qobjectdefs_impl.h:519
#11 0x00007f0a3f207948 in QtPrivate::QSlotObject<void (Sublime::MainWindowPrivate::*)(), QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) (which=1, this_=0x26f5af0, r=0x28d3890, a=0x7fff99dfc500, ret=0x0) at /usr/include/qt/QtCore/qobject_impl.h:143
#12 0x00007f0a37194aa7 in QMetaObject::activate(QObject*, int, int, void**) () from /usr/lib/libQt5Core.so.5
#13 0x00007f0a37e1cdc2 in QAction::toggled(bool) () from /usr/lib/libQt5Widgets.so.5
#14 0x00007f0a37e1f0c4 in QAction::setChecked(bool) () from /usr/lib/libQt5Widgets.so.5
#15 0x00007f0a37e1f1b7 in QAction::activate(QAction::ActionEvent) () from /usr/lib/libQt5Widgets.so.5
#16 0x00007f0a37e1f7ff in QAction::event(QEvent*) () from /usr/lib/libQt5Widgets.so.5
#17 0x00007f0a37e2662c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQt5Widgets.so.5
#18 0x00007f0a37e2bd10 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQt5Widgets.so.5
#19 0x00007f0a3716457b in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib/libQt5Core.so.5
#20 0x00007f0a376aca98 in QShortcutMap::dispatchEvent(QKeyEvent*) () from /usr/lib/libQt5Gui.so.5
#21 0x00007f0a376acbd1 in QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) () from /usr/lib/libQt5Gui.so.5
#22 0x00007f0a37e2bc08 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQt5Widgets.so.5
#23 0x00007f0a3716457b in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib/libQt5Core.so.5
#24 0x00007f0a376808f7 in QGuiApplicationPrivate::processKeyEvent(QWindowSystemInterfacePrivate::KeyEvent*) () from /usr/lib/libQt5Gui.so.5
#25 0x00007f0a37685895 in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) () from /usr/lib/libQt5Gui.so.5
#26 0x00007f0a3766c1e8 in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Gui.so.5
#27 0x00007f0a1f5fb500 in ?? () from /usr/lib/qt/plugins/platforms/libqxcb.so
#28 0x00007f0a2bf759fd in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#29 0x00007f0a2bf75ce0 in ?? () from /usr/lib/libglib-2.0.so.0
#30 0x00007f0a2bf75d8c in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#31 0x00007f0a371bbcff in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Core.so.5
#32 0x00007f0a37161ffa in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Core.so.5
#33 0x00007f0a37169a4c in QCoreApplication::exec() () from /usr/lib/libQt5Core.so.5
#34 0x0000000000415a83 in main (argc=3, argv=0x7fff99dfe898) at /home/milian/projects/kf5/src/extragear/kdevelop/kdevelop/app/main.cpp:618

- Milian Wolff


On May 27, 2015, 10:55 p.m., Aleix Pol Gonzalez wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://git.reviewboard.kde.org/r/123878/
> -----------------------------------------------------------
> 
> (Updated May 27, 2015, 10:55 p.m.)
> 
> 
> Review request for KDevelop and KDE Usability.
> 
> 
> Repository: kdevplatform
> 
> 
> Description
> -------
> 
> One of the perceived problems in KDevelop that affect me the most is that we're visually heavy. And we are. This patch doesn't address this, but I believe it will start to give us some hints on where we want to go.
> 
> This patch, basically adds a new togglable state to the main window, which allows our user to reduce some of the noise in the UI, allowing him to concentrate on what he came to do. This has a big advantage: we get to assume that the user is familiar with the shortcuts.
> What it does:
> 
> * It hides all the toolview handles (not the toolviews).
> * It hides the menu bar. Since I realized I was using Alt+* to access some menus, it's showing the menu when Alt is pressed.
> * It adds a toolbar that lets the user get out of the concentration mode, and also receives the menu widget (with the working sets and area button).
> * Also since I realized I was using some other shortcuts, I took the liberty to adapt them, I think they're far easier to remember than the previous ones.
> * Replaces the container tab bar to work without it (it has a label instead, long story, I know).
> 
> Now it works reasonably well, you can see the screenshot if you want to get an idea without trying the patch. I'm still undecided about whether we want to hide them.
> 
> 
> Diffs
> -----
> 
>   plugins/contextbrowser/browsemanager.cpp 70a3125 
>   sublime/mainwindow.cpp a1acdf3 
>   sublime/mainwindow_p.h 5477091 
>   sublime/mainwindow_p.cpp 3091661 
> 
> Diff: https://git.reviewboard.kde.org/r/123878/diff/
> 
> 
> Testing
> -------
> 
> I've been using it for work during the last few days. It doesn't crash (more) and well, I don't miss most of the things, so it's probably safe to get this in as is.
> 
> 
> File Attachments
> ----------------
> 
> Small Window
>   https://git.reviewboard.kde.org/media/uploaded/files/2015/05/22/f4ee28f6-1e0c-41bc-8d7a-b216d23ca5f4__kdevelop-concentration.png
> Concentration Mode
>   https://git.reviewboard.kde.org/media/uploaded/files/2015/05/22/62c102b1-dbc7-4bd3-9e96-7b866709ca3b__kdevelop-concentration-1.png
> 
> 
> Thanks,
> 
> Aleix Pol Gonzalez
> 
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kdevelop-devel/attachments/20150605/340ef24a/attachment-0001.html>


More information about the KDevelop-devel mailing list