threads / discuss / 3045

qgit shows wrong popup

Subject: qgit shows wrong popup

## tl;dr

3 messages between Jan 11, 2006 and Jan 13, 2006.

replies: 2people: 2as markdown or json

Pavel Roskin· Jan 11, 2006, 23:21 UTC · lore
Hello, Marco!

Current qgit has a bug that manifests itself on stgit repositories. Suppose I have two patches known to stgit, one is applied and the other is not.

If the unapplied patch is selected and I right-click on the applied patch below, I get a popup with "Push patch" disabled. If I select the applied patch by the left click, then "Pop patch" appears in that place, and it's enabled. Also, "Make Tag" appears in the menu.

Going from the applied patch to the unapplied one by the right click results in having disabled "Pop patch" instead of the correct enabled "Push patch".

Screenshots can be found at http://red-bean.com/proski/qgit/

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.
-- 
Regards,
Pavel Roskin
Marco Costalba· Jan 13, 2006, 17:41 UTC · lore

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
Pavel Roskin· Jan 13, 2006, 21:06 UTC · re: Marco Costalba · lore

Re: qgit shows wrong popup

Hi, Marco!
On Fri, 2006-01-13 at 18:41 +0100, Marco Costalba wrote:
> please test the following an let me know if it is ok for you.

It works, but not the first time. Suppose I have two unapplied patches and one applied. qgit focuses on the top unapplied patch on startup. Right-click on the applied patch shows disabled "Push Patch". Then I select the top line again, right-click on the applied patch, and I see enabled "Pop Patch".

-- 
Regards,
Pavel Roskin

← back to recent threads