All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stefan Haller <stefan@haller-berlin.de>
To: Pratyush Yadav <me@yadavpratyush.com>
Cc: serg.partizan@gmail.com, git@vger.kernel.org
Subject: Re: [PATCH v2] git-gui: use gray background for inactive text widgets
Date: Thu, 17 Dec 2020 23:14:00 +0100	[thread overview]
Message-ID: <63356203-8af0-64e5-4694-f47d31bcdee6@haller-berlin.de> (raw)
In-Reply-To: <20201217214912.ycp7bidcyqwzslxy@yadavpratyush.com>

On 17.12.20 22:49, Pratyush Yadav wrote:
> Hi,
> 
> On 24/11/20 10:23PM, Stefan Haller wrote:
>> Second version; it simplifies the code to initialize and update the colors in
>> the two file list views a bit, and it calculates a gray color for the inactive
>> selection from the active selection. This looks a lot better in the themes I
>> have tried.
>>
>> The bug with the inactive diff selection background on Mac is still there,
>> however.
>>
>> --- 8< ---
>>
>> This makes it easier to see at a glance which of the four main views has the
>> keyboard focus.
> 
> Missing Signed-off-by.

If you are willing to add this in yourself, that would be nice, I don't
have time to send another patch today:

Signed-off-by: Stefan Haller <stefan@haller-berlin.de>

>> ---
>>  git-gui.sh     | 18 ++++++++++++------
>>  lib/themed.tcl | 21 +++++++++++++++++----
>>  2 files changed, 29 insertions(+), 10 deletions(-)
>>
>> diff --git a/git-gui.sh b/git-gui.sh
>> index 867b8ce..e818caa 100755
>> --- a/git-gui.sh
>> +++ b/git-gui.sh
>> @@ -720,9 +720,6 @@ proc rmsel_tag {text} {
>>  		-background [$text cget -background] \
>>  		-foreground [$text cget -foreground] \
>>  		-borderwidth 0
>> -	$text tag conf in_sel\
>> -		-background $color::select_bg \
>> -		-foreground $color::select_fg
>>  	bind $text <Motion> break
>>  	return $text
>>  }
>> @@ -3322,11 +3319,20 @@ if {!$use_ttk} {
>>  	.vpane.files paneconfigure .vpane.files.index -sticky news
>>  }
>>
>> +proc set_selection_colors {w has_focus} {
>> +	foreach tag [list in_diff in_sel] {
>> +		$w tag conf $tag \
>> +			-background [expr {$has_focus ? $color::select_bg : $color::inactive_select_bg}] \
>> +			-foreground [expr {$has_focus ? $color::select_fg : $color::inactive_select_fg}]
>> +	}
>> +}
>> +
>>  foreach i [list $ui_index $ui_workdir] {
>>  	rmsel_tag $i
>> -	$i tag conf in_diff \
>> -		-background $color::select_bg \
>> -		-foreground $color::select_fg
>> +
>> +	set_selection_colors $i 0
>> +	bind $i <FocusIn>	{ set_selection_colors %W 1 }
>> +	bind $i <FocusOut>	{ set_selection_colors %W 0 }
>>  }
>>  unset i
>>
>> diff --git a/lib/themed.tcl b/lib/themed.tcl
>> index eda5f8c..db49085 100644
>> --- a/lib/themed.tcl
>> +++ b/lib/themed.tcl
>> @@ -6,8 +6,10 @@ 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
>> +	variable select_bg				lightgray
>> +	variable select_fg				black
>> +	variable inactive_select_bg		lightgray
>> +	variable inactive_select_fg		black
>>
>>  	proc sync_with_theme {} {
>>  		set base_bg		[ttk::style lookup . -background]
>> @@ -19,6 +21,8 @@ namespace eval color {
>>
>>  		set color::select_bg $select_bg
>>  		set color::select_fg $select_fg
>> +		set color::inactive_select_bg [convert_rgb_to_gray $select_bg]
>> +		set color::inactive_select_fg $select_fg
>>
>>  		proc add_option {key val} {
>>  			option add $key $val widgetDefault
>> @@ -36,11 +40,20 @@ namespace eval color {
>>  		add_option *Text.Foreground $text_fg
>>  		add_option *Text.selectBackground $select_bg
>>  		add_option *Text.selectForeground $select_fg
>> -		add_option *Text.inactiveSelectBackground $select_bg
>> -		add_option *Text.inactiveSelectForeground $select_fg
>> +		add_option *Text.inactiveSelectBackground $color::inactive_select_bg
>> +		add_option *Text.inactiveSelectForeground $color::inactive_select_fg
> 
> Nitpick: Do what is being done for select_bg and select_fg and create a 
> local variable for it.
> 
>>  	}
>>  }
>>
>> +proc convert_rgb_to_gray {rgb} {
>> +	# Simply take the average of red, green and blue. This wouldn't be good
>> +	# enough for, say, converting a photo to grayscale, but for this simple
>> +	# purpose of approximating the brightness of a color it's good enough.
>> +	lassign [winfo rgb . $rgb] r g b
> 
> Is there no simpler way to extract r, g, and b? This is a little cryptic 
> to be honest.

Actually, I find this pretty elegant, and from what I have seen, it's
idiomatic Tcl. A less cryptic way would be (untested):

  set components [winfo rgb . $rgb]
  set r [lindex $components 0]
  set g [lindex $components 1]
  set b [lindex $components 2]

But I much prefer the one-line version.

>> +	set gray [expr {($r / 256 + $g / 256 + $b / 256) / 3}]
>> +	return [format "#%2.2X%2.2X%2.2X" $gray $gray $gray]
>> +}
>> +
>>  proc ttk_get_current_theme {} {
>>  	# Handle either current Tk or older versions of 8.5
>>  	if {[catch {set theme [ttk::style theme use]}]} {
> 
> The patch looks good for the most part. I can fix the above nitpick 
> locally and merge it in tomorrow if you send me your signoff by then. I 
> don't want to hold off the PR to Junio too much longer. A simple reply 
> containing your Signed-off-by should be fine. Thanks.

Awesome, thanks for that.

-Stefan

  reply	other threads:[~2020-12-17 22:14 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-08-24 15:48 [PATCH] git-gui: Basic dark mode support Serg Tereshchenko
2020-08-25 19:01 ` Matthias Aßhauer
2020-09-22 11:04 ` Pratyush Yadav
2020-09-26 14:54   ` [PATCH v2] " Serg Tereshchenko
2020-10-07 11:07     ` Pratyush Yadav
2020-10-08  8:24       ` [PATCH] " Serg Tereshchenko
2020-10-08 13:07     ` [PATCH v2] " Pratyush Yadav
2020-11-21 17:47       ` Stefan Haller
2020-11-22 12:30         ` serg.partizan
2020-11-22 13:32         ` [PATCH] git-gui: Fix selected text colors Serg Tereshchenko
2020-11-22 15:41           ` Stefan Haller
2020-11-22 17:16             ` serg.partizan
2020-11-23 11:48               ` [PATCH] git-gui: use gray selection background for inactive text widgets Stefan Haller
2020-11-23 13:13                 ` serg.partizan
2020-11-23 19:03                   ` Stefan Haller
2020-11-23 20:08                     ` serg.partizan
2020-11-29 17:40                 ` Stefan Haller
2020-11-30 13:41                   ` serg.partizan
2020-11-30 18:08                     ` [PATCH] git-gui: use gray selection background for inactive text?? widgets Pratyush Yadav
2020-11-30 20:18                       ` [PATCH] git-gui: use gray selection background for inactive text widgets Stefan Haller
2020-11-30 20:18                         ` [PATCH] git-gui: keep showing selection when diff view gets deactivated on Mac Stefan Haller
2020-11-23 19:03               ` [PATCH] git-gui: Fix selected text colors Stefan Haller
2020-11-23 20:50                 ` serg.partizan
2020-11-24 21:19                   ` Stefan Haller
2020-11-24 21:23                     ` [PATCH v2] git-gui: use gray background for inactive text widgets Stefan Haller
2020-12-17 21:49                       ` Pratyush Yadav
2020-12-17 22:14                         ` Stefan Haller [this message]
2020-12-18 12:50                           ` Pratyush Yadav
2020-12-18 13:01                             ` Stefan Haller
2020-12-18  9:43                         ` [PATCH v3] " Stefan Haller
2020-12-18 12:51                           ` Pratyush Yadav
2020-12-18 19:46                           ` Pratyush Yadav
2020-12-17 20:23           ` [PATCH] git-gui: Fix selected text colors Pratyush Yadav
2020-10-07 11:13 ` [PATCH] git-gui: Basic dark mode support Pratyush Yadav
2020-10-08  8:20   ` Serg Tereshchenko
2020-10-08  8:28     ` Pratyush Yadav
2020-10-08  8:44       ` Serg Tereshchenko

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=63356203-8af0-64e5-4694-f47d31bcdee6@haller-berlin.de \
    --to=stefan@haller-berlin.de \
    --cc=git@vger.kernel.org \
    --cc=me@yadavpratyush.com \
    --cc=serg.partizan@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.