Files
odfstudio/android/source/src/java/org
Michael Weghorn 5c50d8f7ee android: Handle auto color as such
When no color is explicitly set for the font/background
(i.e. automatic color is used which would e.g. be black
for the font if no background color is set or white
if a black highlight color is set in Writer), the value
for the color sent in the ".uno:Color" event for the font
color and similarly for the background/highlight color
(".uno:BackgroundColor" in Calc, ".uno:CharBackColor"
in Impress, ".uno:BackColor" in Writer) is -1.

The previous handling of that special value was problematic:

1) Where handled specifically, -1 was interpreted as "black color"
rather than "auto/no color".

2) The color handled by the above-mentioned UNO events
does not contain/handle the alpha channel, while Android
does, so a conversion happens to add/remove the alpha
layer.
However, the anonymous `ColorPaletteListener`s that handle font
and background color updates in their `updateColorPickerPosition`
methods were not doing a logical or to add an alpha channel to
the LO-provided color, but *adding* 0xFF000000 instead, which is
the same for actual colors without an alpha channel set, but
the actual special value of -1 (0xFFFFFFFF) would then
be converted to 0xFEFFFFFF and no longer be treated as
special.

The way of treating -1 as black would also have the
side effect that an explicit white color (0x00FFFFFF) would
be converted to 0xFFFFFFFF, which is -1, and
would therefore be treated as black.
(So setting font color to white would result in black
being shown as font color in the font color UI in experimental
mode instead...)

In order to actually handle auto color as such, handle
the special value of -1 right in the `updateColorPickerPosition`
methods: In that case, unselect any explicitly selected color
(and set color to transparent for the buttons in the "Style"
tab of the toolbar, `font_color_picker_button`
and `font_back_color_picker_button` in `toolbar_bottom.xml`).
Also, do a logical or to add the alpha layer instead
of adding 0xFF000000.

While at it, unify the code in the two
`updateColorPickerPosition` methods a bit.

Change-Id: I2e6512f32e671f92c8d31b2780c350dd74fb0747
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/133992
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2022-05-08 08:25:36 +02:00
..