From: Marco Costalba Date: Fri, 13 Jan 2006 17:41:25 GMT Subject: Re: qgit shows wrong popup Message-ID: <43C7E645.2050702@yahoo.it> In-Reply-To: >>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