Re: qgit shows wrong popup
Show 8 quoted lines
>>I found this comment in mainimpl.cpp:
>> // call an async context popup, DO NOT filter out event
>> // we append the event to main event loop queue so Qt can send
>> // currentChanged() signal to listViewLog before our popup is
>>populated
>>
>>I guess the code doesn't work the way the comment says.
>>
Hi Pavel,
please test the following an let me know if it is ok for you.
@@ -1378,9 +1378,21 @@ void MainImpl::customEvent(QCustomEvent*
if (e->type() == STATS_EV) // archive loading complete
loadComplete(((ThreadStatsEvent*)e)->data());
- if (e->type() == POPUP_EV) // deferred popup
- doContexPopup(listViewLog->currentItem());
-
+ if (e->type() == POPUP_EV) { // deferred popup
+ QListViewItem* item = listViewLog->currentItem();
+ if (item) {
+ // if mainview is already updated pop-up
+ // context menu, otherwise it means dispatch()
+ // has not been called til now, so resend the event,
+ // it will be queued up after dispatch.
+ if (item->text(COMMIT_COL) == mainViewSha)
+ doContexPopup(listViewLog->currentItem());
+ else {
+ DeferredPopupEvent* e = new DeferredPopupEvent();
+ QApplication::postEvent(this, e);
+ }
+ }
+ }
if (e->type() == POPUP_TREE_EV) // deferred tree popup
doTreeContexPopup(treeView->currentItem());
___________________________________
Yahoo! Mail: gratis 1GB per i messaggi e allegati da 10MB
http://mail.yahoo.it