Bug 342104

Summary: dragging & dropping scriptable service item level > 1 tries to get level 0 items without getting intermediate levels
Product: [Applications] amarok Reporter: Be <be.0>
Component: Tools/Script ManagerAssignee: Amarok Developers <amarok-bugs-dist>
Status: RESOLVED WORKSFORME    
Severity: normal CC: darthcodus, simonandric5
Priority: NOR    
Version: 2.8-git   
Target Milestone: 2.9   
Platform: Other   
OS: Other   
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description Be 2014-12-22 00:57:45 UTC
Trying to drag an item of a level 2 from the collections pane from a scripted service fails, popping up an error saying that a variable generated for level 0 items from level 1 items' callbackData is undefined. Trying to drop the item on the playlist freezes Amarok. This does not occur if all the level 1 items under the level 2 item have been expanded already. Looking at the debugging output, it appears that Amarok tries to drag all the level 0 items under the level 2 item without getting the level 1 items. This fails because level 0 items are generated from the callbackData of level 1 items.

amarok: BEGIN: void Collections::ScriptableServiceQueryMaker::fetchArtists() 
amarok:   BEGIN: void ScriptableServiceScript::slotPopulate(QString, int, int, QString, QString) 
amarok:     SCRIPT "SoundCloud Integration" :  "Populating level 2" 
amarok:     SCRIPT "SoundCloud Integration" :  "filter: culprate%20" 
amarok:     SCRIPT "SoundCloud Integration" :  "processing user: culprate" 
amarok:     BEGIN: static QScriptValue Downloader::init(QScriptContext*, QScriptEngine*, bool) 
amarok:     END__: static QScriptValue Downloader::init(QScriptContext*, QScriptEngine*, bool) [Took: 0s] 
amarok:   END__: void ScriptableServiceScript::slotPopulate(QString, int, int, QString, QString) [Took: 0s] 
amarok: END__: void Collections::ScriptableServiceQueryMaker::fetchArtists() [Took: 0s] 
amarok: SCRIPT "SoundCloud Integration" :  "Culprate inserted" 
amarok: SCRIPT "SoundCloud Integration" :  "CULPRATE inserted" 
amarok: SCRIPT "SoundCloud Integration" :  "Culprate_RexXOokay inserted" 
amarok: SCRIPT "SoundCloud Integration" :  "DJ-Culprate5 inserted" 
amarok: SCRIPT "SoundCloud Integration" :  "Dj-Culprate inserted" 
amarok: SCRIPT "SoundCloud Integration" :  "Inspected inserted" 
amarok: SCRIPT "SoundCloud Integration" :  "Division Recordings inserted" 
amarok: SCRIPT "SoundCloud Integration" :  "phace™ inserted" 
amarok: SCRIPT "SoundCloud Integration" :  "The McMash Clan inserted" 
amarok: SCRIPT "SoundCloud Integration" :  "robclouth inserted" 
amarok: SCRIPT "SoundCloud Integration" :  "Cubism_Music inserted" 
amarok: SCRIPT "SoundCloud Integration" :  "Bass Island Radio inserted" 
amarok: SCRIPT "SoundCloud Integration" :  "FLATMATE inserted" 
amarok: SCRIPT "SoundCloud Integration" :  "Loop Stepwalker inserted" 
amarok: SCRIPT "SoundCloud Integration" :  "eXcess inserted" 
amarok: SCRIPT "SoundCloud Integration" :  "Daisy-Chain inserted" 
amarok: SCRIPT "SoundCloud Integration" :  "Wondawulf inserted" 
amarok: SCRIPT "SoundCloud Integration" :  "Influe. inserted" 
amarok: SCRIPT "SoundCloud Integration" :  "Neuroscientist inserted" 
amarok: SCRIPT "SoundCloud Integration" :  "The  Mask inserted" 
amarok: SCRIPT "SoundCloud Integration" :  "WOBBELIX inserted" 
amarok: SCRIPT "SoundCloud Integration" :  "ObscenityDubstep inserted" 
amarok: SCRIPT "SoundCloud Integration" :  "Gradient Audio inserted" 
amarok: SCRIPT "SoundCloud Integration" :  "Duburban Poison inserted" 
amarok: SCRIPT "SoundCloud Integration" :  "Paranoise Collision inserted" 
amarok: SCRIPT "SoundCloud Integration" :  "Ordure inserted" 
amarok: SCRIPT "SoundCloud Integration" :  "Rancorous Records inserted" 
amarok: SCRIPT "SoundCloud Integration" :  "Ironhide Dubstep inserted" 
amarok: SCRIPT "SoundCloud Integration" :  "Silvertortoisemusic inserted" 
amarok: SCRIPT "SoundCloud Integration" :  "├ﮋᶞⱨᶯᶯᵞ чpӏѧӌ→ inserted" 
amarok: SCRIPT "SoundCloud Integration" :  "Silent Frequencies inserted" 
amarok: SCRIPT "SoundCloud Integration" :  "BISON MUSIC inserted" 
amarok: SCRIPT "SoundCloud Integration" :  "Släider | Official ☢ inserted" 
amarok: SCRIPT "SoundCloud Integration" :  "B1t Crunch3r inserted" 
amarok: SCRIPT "SoundCloud Integration" :  "Digital Sanctuary Rec. inserted" 
amarok: SCRIPT "SoundCloud Integration" :  "Widelows inserted" 
amarok: SCRIPT "SoundCloud Integration" :  "RizeMusic inserted" 
amarok: SCRIPT "SoundCloud Integration" :  "Fx Church inserted" 
amarok: SCRIPT "SoundCloud Integration" :  "ElecTrOnAiL inserted" 
amarok: SCRIPT "SoundCloud Integration" :  "Nexam inserted" 
amarok: SCRIPT "SoundCloud Integration" :  "ワウ IK口RUX  スーパー inserted" 
amarok: SCRIPT "SoundCloud Integration" :  "COOPER inserted" 
amarok: SCRIPT "SoundCloud Integration" :  "Broken Beats inserted" 
amarok: SCRIPT "SoundCloud Integration" :  "Hob Goblin inserted" 
amarok: SCRIPT "SoundCloud Integration" :  "Your Demise inserted" 
amarok: SCRIPT "SoundCloud Integration" :  "PanthaMusic inserted" 
amarok: SCRIPT "SoundCloud Integration" :  "Lam-c inserted" 
amarok: SCRIPT "SoundCloud Integration" :  "Murka. inserted" 
amarok: SCRIPT "SoundCloud Integration" :  "Destroy The Modem inserted" 
amarok: SCRIPT "SoundCloud Integration" :  "Chesk inserted" 
amarok: BEGIN: int ScriptableServiceScript::donePopulating() const 
amarok:   BEGIN: void ScriptableServiceManager::donePopulating(const QString&, int) 
amarok:     Service name:  "SoundCloud Integration" , parent id:  -1 
amarok:     BEGIN: void Collections::ScriptableServiceCollection::donePopulating(int) 
amarok:       BEGIN: void Collections::ScriptableServiceQueryMaker::slotScriptComplete() 
amarok:         [ScriptableServiceQueryMaker] there are  50  artists 
amarok:       END__: void Collections::ScriptableServiceQueryMaker::slotScriptComplete() [Took: 0s] 
amarok:     END__: void Collections::ScriptableServiceCollection::donePopulating(int) [Took: 0s] 
amarok:   END__: void ScriptableServiceManager::donePopulating(const QString&, int) [Took: 0s] 
amarok: END__: int ScriptableServiceScript::donePopulating() const [Took: 0s] 
amarok: SCRIPT "SoundCloud Integration" :  "Artist list populated" 
amarok: selected item:  "Culprate" 
amarok: BEGIN: virtual void CollectionTreeView::startDrag(Qt::DropActions) 
amarok:   BEGIN: PopupDropper* PopupDropperFactory::createPopupDropper(QWidget*, bool) 
link XMLID_9_ hasn't been detected!
link XMLID_9_ hasn't been detected!
link XMLID_9_ hasn't been detected!
link XMLID_9_ hasn't been detected!
Could not resolve property : linearGradient5167
Could not resolve property : linearGradient3563
Could not resolve property : linearGradient3563-3
Could not resolve property : linearGradient3563-3
amarok:   END__: PopupDropper* PopupDropperFactory::createPopupDropper(QWidget*, bool) [Took: 0.038s] 
amarok:   [CollectionTreeView] checking for global actions 
amarok:   [CollectionTreeView] Got global action:  "Play Similar Artists from Last.fm" 
amarok:   BEGIN: PopupDropper* PopupDropperFactory::createPopupDropper(QWidget*, bool) 
amarok:   END__: PopupDropper* PopupDropperFactory::createPopupDropper(QWidget*, bool) [Took: 0s] 
amarok:   BEGIN: virtual Collections::QueryMaker* Collections::ScriptableServiceQueryMaker::addFilter(qint64, const QString&, bool, bool) 
amarok:   END__: virtual Collections::QueryMaker* Collections::ScriptableServiceQueryMaker::addFilter(qint64, const QString&, bool, bool) [Took: 0s] 
amarok:   BEGIN: virtual Collections::QueryMaker* Collections::ScriptableServiceQueryMaker::addFilter(qint64, const QString&, bool, bool) 
amarok:   END__: virtual Collections::QueryMaker* Collections::ScriptableServiceQueryMaker::addFilter(qint64, const QString&, bool, bool) [Took: 0s] 
amarok:   BEGIN: virtual Collections::QueryMaker* Collections::ScriptableServiceQueryMaker::addFilter(qint64, const QString&, bool, bool) 
amarok:   END__: virtual Collections::QueryMaker* Collections::ScriptableServiceQueryMaker::addFilter(qint64, const QString&, bool, bool) [Took: 0s] 
amarok:   BEGIN: virtual Collections::QueryMaker* Collections::ScriptableServiceQueryMaker::addFilter(qint64, const QString&, bool, bool) 
amarok:   END__: virtual Collections::QueryMaker* Collections::ScriptableServiceQueryMaker::addFilter(qint64, const QString&, bool, bool) [Took: 0s] 
amarok:   BEGIN: virtual Collections::QueryMaker* Collections::ScriptableServiceQueryMaker::addFilter(qint64, const QString&, bool, bool) 
amarok:   END__: virtual Collections::QueryMaker* Collections::ScriptableServiceQueryMaker::addFilter(qint64, const QString&, bool, bool) [Took: 0s] 
amarok:   BEGIN: virtual Collections::QueryMaker* Collections::ScriptableServiceQueryMaker::addFilter(qint64, const QString&, bool, bool) 
amarok:   END__: virtual Collections::QueryMaker* Collections::ScriptableServiceQueryMaker::addFilter(qint64, const QString&, bool, bool) [Took: 0s] 
amarok:   BEGIN: virtual Collections::QueryMaker* Collections::ScriptableServiceQueryMaker::addFilter(qint64, const QString&, bool, bool) 
amarok:   END__: virtual Collections::QueryMaker* Collections::ScriptableServiceQueryMaker::addFilter(qint64, const QString&, bool, bool) [Took: 0s] 
amarok:   BEGIN: virtual Collections::QueryMaker* Collections::ScriptableServiceQueryMaker::addFilter(qint64, const QString&, bool, bool) 
amarok:   END__: virtual Collections::QueryMaker* Collections::ScriptableServiceQueryMaker::addFilter(qint64, const QString&, bool, bool) [Took: 0s] 
amarok:   BEGIN: virtual Collections::QueryMaker* Collections::ScriptableServiceQueryMaker::addFilter(qint64, const QString&, bool, bool) 
amarok:   END__: virtual Collections::QueryMaker* Collections::ScriptableServiceQueryMaker::addFilter(qint64, const QString&, bool, bool) [Took: 0s] 
amarok:   BEGIN: void Collections::ScriptableServiceQueryMaker::fetchTracks() 
amarok:     [ScriptableServiceQueryMaker] parent id:  2 
amarok:     [ScriptableServiceQueryMaker] i am sending signals! 
amarok:     BEGIN: void ScriptableServiceScript::slotPopulate(QString, int, int, QString, QString) 
amarok:       SCRIPT "SoundCloud Integration" :  "Populating level 0" 
amarok:       BEGIN: void ScriptManager::handleException(const QScriptValue&) 
amarok:       END__: void ScriptManager::handleException(const QScriptValue&) [Took: 0s] 
amarok:     END__: void ScriptableServiceScript::slotPopulate(QString, int, int, QString, QString) [Took: 0.001s] 
amarok:   END__: void Collections::ScriptableServiceQueryMaker::fetchTracks() [Took: 0.001s] 
amarok:   BEGIN: LongMessageWidget::LongMessageWidget(QWidget*, const QString&, Amarok::Logger::MessageType) 
amarok:   END__: LongMessageWidget::LongMessageWidget(QWidget*, const QString&, Amarok::Logger::MessageType) [Took: 0.002s] 
amarok:   BEGIN: virtual void Playlist::PrettyListView::dropEvent(QDropEvent*) 
amarok:     [Playlist::Model] this is a track 
amarok:     BEGIN: virtual PopupWidget::~PopupWidget() 
amarok:     END__: virtual PopupWidget::~PopupWidget() [Took: 0s] 
amarok: Fatal IO error: client killed
KCrash: Application 'amarok' crashing...
KCrash: Attempting to start /usr/libexec/kde4/drkonqi from kdeinit
KCrash: Connect sock_file=/home/be/.kde/socket-localhost.localdomain/kdeinit4__0

Reproducible: Always

Steps to Reproduce:
1. Write a scripted service with at least 3 levels.
2. To populate level 0, refer to callback data from level 1 items.
3. Drag a level 2 item.

Actual Results:  
Amarok does not populate the level 0 items correctly because it never populated level 1.

Expected Results:  
All level 0 items with playableUrls are dragged with the level 2 item.
Comment 1 Justin Zobel 2022-10-17 00:41:05 UTC
Thank you for reporting this bug in KDE software. As it has been a while since this issue was reported, can we please ask you to see if you can reproduce the issue with a recent software version?

If you can reproduce the issue, please change the status to "CONFIRMED" when replying. Thank you!
Comment 2 Bug Janitor Service 2022-11-01 05:05:12 UTC
Dear Bug Submitter,

This bug has been in NEEDSINFO status with no change for at least
15 days. Please provide the requested information as soon as
possible and set the bug status as REPORTED. Due to regular bug
tracker maintenance, if the bug is still in NEEDSINFO status with
no change in 30 days the bug will be closed as RESOLVED > WORKSFORME
due to lack of needed information.

For more information about our bug triaging procedures please read the
wiki located here:
https://community.kde.org/Guidelines_and_HOWTOs/Bug_triaging

If you have already provided the requested information, please
mark the bug as REPORTED so that the KDE team knows that the bug is
ready to be confirmed.

Thank you for helping us make KDE software even better for everyone!
Comment 3 Bug Janitor Service 2022-11-16 05:16:40 UTC
This bug has been in NEEDSINFO status with no change for at least
30 days. The bug is now closed as RESOLVED > WORKSFORME
due to lack of needed information.

For more information about our bug triaging procedures please read the
wiki located here:
https://community.kde.org/Guidelines_and_HOWTOs/Bug_triaging

Thank you for helping us make KDE software even better for everyone!