* [PATCH] add ctx menu for tags, impl "remove tag" and "copy tag name"
@ 2024-01-12 21:48 Ulrich Hornung via GitGitGadget
0 siblings, 0 replies; only message in thread
From: Ulrich Hornung via GitGitGadget @ 2024-01-12 21:48 UTC (permalink / raw)
To: git; +Cc: Ulrich Hornung, Ulrich Hornung
From: Ulrich Hornung <hornunguli@gmx.de>
Signed-off-by: Ulrich Hornung <hornunguli@gmx.de>
---
gitk: add ctx menu for tags, impl "remove tag" and "copy tag name"
Hello,
I'm currently using git gui and gitk quite strongly. It happens to me
once in a while that I accidentially create a tag instead of a new
branch when using the GUI of gitk for this. Sadly, in this situation I
needed to go to the console to remove this tag again, because the latest
version of gitk doesn't have a "remove tag" button.
Lukily I was able to implement that button (and the copy name button) by
myself. I would be happy if you could integrate the new feature into the
official sources.
Bildschirmfoto vom 2024-01-01 17-26-07
[https://github.com/gitgitgadget/git/assets/252806/079c28dd-b4a0-486c-ad1e-27f7f2fde814]
Thanks.
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1629%2Fcre4ture%2Ffeature%2Ftag_ctx_menu_remove_tag-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1629/cre4ture/feature/tag_ctx_menu_remove_tag-v1
Pull-Request: https://github.com/gitgitgadget/git/pull/1629
gitk-git/gitk | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 66 insertions(+), 1 deletion(-)
diff --git a/gitk-git/gitk b/gitk-git/gitk
index 7a087f123d7..7a70e1fba31 100755
--- a/gitk-git/gitk
+++ b/gitk-git/gitk
@@ -1894,6 +1894,21 @@ proc removehead {id name} {
unset headids($name)
}
+# update things when a tag has been removed
+proc removetag {id name} {
+ global tagids idtags
+
+ if {$idtags($id) eq $name} {
+ unset idtags($id)
+ } else {
+ set i [lsearch -exact $idtags($id) $name]
+ if {$i >= 0} {
+ set idtags($id) [lreplace $idtags($id) $i $i]
+ }
+ }
+ unset tagids($name)
+}
+
proc ttk_toplevel {w args} {
global use_ttk
eval [linsert $args 0 ::toplevel $w]
@@ -2096,7 +2111,7 @@ proc makewindow {} {
global uifgcolor uifgdisabledcolor
global filesepbgcolor filesepfgcolor
global mergecolors foundbgcolor currentsearchhitbgcolor
- global headctxmenu progresscanv progressitem progresscoords statusw
+ global headctxmenu tagctxmenu progresscanv progressitem progresscoords statusw
global fprogitem fprogcoord lastprogupdate progupdatepending
global rprogitem rprogcoord rownumsel numcommits
global have_tk85 use_ttk NS
@@ -2705,6 +2720,13 @@ proc makewindow {} {
}
$headctxmenu configure -tearoff 0
+ set tagctxmenu .tagctxmenu
+ makemenu $tagctxmenu {
+ {mc "Remove this tag" command rmtag}
+ {mc "Copy tag name" command {clipboard clear; clipboard append $tagmenutag}}
+ }
+ $tagctxmenu configure -tearoff 0
+
global flist_menu
set flist_menu .flistctxmenu
makemenu $flist_menu {
@@ -6701,6 +6723,7 @@ proc drawtags {id x xt y1} {
-font $font -tags [list tag.$id text]]
if {$ntags >= 0} {
$canv bind $t <1> $tagclick
+ $canv bind $t $ctxbut [list tagmenu %X %Y $id $tag_quoted]
} elseif {$nheads >= 0} {
$canv bind $t $ctxbut [list headmenu %X %Y $id $tag_quoted]
}
@@ -9938,6 +9961,20 @@ proc headmenu {x y id head} {
tk_popup $headctxmenu $x $y
}
+# context menu for a tag
+proc tagmenu {x y id head} {
+ global tagmenuid tagmenutag tagctxmenu
+
+ stopfinding
+ set tagmenuid $id
+ set tagmenutag $head
+ array set state {0 normal 1 normal}
+ foreach i {0 1} {
+ $tagctxmenu entryconfigure $i -state $state($i)
+ }
+ tk_popup $tagctxmenu $x $y
+}
+
proc cobranch {} {
global headmenuid headmenuhead headids
global showlocalchanges
@@ -10042,6 +10079,27 @@ proc rmbranch {} {
run refill_reflist
}
+proc rmtag {} {
+ global tagmenuid tagmenutag
+
+ set tag $tagmenutag
+ set id $tagmenuid
+
+ nowbusy rmtag
+ update
+ if {[catch {exec git tag -d $tag} err]} {
+ notbusy rmtag
+ error_popup $err
+ return
+ }
+ removetag $id $tag
+ removedtag $id $tag
+ redrawtags $id
+ notbusy rmtag
+ dispneartags 0
+ run refill_reflist
+}
+
# Display a list of tags and heads
proc showrefs {} {
global showrefstop bgcolor fgcolor selectbgcolor NS
@@ -11273,6 +11331,13 @@ proc removedhead {hid head} {
unset -nocomplain cached_dheads
}
+proc removedtag {hid head} {
+ global cached_dtags cached_atags
+
+ unset -nocomplain cached_dtags
+ unset -nocomplain cached_atags
+}
+
proc movedhead {hid head} {
global arcnos arcout cached_dheads
base-commit: a26002b62827b89a19b1084bd75d9371d565d03c
--
gitgitgadget
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2024-01-12 21:48 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-01-12 21:48 [PATCH] add ctx menu for tags, impl "remove tag" and "copy tag name" Ulrich Hornung via GitGitGadget
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.