# qgit shows wrong popup

3 messages from 2006-01-11 to 2006-01-13. Participants: Pavel Roskin, Marco Costalba.
Thread: https://gitlist.dev/t/3045

## Pavel Roskin, 2006-01-11 23:21

Subject: qgit shows wrong popup
Message-ID: <1137021690.10975.22.camel@dv>
URL: https://gitlist.dev/e/1137021690.10975.22.camel%40dv

```
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, 2006-01-13 17:41

Subject: Re: qgit shows wrong popup
Message-ID: <43C7E645.2050702@yahoo.it>
URL: https://gitlist.dev/e/43C7E645.2050702%40yahoo.it
In-Reply-To: <e5bfff550601120455p1b1654cx43beb684a3fd5dc7@mail.gmail.com>

```

>>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, 2006-01-13 21:06

Subject: Re: qgit shows wrong popup
Message-ID: <1137186381.2480.3.camel@dv>
URL: https://gitlist.dev/e/1137186381.2480.3.camel%40dv
In-Reply-To: <43C7E645.2050702@yahoo.it>

```
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

```
