From 42ce7c7539a271881b786ce3342b467729a4a650 Mon Sep 17 00:00:00 2001
From: looncraz <looncraz@looncraz.net>
Date: Tue, 19 Jul 2016 15:47:13 +0000
Subject: [PATCH] StringView proper color inheritence
Legacy applications setting colors manually on BStringView would prevent
the BStringView from inheriting theparent view color. Most legacy
applications that did this also set the view color manually, so this went
unnoticed except in Beezer's Preferences window.
This fix introduces another, minor, issue for legacy applications that do
the same thing - they will not receive the system default panel text color.
In most instances, you don't want that happening anyway, so it's not much of
an issue.
Fixes ticket# 12868
---
src/kits/interface/StringView.cpp | 24 +++++++++++++++++-------
1 file changed, 17 insertions(+), 7 deletions(-)
diff --git a/src/kits/interface/StringView.cpp b/src/kits/interface/StringView.cpp
index 29a6c93..6f39ebd 100644
a
|
b
|
BStringView::Archive(BMessage* data, bool deep) const
|
128 | 128 | void |
129 | 129 | BStringView::AttachedToWindow() |
130 | 130 | { |
131 | | if (HasDefaultColors()) { |
132 | | AdoptParentColors(); |
| 131 | if (HasDefaultColors()) |
133 | 132 | SetHighUIColor(B_PANEL_TEXT_COLOR); |
134 | | } |
135 | 133 | |
136 | | if (ViewColor() == B_TRANSPARENT_COLOR) { |
137 | | SetViewUIColor(B_PANEL_BACKGROUND_COLOR); |
138 | | SetLowUIColor(B_PANEL_BACKGROUND_COLOR); |
139 | | SetHighUIColor(B_PANEL_TEXT_COLOR); |
| 134 | BView* parent = Parent(); |
| 135 | |
| 136 | if (parent != NULL) { |
| 137 | float tint = B_NO_TINT; |
| 138 | color_which which = parent->ViewUIColor(&tint); |
| 139 | |
| 140 | if (which != B_NO_COLOR) { |
| 141 | SetViewUIColor(which, tint); |
| 142 | SetLowUIColor(which, tint); |
| 143 | } else { |
| 144 | SetViewColor(parent->ViewColor()); |
| 145 | SetLowColor(ViewColor()); |
| 146 | } |
140 | 147 | } |
| 148 | |
| 149 | if (ViewColor() == B_TRANSPARENT_COLOR) |
| 150 | AdoptSystemColors(); |
141 | 151 | } |
142 | 152 | |
143 | 153 | |