Project

General

Profile

Bug #7946

Default selection and current browse row color differs for different customers applications

Added by Stanislav Lomany 7 months ago. Updated 6 months ago.

Status:
Test
Priority:
Normal
Target version:
-
Start date:
Due date:
% Done:

100%

billable:
No
vendor_id:
GCD
case_num:

colors.png (13.9 KB) Stanislav Lomany, 10/20/2023 04:15 AM

registry.png (60.2 KB) Stanislav Lomany, 10/20/2023 04:35 AM

4gl.png (7.37 KB) Stanislav Lomany, 10/21/2023 10:16 AM

History

#2 Updated by Stanislav Lomany 7 months ago

We have differences in "selection color" which affects color of selection in fill-in, editor, drop-downs and selection lists, including the ones in browses and browse "row color" for the selected rows.

Systems used:
app_A - Windows Server 2012 + OE 11.x
app_C - Windows Server 2016 + OE 10.x (!)
app_M - Windows Server 2016 + OE 11.x

Greg, I've previously reported 11.x for app_C but that is incorrect, I was testing it on 10.X. The machine has 11.X but the license for it is expired. Do you know on which version app_C itself is running?

Things to notice:
1. app_C has the row color the same as the selection color. There's a manual on how to change it using registry: #7583-30 I don't know why this works on the specific configurations, because normally the described registry change affects only the selection color.
2. app_A and FWD use blue selection color while app_C and app_M - dark blue.
3. Gray row color in FWD is slightly darker that in app_A and app_M.

I personally suggest to make the colors configurable in order to support this zoo. As a bonus we will support the case when a customer wants to change selection color thru the registry.

#3 Updated by Stanislav Lomany 7 months ago

While app_C and app_M have different row color, the HKEY_CURRENT_USER\Control Panel\Colors sections are the same, which is:

#4 Updated by Greg Shah 7 months ago

  • Start date deleted (10/20/2023)

app_A - Windows Server 2012 + OE 11.x
app_C - Windows Server 2016 + OE 10.x (!)
app_M - Windows Server 2016 + OE 11.x

Greg, I've previously reported 11.x for app_C but that is incorrect, I was testing it on 10.X. The machine has 11.X but the license for it is expired. Do you know on which version app_C itself is running?

I think at least some (maybe most) of the production installations are 10.x but they may have a mix of 11.x in there.

I personally suggest to make the colors configurable in order to support this zoo. As a bonus we will support the case when a customer wants to change selection color thru the registry.

What is your suggested approach for this? It would need to be able to have defaults set for the entire system and then overrides for specific servers/groups/accounts, so this is probably something that fits in the "runtime" settings section. On the other hand, I think we can configure the 4GL color table in the directory too, right? It might be confusing to have this very separated from that stuff. I would want the structure to be simple and consistent.

We can move ahead with this idea BUT I really do want us to know the exact reasons why <app_C> has a difference in behavior from the other applications.

#5 Updated by Stanislav Lomany 6 months ago

I found the cause of the issue. This picture from my earlier investigations which illustrates the difference between the two drawing modes for the current row.

Starting with OpenEdge 11.5, the browse widget will paint a translucent selection bar (on the left).
Prior to OpenEdge 11.5, the browse widget paints selected rows as opaque using the highlight colors which are defined for the entire Windows session (on the right). This means that no matter what FGCOLOR or BGCOLOR are defined, the browse will always paint selected rows with a background color that is the same as the Windows COLOR_HIGHLIGHT and a foreground color that matches the Windows COLOR_HIGHLIGHTTEXT.

In OpenEdge 11.5 and later you can set OldBrowseSelectionBar parameter to revert the row coloring to the old mode.
Add OldBrowseSelectionBar=yes in the Startup section of the registry / INI file. For example in:
"Computer\HKEY_CURRENT_USER\SOFTWARE\PSC\PROGRESS\11.6\Startup"
"Computer\HKEY_LOCAL_MACHINE\SOFTWARE\PSC\PROGRESS\11.6\Startup"
or in the INI file with:

[Startup]
...
OldBrowseSelectionBar=yes

Sources:
https://community.progress.com/s/article/P22578
https://community.progress.com/s/article/000056499

#6 Updated by Stanislav Lomany 6 months ago

Should we add oldBrowseSelectionBar parameter to the directory? E.g. in server/default/theme/oldBrowseSelectionBar?

Regarding the light blue selection color in app_A - it's default COLOR_HIGHLIGHT for Windows Server 2012. While Windows Server 2016 and Windows 10 use dark blue.

Do you want to subclass Windows10Theme with WindowsServer2012Theme?

#7 Updated by Greg Shah 6 months ago

Stanislav Lomany wrote:

Should we add oldBrowseSelectionBar parameter to the directory? E.g. in server/default/theme/oldBrowseSelectionBar?

Regarding the light blue selection color in app_A - it's default COLOR_HIGHLIGHT for Windows Server 2012. While Windows Server 2016 and Windows 10 use dark blue.

Do you want to subclass Windows10Theme with WindowsServer2012Theme?

Yes, both ideas seem to be quite reasonable. Instead of /server/default/theme/oldBrowseSelectionBar, please make this a setting in the runtime area, just like we would set the decimal separator or other runtime values.

#8 Updated by Greg Shah 6 months ago

Very nice work in figuring this out!

#9 Updated by Stanislav Lomany 6 months ago

  • Status changed from New to WIP

Created task branch 7946a from FWD trunk revision 14786.

#10 Updated by Stanislav Lomany 6 months ago

Rebased task branch 7946a from FWD trunk revision 14824.

#11 Updated by Stanislav Lomany 6 months ago

  • Status changed from WIP to Review
  • % Done changed from 0 to 100

The fix is in 7946a rev 14826. Please review.

#12 Updated by Greg Shah 6 months ago

Hynek: Please review.

#13 Updated by Hynek Cihlar 6 months ago

Code review 7946a.

The assignment of oldBrowseSelectionBar in EBCM.isOldBrowseSelectionBar should be double-locked: if (oldBrowseSelectionBar == null) { synchronized(...) { if (oldBrowseSelectionBar == null) ....

Otherwise the changes look good.

#14 Updated by Stanislav Lomany 6 months ago

The assignment of oldBrowseSelectionBar in EBCM.isOldBrowseSelectionBar should be double-locked

Fixed in 7946a rev 14827.
Greg, should I commit?

#15 Updated by Stanislav Lomany 6 months ago

Greg, I think that for app_A we should set the new Windows 2012 theme, and for app_C - enable the new oldBrowseSelectionBar parameter. Should I do the changes?

#16 Updated by Greg Shah 6 months ago

should I commit?

Yes, you can merge to trunk now.

I think that for app_A we should set the new Windows 2012 theme, and for app_C - enable the new oldBrowseSelectionBar parameter. Should I do the changes?

Yes, please commit these cfg changes at the same time you merge to trunk. Mention these cfg changes in your commit notice.

#17 Updated by Stanislav Lomany 6 months ago

app_A actually uses Material theme and therefore it hasn't been regressed by the Windows 10 theme changes as I assumed. It doesn't need any changes.

#18 Updated by Stanislav Lomany 6 months ago

7946a has been merged into the trunk as bzr revision 14825.
app_C changes to the directory.xml template have been merged as rev 359.

#19 Updated by Greg Shah 6 months ago

  • Status changed from Review to Test

Also available in: Atom PDF