Created attachment 137456 [details] Reverse tracking SUMMARY Dolphin crashes trying to change Trash location STEPS TO REPRODUCE 1. Properties of Trash 2. Edit location 3. Assign a created folder OBSERVED RESULT Crash EXPECTED RESULT SOFTWARE/OS VERSIONS Windows: macOS: Linux/KDE Plasma: (available in About System) KDE Plasma Version: KDE Frameworks Version: Qt Version: ADDITIONAL INFORMATION
Application: dolphin (20.12.3) Qt Version: 5.15.2 Frameworks Version: 5.80.0 Operating System: Linux 5.4.0-70-generic x86_64 Windowing System: X11 Drkonqi Version: 5.21.4 Distribution: KDE neon User Edition 5.21 -- Information about the crash: <En detalle, comente que estaba haciendo cuando la aplicación se cerró.> The crash can be reproduced every time. -- Backtrace: Application: Dolphin (dolphin), signal: Segmentation fault [New LWP 50087] [New LWP 50088] [New LWP 50094] [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". 0x00007f9eea104aff in __GI___poll (fds=0x7ffeb0e44668, nfds=1, timeout=1000) at ../sysdeps/unix/sysv/linux/poll.c:29 [Current thread is 1 (Thread 0x7f9ee31926c0 (LWP 50086))] Thread 4 (Thread 0x7f9ed27fc700 (LWP 50094)): #0 0x00007f9ee5ae12ef in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 #1 0x00007f9ee5ae282b in g_main_context_prepare () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 #2 0x00007f9ee5ae329b in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 #3 0x00007f9ee5ae34a3 in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 #4 0x00007f9ee7e27ffb in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib/x86_64-linux-gnu/libQt5Core.so.5 #5 0x00007f9ee7dcc1eb in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib/x86_64-linux-gnu/libQt5Core.so.5 #6 0x00007f9ee7be6a52 in QThread::exec() () from /lib/x86_64-linux-gnu/libQt5Core.so.5 #7 0x00007f9ee7be7bec in ?? () from /lib/x86_64-linux-gnu/libQt5Core.so.5 #8 0x00007f9ee6561609 in start_thread (arg=<optimized out>) at pthread_create.c:477 #9 0x00007f9eea111293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95 Thread 3 (Thread 0x7f9ee1757700 (LWP 50088)): #0 0x00007f9eea104aff in __GI___poll (fds=0x7f9ed4014f60, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29 #1 0x00007f9ee5ae336e in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 #2 0x00007f9ee5ae34a3 in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 #3 0x00007f9ee7e27ffb in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib/x86_64-linux-gnu/libQt5Core.so.5 #4 0x00007f9ee7dcc1eb in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib/x86_64-linux-gnu/libQt5Core.so.5 #5 0x00007f9ee7be6a52 in QThread::exec() () from /lib/x86_64-linux-gnu/libQt5Core.so.5 #6 0x00007f9ee8e7df4b in ?? () from /lib/x86_64-linux-gnu/libQt5DBus.so.5 #7 0x00007f9ee7be7bec in ?? () from /lib/x86_64-linux-gnu/libQt5Core.so.5 #8 0x00007f9ee6561609 in start_thread (arg=<optimized out>) at pthread_create.c:477 #9 0x00007f9eea111293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95 Thread 2 (Thread 0x7f9ee25c9700 (LWP 50087)): #0 0x00007f9eea104aff in __GI___poll (fds=0x7f9ee25c8be8, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29 #1 0x00007f9ee6597c1a in ?? () from /lib/x86_64-linux-gnu/libxcb.so.1 #2 0x00007f9ee659990a in xcb_wait_for_event () from /lib/x86_64-linux-gnu/libxcb.so.1 #3 0x00007f9ee2b01d58 in ?? () from /lib/x86_64-linux-gnu/libQt5XcbQpa.so.5 #4 0x00007f9ee7be7bec in ?? () from /lib/x86_64-linux-gnu/libQt5Core.so.5 #5 0x00007f9ee6561609 in start_thread (arg=<optimized out>) at pthread_create.c:477 #6 0x00007f9eea111293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95 Thread 1 (Thread 0x7f9ee31926c0 (LWP 50086)): [KCrash Handler] #4 0x00007f9ee94a2e04 in KIconButton::icon() const () from /lib/x86_64-linux-gnu/libKF5IconThemes.so.5 #5 0x00007f9ee9e43121 in KFilePlaceEditDialog::icon() const () from /lib/x86_64-linux-gnu/libKF5KIOFileWidgets.so.5 #6 0x00007f9eea25e08e in PlacesPanel::editEntry (this=0x562f4d2d2540, index=15) at /usr/include/c++/9/bits/atomic_base.h:413 #7 0x00007f9eea25f648 in PlacesPanel::slotItemContextMenuRequested (this=0x562f4d2d2540, index=<optimized out>, pos=...) at ./src/panels/places/placespanel.cpp:268 #8 0x00007f9ee7e046fe in ?? () from /lib/x86_64-linux-gnu/libQt5Core.so.5 #9 0x00007f9ee9f0e56a in KItemListController::itemContextMenuRequested (this=this@entry=0x562f4d7a1380, _t1=<optimized out>, _t2=...) at ./obj-x86_64-linux-gnu/src/dolphinprivate_autogen/Z3MQH7AOBD/moc_kitemlistcontroller.cpp:506 #10 0x00007f9ee9f4295f in KItemListController::onPress (this=this@entry=0x562f4d7a1380, screenPos=..., pos=..., modifiers=modifiers@entry=..., buttons=..., buttons@entry=...) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qpoint.h:133 #11 0x00007f9ee9f43985 in KItemListController::mousePressEvent (transform=..., event=0x7ffeb0e45b40, this=0x562f4d7a1380) at ./src/kitemviews/kitemlistcontroller.cpp:555 #12 KItemListController::mousePressEvent (this=0x562f4d7a1380, event=0x7ffeb0e45b40, transform=...) at ./src/kitemviews/kitemlistcontroller.cpp:538 #13 0x00007f9ee9f45b67 in KItemListController::processEvent (this=this@entry=0x562f4d7a1380, event=event@entry=0x7ffeb0e45b40, transform=...) at ./src/kitemviews/kitemlistcontroller.cpp:1108 #14 0x00007f9ee9f55096 in KItemListView::event (this=0x562f4d7752e0, event=0x7ffeb0e45b40) at ./src/kitemviews/kitemlistview.cpp:933 #15 0x00007f9ee88a4dc3 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /lib/x86_64-linux-gnu/libQt5Widgets.so.5 #16 0x00007f9ee88adbb8 in QApplication::notify(QObject*, QEvent*) () from /lib/x86_64-linux-gnu/libQt5Widgets.so.5 #17 0x00007f9ee7dcd6da in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /lib/x86_64-linux-gnu/libQt5Core.so.5 #18 0x00007f9ee8bd9f73 in ?? () from /lib/x86_64-linux-gnu/libQt5Widgets.so.5 #19 0x00007f9ee8bda3b7 in ?? () from /lib/x86_64-linux-gnu/libQt5Widgets.so.5 #20 0x00007f9ee8be277a in ?? () from /lib/x86_64-linux-gnu/libQt5Widgets.so.5 #21 0x00007f9ee8be29bf in QGraphicsScene::mousePressEvent(QGraphicsSceneMouseEvent*) () from /lib/x86_64-linux-gnu/libQt5Widgets.so.5 #22 0x00007f9ee8bec62a in QGraphicsScene::event(QEvent*) () from /lib/x86_64-linux-gnu/libQt5Widgets.so.5 #23 0x00007f9ee88a4dc3 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /lib/x86_64-linux-gnu/libQt5Widgets.so.5 #24 0x00007f9ee88adbb8 in QApplication::notify(QObject*, QEvent*) () from /lib/x86_64-linux-gnu/libQt5Widgets.so.5 #25 0x00007f9ee7dcd6da in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /lib/x86_64-linux-gnu/libQt5Core.so.5 #26 0x00007f9ee8c099db in QGraphicsView::mousePressEvent(QMouseEvent*) () from /lib/x86_64-linux-gnu/libQt5Widgets.so.5 #27 0x00007f9ee88e7c21 in QWidget::event(QEvent*) () from /lib/x86_64-linux-gnu/libQt5Widgets.so.5 #28 0x00007f9ee8997f82 in QFrame::event(QEvent*) () from /lib/x86_64-linux-gnu/libQt5Widgets.so.5 #29 0x00007f9ee8c0aaa1 in QGraphicsView::viewportEvent(QEvent*) () from /lib/x86_64-linux-gnu/libQt5Widgets.so.5 #30 0x00007f9ee7dcd443 in QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) () from /lib/x86_64-linux-gnu/libQt5Core.so.5 #31 0x00007f9ee88a4db2 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /lib/x86_64-linux-gnu/libQt5Widgets.so.5 #32 0x00007f9ee88ade77 in QApplication::notify(QObject*, QEvent*) () from /lib/x86_64-linux-gnu/libQt5Widgets.so.5 #33 0x00007f9ee7dcd6da in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /lib/x86_64-linux-gnu/libQt5Core.so.5 #34 0x00007f9ee88ad0a7 in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool, bool) () from /lib/x86_64-linux-gnu/libQt5Widgets.so.5 #35 0x00007f9ee8902e54 in ?? () from /lib/x86_64-linux-gnu/libQt5Widgets.so.5 #36 0x00007f9ee8906174 in ?? () from /lib/x86_64-linux-gnu/libQt5Widgets.so.5 #37 0x00007f9ee88a4dc3 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /lib/x86_64-linux-gnu/libQt5Widgets.so.5 #38 0x00007f9ee88adbb8 in QApplication::notify(QObject*, QEvent*) () from /lib/x86_64-linux-gnu/libQt5Widgets.so.5 #39 0x00007f9ee7dcd6da in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /lib/x86_64-linux-gnu/libQt5Core.so.5 #40 0x00007f9ee81af4e8 in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) () from /lib/x86_64-linux-gnu/libQt5Gui.so.5 #41 0x00007f9ee81b0b55 in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) () from /lib/x86_64-linux-gnu/libQt5Gui.so.5 #42 0x00007f9ee81887ac in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib/x86_64-linux-gnu/libQt5Gui.so.5 #43 0x00007f9ee2b02d7e in ?? () from /lib/x86_64-linux-gnu/libQt5XcbQpa.so.5 #44 0x00007f9ee5ae317d in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 #45 0x00007f9ee5ae3400 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 #46 0x00007f9ee5ae34a3 in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 #47 0x00007f9ee7e27fe2 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib/x86_64-linux-gnu/libQt5Core.so.5 #48 0x00007f9ee7dcc1eb in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib/x86_64-linux-gnu/libQt5Core.so.5 #49 0x00007f9ee7dd4394 in QCoreApplication::exec() () from /lib/x86_64-linux-gnu/libQt5Core.so.5 #50 0x00007f9eea234fa2 in kdemain (argc=<optimized out>, argv=<optimized out>) at ./src/main.cpp:222 #51 0x00007f9eea0160b3 in __libc_start_main (main=0x562f4bc72060 <main>, argc=1, argv=0x7ffeb0e46c58, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7ffeb0e46c48) at ../csu/libc-start.c:308 #52 0x0000562f4bc7209e in _start () [Inferior 1 (process 50086) detached] Possible duplicates by query: bug 425455.
#4 0x00007f9ee94a2e04 in KIconButton::icon() const () from /lib/x86_64-linux-gnu/libKF5IconThemes.so.5 What is the icon for the item you're right-clicking on? Can you share a screenshot of it?
Created attachment 137547 [details] Sequence of crash 1/3
Created attachment 137548 [details] Sequence of crash 2/3
Created attachment 137549 [details] Sequence of crash 3/3
Thanks, can reproduce.
Crash log with debug symbols: Thread 1 "dolphin" received signal SIGSEGV, Segmentation fault. KIconButton::icon (this=0x0) at /usr/include/c++/10/bits/unique_ptr.h:173 173 pointer _M_ptr() const { return std::get<0>(_M_t); } (gdb) bt #0 KIconButton::icon (this=0x0) at /usr/include/c++/10/bits/unique_ptr.h:173 #1 0x00007ffff7e14be9 in KFilePlaceEditDialog::icon (this=0x1292a10) at /home/nate/kde/src/kio/src/filewidgets/kfileplaceeditdialog.cpp:195 #2 0x0000000000474d71 in PlacesPanel::editEntry (this=0xa30360, index=9) at /home/nate/kde/src/dolphin/src/panels/places/placespanel.cpp:525 #3 0x00000000004763b8 in PlacesPanel::slotItemContextMenuRequested (this=0xa30360, index=<optimized out>, pos=...) at /home/nate/kde/src/dolphin/src/panels/places/placespanel.cpp:269 #4 0x00007ffff5ab2946 in QtPrivate::QSlotObjectBase::call (a=0x7fffffffc350, r=0xa30360, this=0xe5a4b0) at ../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:398 #5 doActivate<false> (sender=0xe57d80, signal_index=6, argv=argv@entry=0x7fffffffc350) at kernel/qobject.cpp:3886 #6 0x00007ffff5aabc60 in QMetaObject::activate (sender=sender@entry=0xe57d80, m=m@entry=0x7ffff7fbd700 <KItemListController::staticMetaObject>, local_signal_index=local_signal_index@entry=3, argv=argv@entry=0x7fffffffc350) at kernel/qobject.cpp:3946 #7 0x00007ffff7eed386 in KItemListController::itemContextMenuRequested (this=this@entry=0xe57d80, _t1=<optimized out>, _t2=...) at /home/nate/kde/build/dolphin/src/dolphinprivate_autogen/Z3MQH7AOBD/moc_kitemlistcontroller.cpp:506 #8 0x00007ffff7f1c74f in KItemListController::onPress (this=this@entry=0xe57d80, screenPos=..., pos=..., modifiers=modifiers@entry=..., buttons=..., buttons@entry=...) at /home/nate/kde/src/dolphin/src/kitemviews/kitemlistcontroller.cpp:1520 #9 0x00007ffff7f1d881 in KItemListController::mousePressEvent (transform=..., event=0x7fffffffc930, this=0xe57d80) at /home/nate/kde/src/dolphin/src/kitemviews/kitemlistcontroller.cpp:555 #10 KItemListController::mousePressEvent (this=0xe57d80, event=0x7fffffffc930, transform=...) at /home/nate/kde/src/dolphin/src/kitemviews/kitemlistcontroller.cpp:538 #11 0x00007ffff7f1ecc9 in KItemListController::processEvent (this=0xe57d80, event=0x7fffffffc930, transform=...) at /home/nate/kde/src/dolphin/src/kitemviews/kitemlistcontroller.cpp:1108 #12 0x00007ffff7f2e89d in KItemListView::event (this=0xe56340, event=0x7fffffffc930) at /home/nate/kde/src/dolphin/src/kitemviews/kitemlistview.cpp:950 #13 0x00007ffff662d4ff in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0xe56340, e=0x7fffffffc930) at kernel/qapplication.cpp:3632 #14 0x00007ffff5a7c32a in QCoreApplication::notifyInternal2 (receiver=0xe56340, event=0x7fffffffc930) at kernel/qcoreapplication.cpp:1063 #15 0x00007ffff6942a05 in QGraphicsScenePrivate::sendEvent (this=<optimized out>, item=0xe56350, event=0x7fffffffc930) at graphicsview/qgraphicsscene.cpp:1254 #16 0x00007ffff6942da1 in QGraphicsScenePrivate::sendMouseEvent (this=this@entry=0x773f90, mouseEvent=mouseEvent@entry=0x7fffffffc930) at graphicsview/qgraphicsscene.cpp:1335 #17 0x00007ffff694b38a in QGraphicsScenePrivate::mousePressEventHandler (this=0x773f90, mouseEvent=0x7fffffffc930) at graphicsview/qgraphicsscene.cpp:1462 #18 0x00007ffff6955101 in QGraphicsScene::event (this=0xe62f10, event=0x7fffffffc930) at graphicsview/qgraphicsscene.cpp:3433 #19 0x00007ffff662d4ff in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0xe62f10, e=0x7fffffffc930) at kernel/qapplication.cpp:3632 #20 0x00007ffff5a7c32a in QCoreApplication::notifyInternal2 (receiver=0xe62f10, event=0x7fffffffc930) at kernel/qcoreapplication.cpp:1063 #21 0x00007ffff69715e5 in QGraphicsView::mousePressEvent (this=0xe62f90, event=0x7fffffffcf00) at graphicsview/qgraphicsview.cpp:3307 --Type <RET> for more, q to quit, c to continue without paging-- #22 0x00007ffff666d34e in QWidget::event (this=this@entry=0xe62f90, event=event@entry=0x7fffffffcf00) at kernel/qwidget.cpp:9019 #23 0x00007ffff67159be in QFrame::event (this=0xe62f90, e=0x7fffffffcf00) at widgets/qframe.cpp:550 #24 0x00007ffff5a7c093 in QCoreApplicationPrivate::sendThroughObjectEventFilters ( event=<optimized out>, receiver=<optimized out>) at kernel/qcoreapplication.cpp:1189 #25 QCoreApplicationPrivate::sendThroughObjectEventFilters (receiver=receiver@entry=0xe7a850, event=event@entry=0x7fffffffcf00) at kernel/qcoreapplication.cpp:1178 #26 0x00007ffff662d4ee in QApplicationPrivate::notify_helper (this=this@entry=0x54ddb0, receiver=receiver@entry=0xe7a850, e=e@entry=0x7fffffffcf00) at kernel/qapplication.cpp:3626 #27 0x00007ffff66343eb in QApplication::notify (this=0x7fffffffcc00, receiver=0xe7a850, e=0x7fffffffcf00) at kernel/qapplication.cpp:3076 #28 0x00007ffff5a7c32a in QCoreApplication::notifyInternal2 (receiver=0xe7a850, event=0x7fffffffcf00) at kernel/qcoreapplication.cpp:1063 #29 0x00007ffff6633416 in QApplicationPrivate::sendMouseEvent (receiver=receiver@entry=0xe7a850, event=event@entry=0x7fffffffcf00, alienWidget=alienWidget@entry=0xe7a850, nativeWidget=0x554cc0, buttonDown=buttonDown@entry=0x7ffff6b5b670 <qt_button_down>, lastMouseReceiver=..., spontaneous=true, onlyDispatchEnterLeave=false) at kernel/qapplication.cpp:2614 #30 0x00007ffff66853b1 in QWidgetWindow::handleMouseEvent (this=0x85c230, event=0x7fffffffd1c0) at kernel/qwidgetwindow.cpp:683 #31 0x00007ffff66888be in QWidgetWindow::event (this=0x85c230, event=0x7fffffffd1c0) at kernel/qwidgetwindow.cpp:300 #32 0x00007ffff662d4ff in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x85c230, e=0x7fffffffd1c0) at kernel/qapplication.cpp:3632 #33 0x00007ffff5a7c32a in QCoreApplication::notifyInternal2 (receiver=0x85c230, event=0x7fffffffd1c0) at kernel/qcoreapplication.cpp:1063 #34 0x00007ffff5ee8d03 in QGuiApplicationPrivate::processMouseEvent (e=0x1208fa0) at kernel/qguiapplication.cpp:2282 #35 0x00007ffff5ebec5c in QWindowSystemInterface::sendWindowSystemEvents (flags=flags@entry=...) at kernel/qwindowsysteminterface.cpp:1169 #36 0x00007ffff0b6ffaa in xcbSourceDispatch (source=source@entry=0x63b720) at qxcbeventdispatcher.cpp:105 #37 0x00007ffff3486f57 in g_main_dispatch (context=0x7fffec005000) at ../glib/gmain.c:3325 #38 g_main_context_dispatch (context=0x7fffec005000) at ../glib/gmain.c:4043 #39 0x00007ffff34872d8 in g_main_context_iterate (context=context@entry=0x7fffec005000, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:4119 #40 0x00007ffff348738f in g_main_context_iteration (context=0x7fffec005000, may_block=may_block@entry=1) at ../glib/gmain.c:4184 #41 0x00007ffff5ad38bf in QEventDispatcherGlib::processEvents (this=0x647f50, flags=...) at kernel/qeventdispatcher_glib.cpp:423 #42 0x00007ffff5a7aceb in QEventLoop::exec (this=this@entry=0x7fffffffd4f0, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:69 #43 0x00007ffff5a82f60 in QCoreApplication::exec () at ../../include/QtCore/../../src/corelib/global/qflags.h:121 #44 0x00007ffff5edc35c in QGuiApplication::exec () at kernel/qguiapplication.cpp:1867 #45 0x00007ffff662d475 in QApplication::exec () at kernel/qapplication.cpp:2824 #46 0x000000000044c0b4 in main (argc=<optimized out>, argv=0x7fffffffd5d8) at /home/nate/kde/src/dolphin/src/main.cpp:222
Crash is actually in KIO. KFilePlaceEditDialog::icon() there is a guard against paths with immutable icon (KFilePlaceEditDialog::isIconEditable()) but also based on that guard m_iconButton will not be initialized. i.e. When one edits the Trash entry the url is trash:/ and guarded so m_iconButton is nullptr after the ctor. When one then changes the url to anything but trash:/ the guard gets deactivated and any call into ::icon() will dereference the nullptr. One can but wonder what the point of editing the trash url is exactly though. I'd disable it TBH. Other solutions: - do not check the guard after construction. if the url was for an immutable icon on construction it'll be considered immutable forever more. kinda meh though - update the iconbutton on urlChanged(). i.e. delete when url changes to trash:/, construct when it changes away from trash:/
It's not possible to edit Trash bookmark icon anymore.