git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH] git-gui: Include version check and test for tearoff menu entry

From
Pat Thoyts <patthoyts@users.sourceforge.net>
Date
Feb 14, 2011, 13:03 UTC
Message-ID
<878vxilndt.fsf_-_@fox.patthoyts.tk>
In-Reply-To
<20110213135714.GE31986@book.hvoigt.net>

The --all option for git fetch was added in v1.6.6 so ensure we have a usable version before adding the menu items. Sometimes people use tearoff menus and these offset the entry indices by one.

Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>
---
Heiko Voigt <hvoigt@hvoigt.net> writes:
Show 5 quoted lines
>It just came to my mind that I probably should implement a version check
>of the commandline to ensure that this option is available. Thats why I
>tagged only this patch with RFC.
>
>Cheers Heiko

The posted patch seems fine except that an error is reported if tearoff menus are present. So this patch accommodates tearoff's. I looked up when the --all option was added (1.6.6) and skip adding the menu entry if we have an older version.

Seems to do the right thing.
 lib/remote.tcl |   22 +++++++++++++---------
 1 files changed, 13 insertions(+), 9 deletions(-)
diff --git a/lib/remote.tcl b/lib/remote.tcl
index 817ca1b..b88f6e5 100644
--- a/lib/remote.tcl
+++ b/lib/remote.tcl
@@ -233,6 +233,8 @@ proc make_sure_remote_submenues_exist {remote_m} {
 proc update_all_remotes_menu_entry {} {
 	global all_remotes
 
+	if {[git-version < 1.6.6]} { return }
+
 	set have_remote 0
 	foreach r $all_remotes {
 		set have_remote 1
@@ -243,27 +245,29 @@ proc update_all_remotes_menu_entry {} {
 	set prune_m $remote_m.prune
 	if {$have_remote} {
 		make_sure_remote_submenues_exist $remote_m
-		if {[$fetch_m entrycget 0 -label] ne "All"} {
+		set index [expr {[$fetch_m type 0] eq "tearoff" ? 1 : 0}]
+		if {[$fetch_m entrycget $index -label] ne "All"} {
 
-			$fetch_m insert 0 separator
-			$fetch_m insert 0 command \
+			$fetch_m insert $index separator
+			$fetch_m insert $index command \
 				-label "All" \
 				-command fetch_from_all
 
-			$prune_m insert 0 separator
-			$prune_m insert 0 command \
+			$prune_m insert $index separator
+			$prune_m insert $index command \
 	  			-label "All" \
 				-command prune_from_all
 		}
 	} else {
 		if {[winfo exists $fetch_m]} {
+			set index [expr {[$fetch_m type 0] eq "tearoff" ? 1 : 0}]
 			if {[$fetch_m type end] eq "separator"} {
 
-				delete_from_menu $fetch_m 0
-				delete_from_menu $fetch_m 0
+				delete_from_menu $fetch_m $index
+				delete_from_menu $fetch_m $index
 
-				delete_from_menu $prune_m 0
-				delete_from_menu $prune_m 0
+				delete_from_menu $prune_m $index
+				delete_from_menu $prune_m $index
 			}
 		}
 	}
-- 
1.7.4.47.gb308bf
Previous: Heiko VoigtNext: Heiko Voigt
Message 6 of 17 in “git-gui: fix deleting item from all_remotes variable”
  1. 1/2 git-gui: fix deleting item from all_remotes variableHeiko Voigt, Feb 12, 2011
  2. Pat ThoytsFeb 13, 2011
  3. Heiko VoigtFeb 13, 2011
  4. 1/2 git-gui: refactor remote submenu creation into subroutineHeiko Voigt, Feb 13, 2011
  5. 2/2 git-gui: teach fetch/prune menu to do it for all remotesHeiko Voigt, Feb 13, 2011
  6. git-gui: Include version check and test for tearoff menu entryPat Thoyts, Feb 14, 2011
  7. Heiko VoigtFeb 14, 2011
  8. Pat ThoytsFeb 15, 2011
  9. Heiko VoigtFeb 17, 2011
  10. Jens LehmannFeb 22, 2011
  11. 1/2 git-gui: fetch/prune all entry only for more than one entryHeiko Voigt, Feb 22, 2011
  12. Pat ThoytsFeb 24, 2011
  13. 2/2 git-gui: fetch/prune all entry appears lastHeiko Voigt, Feb 22, 2011
  14. Jens LehmannFeb 23, 2011
  15. Pat ThoytsFeb 24, 2011
  16. Heiko VoigtFeb 13, 2011
  17. Heiko VoigtFeb 13, 2011

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.