* Stronger BMenuField popup indicator.
* Softer recessed frame for BMenuField to distinguish more from BButton and make it slightly more similar to BTextControl. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29235 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -61,7 +61,7 @@ public:
|
|||||||
virtual float DefaultLabelSpacing() const;
|
virtual float DefaultLabelSpacing() const;
|
||||||
uint32 Flags(BControl* control) const;
|
uint32 Flags(BControl* control) const;
|
||||||
|
|
||||||
virtual void DrawButtonFrame(BView* view, BRect& rect,
|
virtual void DrawButtonFrame(BView* view, BRect& rect,
|
||||||
const BRect& updateRect,
|
const BRect& updateRect,
|
||||||
const rgb_color& base,
|
const rgb_color& base,
|
||||||
uint32 flags = 0,
|
uint32 flags = 0,
|
||||||
@@ -80,6 +80,12 @@ public:
|
|||||||
const rgb_color& base,
|
const rgb_color& base,
|
||||||
uint32 borders = B_ALL_BORDERS);
|
uint32 borders = B_ALL_BORDERS);
|
||||||
|
|
||||||
|
virtual void DrawMenuFieldFrame(BView* view, BRect& rect,
|
||||||
|
const BRect& updateRect,
|
||||||
|
const rgb_color& base,
|
||||||
|
uint32 flags = 0,
|
||||||
|
uint32 borders = B_ALL_BORDERS);
|
||||||
|
|
||||||
virtual void DrawMenuFieldBackground(BView* view,
|
virtual void DrawMenuFieldBackground(BView* view,
|
||||||
BRect& rect, const BRect& updateRect,
|
BRect& rect, const BRect& updateRect,
|
||||||
const rgb_color& base, bool popupIndicator,
|
const rgb_color& base, bool popupIndicator,
|
||||||
@@ -203,6 +209,13 @@ public:
|
|||||||
const BAlignment& alignment);
|
const BAlignment& alignment);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
void _DrawButtonFrame(BView* view, BRect& rect,
|
||||||
|
const BRect& updateRect,
|
||||||
|
const rgb_color& base,
|
||||||
|
float contrast, float brightness = 1.0,
|
||||||
|
uint32 flags = 0,
|
||||||
|
uint32 borders = B_ALL_BORDERS);
|
||||||
|
|
||||||
void _DrawOuterResessedFrame(BView* view,
|
void _DrawOuterResessedFrame(BView* view,
|
||||||
BRect& rect, const rgb_color& base,
|
BRect& rect, const rgb_color& base,
|
||||||
float contrast = 1.0f,
|
float contrast = 1.0f,
|
||||||
|
|||||||
@@ -68,68 +68,7 @@ void
|
|||||||
BControlLook::DrawButtonFrame(BView* view, BRect& rect, const BRect& updateRect,
|
BControlLook::DrawButtonFrame(BView* view, BRect& rect, const BRect& updateRect,
|
||||||
const rgb_color& base, uint32 flags, uint32 borders)
|
const rgb_color& base, uint32 flags, uint32 borders)
|
||||||
{
|
{
|
||||||
// colors
|
_DrawButtonFrame(view, rect, updateRect, base, 1.0, 1.0, flags, borders);
|
||||||
rgb_color dark1BorderColor;
|
|
||||||
rgb_color dark2BorderColor;
|
|
||||||
|
|
||||||
if ((flags & B_DISABLED) == 0) {
|
|
||||||
dark1BorderColor = tint_color(base, 1.33);
|
|
||||||
dark2BorderColor = tint_color(base, 1.45);
|
|
||||||
|
|
||||||
if (flags & B_DEFAULT_BUTTON) {
|
|
||||||
dark2BorderColor = tint_color(dark1BorderColor, 1.5);
|
|
||||||
dark1BorderColor = tint_color(dark1BorderColor, 1.35);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
dark1BorderColor = tint_color(base, 1.147);
|
|
||||||
dark2BorderColor = tint_color(base, 1.24);
|
|
||||||
|
|
||||||
if (flags & B_DEFAULT_BUTTON) {
|
|
||||||
dark1BorderColor = tint_color(dark1BorderColor, 1.12);
|
|
||||||
dark2BorderColor = tint_color(dark1BorderColor, 1.16);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (flags & B_ACTIVATED) {
|
|
||||||
rgb_color temp = dark2BorderColor;
|
|
||||||
dark2BorderColor = dark1BorderColor;
|
|
||||||
dark1BorderColor = temp;
|
|
||||||
}
|
|
||||||
|
|
||||||
// indicate focus by changing main button border
|
|
||||||
if (flags & B_FOCUSED) {
|
|
||||||
dark1BorderColor = ui_color(B_KEYBOARD_NAVIGATION_COLOR);
|
|
||||||
dark2BorderColor = dark1BorderColor;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (flags & B_DEFAULT_BUTTON) {
|
|
||||||
float focusTint = 1.2;
|
|
||||||
if (flags & B_DISABLED)
|
|
||||||
focusTint = (B_NO_TINT + focusTint) / 2;
|
|
||||||
|
|
||||||
rgb_color focusColor = tint_color(base, focusTint);
|
|
||||||
view->SetHighColor(base);
|
|
||||||
|
|
||||||
view->StrokeRect(rect);
|
|
||||||
rect.InsetBy(1.0, 1.0);
|
|
||||||
|
|
||||||
view->SetHighColor(focusColor);
|
|
||||||
view->StrokeRect(rect);
|
|
||||||
rect.InsetBy(1.0, 1.0);
|
|
||||||
view->StrokeRect(rect);
|
|
||||||
rect.InsetBy(1.0, 1.0);
|
|
||||||
|
|
||||||
// bevel around external border
|
|
||||||
_DrawOuterResessedFrame(view, rect, focusColor,
|
|
||||||
(flags & B_DISABLED) ? 0.5 : 0.8, 0.9, borders);
|
|
||||||
} else {
|
|
||||||
// bevel around external border
|
|
||||||
_DrawOuterResessedFrame(view, rect, base,
|
|
||||||
(flags & B_DISABLED) ? 0.0 : 1.0, 1.0, borders);
|
|
||||||
}
|
|
||||||
|
|
||||||
_DrawFrame(view, rect, dark1BorderColor, dark1BorderColor,
|
|
||||||
dark2BorderColor, dark2BorderColor, borders);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -263,6 +202,14 @@ BControlLook::DrawMenuBarBackground(BView* view, BRect& rect,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
BControlLook::DrawMenuFieldFrame(BView* view, BRect& rect, const BRect& updateRect,
|
||||||
|
const rgb_color& base, uint32 flags, uint32 borders)
|
||||||
|
{
|
||||||
|
_DrawButtonFrame(view, rect, updateRect, base, 0.6, 1.0, flags, borders);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
BControlLook::DrawMenuFieldBackground(BView* view, BRect& rect,
|
BControlLook::DrawMenuFieldBackground(BView* view, BRect& rect,
|
||||||
const BRect& updateRect, const rgb_color& base, bool popupIndicator,
|
const BRect& updateRect, const rgb_color& base, bool popupIndicator,
|
||||||
@@ -282,10 +229,10 @@ BControlLook::DrawMenuFieldBackground(BView* view, BRect& rect,
|
|||||||
rgb_color markColor;
|
rgb_color markColor;
|
||||||
if (flags & B_DISABLED) {
|
if (flags & B_DISABLED) {
|
||||||
indicatorBase = tint_color(base, 1.05);
|
indicatorBase = tint_color(base, 1.05);
|
||||||
markColor = tint_color(base, B_DARKEN_3_TINT);
|
markColor = tint_color(base, 1.35);
|
||||||
} else {
|
} else {
|
||||||
indicatorBase = tint_color(base, 1.09);
|
indicatorBase = tint_color(base, 1.12);
|
||||||
markColor = tint_color(base, B_DARKEN_4_TINT);
|
markColor = tint_color(base, 1.65);
|
||||||
}
|
}
|
||||||
|
|
||||||
DrawMenuFieldBackground(view, rightRect, updateRect, indicatorBase,
|
DrawMenuFieldBackground(view, rightRect, updateRect, indicatorBase,
|
||||||
@@ -1547,6 +1494,78 @@ BControlLook::DrawLabel(BView* view, const char* label, BRect rect,
|
|||||||
// #pragma mark -
|
// #pragma mark -
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
BControlLook::_DrawButtonFrame(BView* view, BRect& rect,
|
||||||
|
const BRect& updateRect, const rgb_color& base,
|
||||||
|
float contrast, float brightness, uint32 flags, uint32 borders)
|
||||||
|
{
|
||||||
|
// colors
|
||||||
|
rgb_color dark1BorderColor;
|
||||||
|
rgb_color dark2BorderColor;
|
||||||
|
|
||||||
|
if ((flags & B_DISABLED) == 0) {
|
||||||
|
dark1BorderColor = tint_color(base, 1.33);
|
||||||
|
dark2BorderColor = tint_color(base, 1.45);
|
||||||
|
|
||||||
|
if (flags & B_DEFAULT_BUTTON) {
|
||||||
|
dark2BorderColor = tint_color(dark1BorderColor, 1.5);
|
||||||
|
dark1BorderColor = tint_color(dark1BorderColor, 1.35);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
dark1BorderColor = tint_color(base, 1.147);
|
||||||
|
dark2BorderColor = tint_color(base, 1.24);
|
||||||
|
|
||||||
|
if (flags & B_DEFAULT_BUTTON) {
|
||||||
|
dark1BorderColor = tint_color(dark1BorderColor, 1.12);
|
||||||
|
dark2BorderColor = tint_color(dark1BorderColor, 1.16);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (flags & B_ACTIVATED) {
|
||||||
|
rgb_color temp = dark2BorderColor;
|
||||||
|
dark2BorderColor = dark1BorderColor;
|
||||||
|
dark1BorderColor = temp;
|
||||||
|
}
|
||||||
|
|
||||||
|
// indicate focus by changing main button border
|
||||||
|
if (flags & B_FOCUSED) {
|
||||||
|
dark1BorderColor = ui_color(B_KEYBOARD_NAVIGATION_COLOR);
|
||||||
|
dark2BorderColor = dark1BorderColor;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (flags & B_DEFAULT_BUTTON) {
|
||||||
|
float focusTint = 1.2;
|
||||||
|
if (flags & B_DISABLED)
|
||||||
|
focusTint = (B_NO_TINT + focusTint) / 2;
|
||||||
|
|
||||||
|
rgb_color focusColor = tint_color(base, focusTint);
|
||||||
|
view->SetHighColor(base);
|
||||||
|
|
||||||
|
view->StrokeRect(rect);
|
||||||
|
rect.InsetBy(1.0, 1.0);
|
||||||
|
|
||||||
|
view->SetHighColor(focusColor);
|
||||||
|
view->StrokeRect(rect);
|
||||||
|
rect.InsetBy(1.0, 1.0);
|
||||||
|
view->StrokeRect(rect);
|
||||||
|
rect.InsetBy(1.0, 1.0);
|
||||||
|
|
||||||
|
// bevel around external border
|
||||||
|
_DrawOuterResessedFrame(view, rect, focusColor,
|
||||||
|
contrast * (((flags & B_DISABLED) ? 0.5 : 0.8)), brightness * 0.9,
|
||||||
|
borders);
|
||||||
|
} else {
|
||||||
|
// bevel around external border
|
||||||
|
_DrawOuterResessedFrame(view, rect, base,
|
||||||
|
contrast * ((flags & B_DISABLED) ? 0.0 : 1.0), brightness * 1.0,
|
||||||
|
borders);
|
||||||
|
}
|
||||||
|
|
||||||
|
_DrawFrame(view, rect, dark1BorderColor, dark1BorderColor,
|
||||||
|
dark2BorderColor, dark2BorderColor, borders);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
BControlLook::_DrawOuterResessedFrame(BView* view, BRect& rect,
|
BControlLook::_DrawOuterResessedFrame(BView* view, BRect& rect,
|
||||||
const rgb_color& base, float contrast, float brightness, uint32 borders)
|
const rgb_color& base, float contrast, float brightness, uint32 borders)
|
||||||
|
|||||||
@@ -275,7 +275,7 @@ BMenuField::Draw(BRect update)
|
|||||||
flags |= BControlLook::B_DISABLED;
|
flags |= BControlLook::B_DISABLED;
|
||||||
if (active)
|
if (active)
|
||||||
flags |= BControlLook::B_FOCUSED;
|
flags |= BControlLook::B_FOCUSED;
|
||||||
be_control_look->DrawButtonFrame(this, frame, update, base, flags);
|
be_control_look->DrawMenuFieldFrame(this, frame, update, base, flags);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user