зеркало из https://github.com/microsoft/git.git
* https://github.com/prati0100/git-gui: git-gui: blame: prevent tool tips from sticking around after Command-Tab git-gui: improve dark mode support git-gui: fix mixed tabs and spaces; prefer tabs
This commit is contained in:
Коммит
430cabb104
|
@ -720,7 +720,9 @@ proc rmsel_tag {text} {
|
||||||
-background [$text cget -background] \
|
-background [$text cget -background] \
|
||||||
-foreground [$text cget -foreground] \
|
-foreground [$text cget -foreground] \
|
||||||
-borderwidth 0
|
-borderwidth 0
|
||||||
$text tag conf in_sel -background lightgray
|
$text tag conf in_sel\
|
||||||
|
-background $color::select_bg \
|
||||||
|
-foreground $color::select_fg
|
||||||
bind $text <Motion> break
|
bind $text <Motion> break
|
||||||
return $text
|
return $text
|
||||||
}
|
}
|
||||||
|
@ -863,6 +865,7 @@ proc apply_config {} {
|
||||||
set NS ttk
|
set NS ttk
|
||||||
bind [winfo class .] <<ThemeChanged>> [list InitTheme]
|
bind [winfo class .] <<ThemeChanged>> [list InitTheme]
|
||||||
pave_toplevel .
|
pave_toplevel .
|
||||||
|
color::sync_with_theme
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -947,15 +950,15 @@ if {![regsub {^git version } $_git_version {} _git_version]} {
|
||||||
}
|
}
|
||||||
|
|
||||||
proc get_trimmed_version {s} {
|
proc get_trimmed_version {s} {
|
||||||
set r {}
|
set r {}
|
||||||
foreach x [split $s -._] {
|
foreach x [split $s -._] {
|
||||||
if {[string is integer -strict $x]} {
|
if {[string is integer -strict $x]} {
|
||||||
lappend r $x
|
lappend r $x
|
||||||
} else {
|
} else {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return [join $r .]
|
return [join $r .]
|
||||||
}
|
}
|
||||||
set _real_git_version $_git_version
|
set _real_git_version $_git_version
|
||||||
set _git_version [get_trimmed_version $_git_version]
|
set _git_version [get_trimmed_version $_git_version]
|
||||||
|
@ -967,7 +970,7 @@ if {![regexp {^[1-9]+(\.[0-9]+)+$} $_git_version]} {
|
||||||
-type yesno \
|
-type yesno \
|
||||||
-default no \
|
-default no \
|
||||||
-title "[appname]: warning" \
|
-title "[appname]: warning" \
|
||||||
-message [mc "Git version cannot be determined.
|
-message [mc "Git version cannot be determined.
|
||||||
|
|
||||||
%s claims it is version '%s'.
|
%s claims it is version '%s'.
|
||||||
|
|
||||||
|
@ -1653,7 +1656,7 @@ proc prepare_commit_msg_hook_wait {fd_ph} {
|
||||||
set pch_error {}
|
set pch_error {}
|
||||||
catch {file delete [gitdir PREPARE_COMMIT_MSG]}
|
catch {file delete [gitdir PREPARE_COMMIT_MSG]}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
fconfigure $fd_ph -blocking 0
|
fconfigure $fd_ph -blocking 0
|
||||||
catch {file delete [gitdir PREPARE_COMMIT_MSG]}
|
catch {file delete [gitdir PREPARE_COMMIT_MSG]}
|
||||||
}
|
}
|
||||||
|
@ -2001,72 +2004,72 @@ set filemask {
|
||||||
#define mask_width 14
|
#define mask_width 14
|
||||||
#define mask_height 15
|
#define mask_height 15
|
||||||
static unsigned char mask_bits[] = {
|
static unsigned char mask_bits[] = {
|
||||||
0xfe, 0x1f, 0xfe, 0x1f, 0xfe, 0x1f, 0xfe, 0x1f, 0xfe, 0x1f, 0xfe, 0x1f,
|
0xfe, 0x1f, 0xfe, 0x1f, 0xfe, 0x1f, 0xfe, 0x1f, 0xfe, 0x1f, 0xfe, 0x1f,
|
||||||
0xfe, 0x1f, 0xfe, 0x1f, 0xfe, 0x1f, 0xfe, 0x1f, 0xfe, 0x1f, 0xfe, 0x1f,
|
0xfe, 0x1f, 0xfe, 0x1f, 0xfe, 0x1f, 0xfe, 0x1f, 0xfe, 0x1f, 0xfe, 0x1f,
|
||||||
0xfe, 0x1f, 0xfe, 0x1f, 0xfe, 0x1f};
|
0xfe, 0x1f, 0xfe, 0x1f, 0xfe, 0x1f};
|
||||||
}
|
}
|
||||||
|
|
||||||
image create bitmap file_plain -background white -foreground black -data {
|
image create bitmap file_plain -background white -foreground black -data {
|
||||||
#define plain_width 14
|
#define plain_width 14
|
||||||
#define plain_height 15
|
#define plain_height 15
|
||||||
static unsigned char plain_bits[] = {
|
static unsigned char plain_bits[] = {
|
||||||
0xfe, 0x01, 0x02, 0x03, 0x02, 0x05, 0x02, 0x09, 0x02, 0x1f, 0x02, 0x10,
|
0xfe, 0x01, 0x02, 0x03, 0x02, 0x05, 0x02, 0x09, 0x02, 0x1f, 0x02, 0x10,
|
||||||
0x02, 0x10, 0x02, 0x10, 0x02, 0x10, 0x02, 0x10, 0x02, 0x10, 0x02, 0x10,
|
0x02, 0x10, 0x02, 0x10, 0x02, 0x10, 0x02, 0x10, 0x02, 0x10, 0x02, 0x10,
|
||||||
0x02, 0x10, 0x02, 0x10, 0xfe, 0x1f};
|
0x02, 0x10, 0x02, 0x10, 0xfe, 0x1f};
|
||||||
} -maskdata $filemask
|
} -maskdata $filemask
|
||||||
|
|
||||||
image create bitmap file_mod -background white -foreground blue -data {
|
image create bitmap file_mod -background white -foreground blue -data {
|
||||||
#define mod_width 14
|
#define mod_width 14
|
||||||
#define mod_height 15
|
#define mod_height 15
|
||||||
static unsigned char mod_bits[] = {
|
static unsigned char mod_bits[] = {
|
||||||
0xfe, 0x01, 0x02, 0x03, 0x7a, 0x05, 0x02, 0x09, 0x7a, 0x1f, 0x02, 0x10,
|
0xfe, 0x01, 0x02, 0x03, 0x7a, 0x05, 0x02, 0x09, 0x7a, 0x1f, 0x02, 0x10,
|
||||||
0xfa, 0x17, 0x02, 0x10, 0xfa, 0x17, 0x02, 0x10, 0xfa, 0x17, 0x02, 0x10,
|
0xfa, 0x17, 0x02, 0x10, 0xfa, 0x17, 0x02, 0x10, 0xfa, 0x17, 0x02, 0x10,
|
||||||
0xfa, 0x17, 0x02, 0x10, 0xfe, 0x1f};
|
0xfa, 0x17, 0x02, 0x10, 0xfe, 0x1f};
|
||||||
} -maskdata $filemask
|
} -maskdata $filemask
|
||||||
|
|
||||||
image create bitmap file_fulltick -background white -foreground "#007000" -data {
|
image create bitmap file_fulltick -background white -foreground "#007000" -data {
|
||||||
#define file_fulltick_width 14
|
#define file_fulltick_width 14
|
||||||
#define file_fulltick_height 15
|
#define file_fulltick_height 15
|
||||||
static unsigned char file_fulltick_bits[] = {
|
static unsigned char file_fulltick_bits[] = {
|
||||||
0xfe, 0x01, 0x02, 0x1a, 0x02, 0x0c, 0x02, 0x0c, 0x02, 0x16, 0x02, 0x16,
|
0xfe, 0x01, 0x02, 0x1a, 0x02, 0x0c, 0x02, 0x0c, 0x02, 0x16, 0x02, 0x16,
|
||||||
0x02, 0x13, 0x00, 0x13, 0x86, 0x11, 0x8c, 0x11, 0xd8, 0x10, 0xf2, 0x10,
|
0x02, 0x13, 0x00, 0x13, 0x86, 0x11, 0x8c, 0x11, 0xd8, 0x10, 0xf2, 0x10,
|
||||||
0x62, 0x10, 0x02, 0x10, 0xfe, 0x1f};
|
0x62, 0x10, 0x02, 0x10, 0xfe, 0x1f};
|
||||||
} -maskdata $filemask
|
} -maskdata $filemask
|
||||||
|
|
||||||
image create bitmap file_question -background white -foreground black -data {
|
image create bitmap file_question -background white -foreground black -data {
|
||||||
#define file_question_width 14
|
#define file_question_width 14
|
||||||
#define file_question_height 15
|
#define file_question_height 15
|
||||||
static unsigned char file_question_bits[] = {
|
static unsigned char file_question_bits[] = {
|
||||||
0xfe, 0x01, 0x02, 0x02, 0xe2, 0x04, 0xf2, 0x09, 0x1a, 0x1b, 0x0a, 0x13,
|
0xfe, 0x01, 0x02, 0x02, 0xe2, 0x04, 0xf2, 0x09, 0x1a, 0x1b, 0x0a, 0x13,
|
||||||
0x82, 0x11, 0xc2, 0x10, 0x62, 0x10, 0x62, 0x10, 0x02, 0x10, 0x62, 0x10,
|
0x82, 0x11, 0xc2, 0x10, 0x62, 0x10, 0x62, 0x10, 0x02, 0x10, 0x62, 0x10,
|
||||||
0x62, 0x10, 0x02, 0x10, 0xfe, 0x1f};
|
0x62, 0x10, 0x02, 0x10, 0xfe, 0x1f};
|
||||||
} -maskdata $filemask
|
} -maskdata $filemask
|
||||||
|
|
||||||
image create bitmap file_removed -background white -foreground red -data {
|
image create bitmap file_removed -background white -foreground red -data {
|
||||||
#define file_removed_width 14
|
#define file_removed_width 14
|
||||||
#define file_removed_height 15
|
#define file_removed_height 15
|
||||||
static unsigned char file_removed_bits[] = {
|
static unsigned char file_removed_bits[] = {
|
||||||
0xfe, 0x01, 0x02, 0x03, 0x02, 0x05, 0x02, 0x09, 0x02, 0x1f, 0x02, 0x10,
|
0xfe, 0x01, 0x02, 0x03, 0x02, 0x05, 0x02, 0x09, 0x02, 0x1f, 0x02, 0x10,
|
||||||
0x1a, 0x16, 0x32, 0x13, 0xe2, 0x11, 0xc2, 0x10, 0xe2, 0x11, 0x32, 0x13,
|
0x1a, 0x16, 0x32, 0x13, 0xe2, 0x11, 0xc2, 0x10, 0xe2, 0x11, 0x32, 0x13,
|
||||||
0x1a, 0x16, 0x02, 0x10, 0xfe, 0x1f};
|
0x1a, 0x16, 0x02, 0x10, 0xfe, 0x1f};
|
||||||
} -maskdata $filemask
|
} -maskdata $filemask
|
||||||
|
|
||||||
image create bitmap file_merge -background white -foreground blue -data {
|
image create bitmap file_merge -background white -foreground blue -data {
|
||||||
#define file_merge_width 14
|
#define file_merge_width 14
|
||||||
#define file_merge_height 15
|
#define file_merge_height 15
|
||||||
static unsigned char file_merge_bits[] = {
|
static unsigned char file_merge_bits[] = {
|
||||||
0xfe, 0x01, 0x02, 0x03, 0x62, 0x05, 0x62, 0x09, 0x62, 0x1f, 0x62, 0x10,
|
0xfe, 0x01, 0x02, 0x03, 0x62, 0x05, 0x62, 0x09, 0x62, 0x1f, 0x62, 0x10,
|
||||||
0xfa, 0x11, 0xf2, 0x10, 0x62, 0x10, 0x02, 0x10, 0xfa, 0x17, 0x02, 0x10,
|
0xfa, 0x11, 0xf2, 0x10, 0x62, 0x10, 0x02, 0x10, 0xfa, 0x17, 0x02, 0x10,
|
||||||
0xfa, 0x17, 0x02, 0x10, 0xfe, 0x1f};
|
0xfa, 0x17, 0x02, 0x10, 0xfe, 0x1f};
|
||||||
} -maskdata $filemask
|
} -maskdata $filemask
|
||||||
|
|
||||||
image create bitmap file_statechange -background white -foreground green -data {
|
image create bitmap file_statechange -background white -foreground green -data {
|
||||||
#define file_statechange_width 14
|
#define file_statechange_width 14
|
||||||
#define file_statechange_height 15
|
#define file_statechange_height 15
|
||||||
static unsigned char file_statechange_bits[] = {
|
static unsigned char file_statechange_bits[] = {
|
||||||
0xfe, 0x01, 0x02, 0x03, 0x02, 0x05, 0x02, 0x09, 0x02, 0x1f, 0x62, 0x10,
|
0xfe, 0x01, 0x02, 0x03, 0x02, 0x05, 0x02, 0x09, 0x02, 0x1f, 0x62, 0x10,
|
||||||
0x62, 0x10, 0xba, 0x11, 0xba, 0x11, 0x62, 0x10, 0x62, 0x10, 0x02, 0x10,
|
0x62, 0x10, 0xba, 0x11, 0xba, 0x11, 0x62, 0x10, 0x62, 0x10, 0x02, 0x10,
|
||||||
0x02, 0x10, 0x02, 0x10, 0xfe, 0x1f};
|
0x02, 0x10, 0x02, 0x10, 0xfe, 0x1f};
|
||||||
} -maskdata $filemask
|
} -maskdata $filemask
|
||||||
|
|
||||||
set ui_index .vpane.files.index.list
|
set ui_index .vpane.files.index.list
|
||||||
|
@ -3272,7 +3275,7 @@ pack .vpane -anchor n -side top -fill both -expand 1
|
||||||
textframe .vpane.files.workdir -height 100 -width 200
|
textframe .vpane.files.workdir -height 100 -width 200
|
||||||
tlabel .vpane.files.workdir.title -text [mc "Unstaged Changes"] \
|
tlabel .vpane.files.workdir.title -text [mc "Unstaged Changes"] \
|
||||||
-background lightsalmon -foreground black
|
-background lightsalmon -foreground black
|
||||||
ttext $ui_workdir -background white -foreground black \
|
ttext $ui_workdir \
|
||||||
-borderwidth 0 \
|
-borderwidth 0 \
|
||||||
-width 20 -height 10 \
|
-width 20 -height 10 \
|
||||||
-wrap none \
|
-wrap none \
|
||||||
|
@ -3294,7 +3297,7 @@ textframe .vpane.files.index -height 100 -width 200
|
||||||
tlabel .vpane.files.index.title \
|
tlabel .vpane.files.index.title \
|
||||||
-text [mc "Staged Changes (Will Commit)"] \
|
-text [mc "Staged Changes (Will Commit)"] \
|
||||||
-background lightgreen -foreground black
|
-background lightgreen -foreground black
|
||||||
ttext $ui_index -background white -foreground black \
|
ttext $ui_index \
|
||||||
-borderwidth 0 \
|
-borderwidth 0 \
|
||||||
-width 20 -height 10 \
|
-width 20 -height 10 \
|
||||||
-wrap none \
|
-wrap none \
|
||||||
|
@ -3321,7 +3324,9 @@ if {!$use_ttk} {
|
||||||
|
|
||||||
foreach i [list $ui_index $ui_workdir] {
|
foreach i [list $ui_index $ui_workdir] {
|
||||||
rmsel_tag $i
|
rmsel_tag $i
|
||||||
$i tag conf in_diff -background [$i tag cget in_sel -background]
|
$i tag conf in_diff \
|
||||||
|
-background $color::select_bg \
|
||||||
|
-foreground $color::select_fg
|
||||||
}
|
}
|
||||||
unset i
|
unset i
|
||||||
|
|
||||||
|
@ -3429,7 +3434,7 @@ if {![is_enabled nocommit]} {
|
||||||
}
|
}
|
||||||
|
|
||||||
textframe .vpane.lower.commarea.buffer.frame
|
textframe .vpane.lower.commarea.buffer.frame
|
||||||
ttext $ui_comm -background white -foreground black \
|
ttext $ui_comm \
|
||||||
-borderwidth 1 \
|
-borderwidth 1 \
|
||||||
-undo true \
|
-undo true \
|
||||||
-maxundo 20 \
|
-maxundo 20 \
|
||||||
|
@ -3558,7 +3563,7 @@ bind .vpane.lower.diff.header.path <Button-1> {do_file_open $current_diff_path}
|
||||||
#
|
#
|
||||||
textframe .vpane.lower.diff.body
|
textframe .vpane.lower.diff.body
|
||||||
set ui_diff .vpane.lower.diff.body.t
|
set ui_diff .vpane.lower.diff.body.t
|
||||||
ttext $ui_diff -background white -foreground black \
|
ttext $ui_diff \
|
||||||
-borderwidth 0 \
|
-borderwidth 0 \
|
||||||
-width 80 -height 5 -wrap none \
|
-width 80 -height 5 -wrap none \
|
||||||
-font font_diff \
|
-font font_diff \
|
||||||
|
@ -3878,18 +3883,18 @@ proc on_application_mapped {} {
|
||||||
set gm $repo_config(gui.geometry)
|
set gm $repo_config(gui.geometry)
|
||||||
if {$use_ttk} {
|
if {$use_ttk} {
|
||||||
bind .vpane <Map> \
|
bind .vpane <Map> \
|
||||||
[list on_ttk_pane_mapped %W 0 [lindex $gm 1]]
|
[list on_ttk_pane_mapped %W 0 [lindex $gm 1]]
|
||||||
bind .vpane.files <Map> \
|
bind .vpane.files <Map> \
|
||||||
[list on_ttk_pane_mapped %W 0 [lindex $gm 2]]
|
[list on_ttk_pane_mapped %W 0 [lindex $gm 2]]
|
||||||
} else {
|
} else {
|
||||||
bind .vpane <Map> \
|
bind .vpane <Map> \
|
||||||
[list on_tk_pane_mapped %W 0 \
|
[list on_tk_pane_mapped %W 0 \
|
||||||
[lindex $gm 1] \
|
[lindex $gm 1] \
|
||||||
[lindex [.vpane sash coord 0] 1]]
|
[lindex [.vpane sash coord 0] 1]]
|
||||||
bind .vpane.files <Map> \
|
bind .vpane.files <Map> \
|
||||||
[list on_tk_pane_mapped %W 0 \
|
[list on_tk_pane_mapped %W 0 \
|
||||||
[lindex [.vpane.files sash coord 0] 0] \
|
[lindex [.vpane.files sash coord 0] 0] \
|
||||||
[lindex $gm 2]]
|
[lindex $gm 2]]
|
||||||
}
|
}
|
||||||
wm geometry . [lindex $gm 0]
|
wm geometry . [lindex $gm 0]
|
||||||
}
|
}
|
||||||
|
|
|
@ -328,6 +328,7 @@ constructor new {i_commit i_path i_jump} {
|
||||||
bind $i <Any-Motion> [cb _show_tooltip $i @%x,%y]
|
bind $i <Any-Motion> [cb _show_tooltip $i @%x,%y]
|
||||||
bind $i <Any-Enter> [cb _hide_tooltip]
|
bind $i <Any-Enter> [cb _hide_tooltip]
|
||||||
bind $i <Any-Leave> [cb _hide_tooltip]
|
bind $i <Any-Leave> [cb _hide_tooltip]
|
||||||
|
bind $i <Deactivate> [cb _hide_tooltip]
|
||||||
bind_button3 $i "
|
bind_button3 $i "
|
||||||
[cb _hide_tooltip]
|
[cb _hide_tooltip]
|
||||||
set cursorX %x
|
set cursorX %x
|
||||||
|
|
|
@ -1,6 +1,44 @@
|
||||||
# Functions for supporting the use of themed Tk widgets in git-gui.
|
# Functions for supporting the use of themed Tk widgets in git-gui.
|
||||||
# Copyright (C) 2009 Pat Thoyts <patthoyts@users.sourceforge.net>
|
# Copyright (C) 2009 Pat Thoyts <patthoyts@users.sourceforge.net>
|
||||||
|
|
||||||
|
|
||||||
|
namespace eval color {
|
||||||
|
# Variable colors
|
||||||
|
# Preffered way to set widget colors is using add_option.
|
||||||
|
# In some cases, like with tags in_diff/in_sel, we use these colors.
|
||||||
|
variable select_bg lightgray
|
||||||
|
variable select_fg black
|
||||||
|
|
||||||
|
proc sync_with_theme {} {
|
||||||
|
set base_bg [ttk::style lookup . -background]
|
||||||
|
set base_fg [ttk::style lookup . -foreground]
|
||||||
|
set text_bg [ttk::style lookup Treeview -background]
|
||||||
|
set text_fg [ttk::style lookup Treeview -foreground]
|
||||||
|
set select_bg [ttk::style lookup Default -selectbackground]
|
||||||
|
set select_fg [ttk::style lookup Default -selectforeground]
|
||||||
|
|
||||||
|
set color::select_bg $select_bg
|
||||||
|
set color::select_fg $select_fg
|
||||||
|
|
||||||
|
proc add_option {key val} {
|
||||||
|
option add $key $val widgetDefault
|
||||||
|
}
|
||||||
|
# Add options for plain Tk widgets
|
||||||
|
# Using `option add` instead of tk_setPalette to avoid unintended
|
||||||
|
# consequences.
|
||||||
|
if {![is_MacOSX]} {
|
||||||
|
add_option *Menu.Background $base_bg
|
||||||
|
add_option *Menu.Foreground $base_fg
|
||||||
|
add_option *Menu.activeBackground $select_bg
|
||||||
|
add_option *Menu.activeForeground $select_fg
|
||||||
|
}
|
||||||
|
add_option *Text.Background $text_bg
|
||||||
|
add_option *Text.Foreground $text_fg
|
||||||
|
add_option *Text.HighlightBackground $base_bg
|
||||||
|
add_option *Text.HighlightColor $select_bg
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
proc ttk_get_current_theme {} {
|
proc ttk_get_current_theme {} {
|
||||||
# Handle either current Tk or older versions of 8.5
|
# Handle either current Tk or older versions of 8.5
|
||||||
if {[catch {set theme [ttk::style theme use]}]} {
|
if {[catch {set theme [ttk::style theme use]}]} {
|
||||||
|
|
Загрузка…
Ссылка в новой задаче