Added support for colored window tabs in the default decorator.
This commit is contained in:
parent
20db27ba98
commit
30d17caa9d
@ -322,7 +322,10 @@ enum color_which {
|
||||
B_WINDOW_TAB_COLOR = 3,
|
||||
B_WINDOW_TEXT_COLOR = 22,
|
||||
B_WINDOW_INACTIVE_TAB_COLOR = 23,
|
||||
B_WINDOW_INACTIVE_TEXT_COLOR = 24
|
||||
B_WINDOW_INACTIVE_TEXT_COLOR = 24,
|
||||
|
||||
B_WINDOW_BORDER_COLOR = 25,
|
||||
B_WINDOW_INACTIVE_BORDER_COLOR = 26
|
||||
};
|
||||
|
||||
|
||||
|
@ -26,10 +26,10 @@ static inline int32
|
||||
color_which_to_index(color_which which)
|
||||
{
|
||||
// NOTE: this must be kept in sync with InterfaceDefs.h color_which!
|
||||
if (which <= B_WINDOW_INACTIVE_TEXT_COLOR)
|
||||
if (which <= B_WINDOW_INACTIVE_BORDER_COLOR)
|
||||
return which - 1;
|
||||
if (which >= B_SUCCESS_COLOR && which <= B_FAILURE_COLOR)
|
||||
return which - B_SUCCESS_COLOR + B_WINDOW_INACTIVE_TEXT_COLOR;
|
||||
return which - B_SUCCESS_COLOR + B_WINDOW_INACTIVE_BORDER_COLOR;
|
||||
|
||||
return -1;
|
||||
}
|
||||
@ -38,10 +38,10 @@ static inline color_which
|
||||
index_to_color_which(int32 index)
|
||||
{
|
||||
if (index >= 0 && index < kNumColors) {
|
||||
if ((color_which)index < B_WINDOW_INACTIVE_TEXT_COLOR)
|
||||
if ((color_which)index < B_WINDOW_INACTIVE_BORDER_COLOR)
|
||||
return (color_which)(index + 1);
|
||||
else
|
||||
return (color_which)(index + B_SUCCESS_COLOR - B_WINDOW_INACTIVE_TEXT_COLOR);
|
||||
return (color_which)(index + B_SUCCESS_COLOR - B_WINDOW_INACTIVE_BORDER_COLOR);
|
||||
}
|
||||
|
||||
return (color_which)-1;
|
||||
|
@ -63,6 +63,8 @@ static struct option const kLongOptions[] = {
|
||||
I(window_text_color, B_WINDOW_TEXT_COLOR),
|
||||
I(window_inactive_tab_color, B_WINDOW_INACTIVE_TAB_COLOR),
|
||||
I(window_inactive_text_color, B_WINDOW_INACTIVE_TEXT_COLOR),
|
||||
I(window_border_color, B_WINDOW_BORDER_COLOR),
|
||||
I(window_inactive_border_color, B_WINDOW_INACTIVE_BORDER_COLOR),
|
||||
{"sum", required_argument, 0, 's'},
|
||||
{"refresh", no_argument, 0, 'r'},
|
||||
{"help", no_argument, 0, 'h'},
|
||||
|
@ -94,6 +94,8 @@ static const rgb_color _kDefaultColors[kNumColors] = {
|
||||
{0, 0, 0, 255}, // B_WINDOW_TEXT_COLOR
|
||||
{232, 232, 232, 255}, // B_WINDOW_INACTIVE_TAB_COLOR
|
||||
{80, 80, 80, 255}, // B_WINDOW_INACTIVE_TEXT_COLOR
|
||||
{224, 224, 224, 255}, // B_WINDOW_BORDER_COLOR
|
||||
{232, 232, 232, 255}, // B_WINDOW_INACTIVE_BORDER_COLOR
|
||||
// 100...
|
||||
{0, 255, 0, 255}, // B_SUCCESS_COLOR
|
||||
{255, 0, 0, 255}, // B_FAILURE_COLOR
|
||||
|
@ -54,7 +54,10 @@ static ColorDescription sColorDescriptionTable[] =
|
||||
{ B_WINDOW_TEXT_COLOR, B_TRANSLATE_MARK("Window tab text") },
|
||||
{ B_WINDOW_INACTIVE_TAB_COLOR, B_TRANSLATE_MARK("Inactive window tab") },
|
||||
{ B_WINDOW_INACTIVE_TEXT_COLOR,
|
||||
B_TRANSLATE_MARK("Inactive window tab text") }
|
||||
B_TRANSLATE_MARK("Inactive window tab text") },
|
||||
{ B_WINDOW_BORDER_COLOR, B_TRANSLATE_MARK("Window border") },
|
||||
{ B_WINDOW_INACTIVE_BORDER_COLOR,
|
||||
B_TRANSLATE_MARK("Inactive window border") }
|
||||
};
|
||||
|
||||
const int32 sColorDescriptionCount = sizeof(sColorDescriptionTable)
|
||||
@ -117,7 +120,6 @@ ColorSet::DefaultColorSet(void)
|
||||
set.fColors[which] =
|
||||
BPrivate::kDefaultColors[color_which_to_index(which)];
|
||||
}
|
||||
|
||||
return set;
|
||||
}
|
||||
|
||||
|
@ -15,6 +15,7 @@
|
||||
#include "Desktop.h"
|
||||
#include "DrawingEngine.h"
|
||||
#include "DrawState.h"
|
||||
#include "InterfaceDefs.h"
|
||||
#include "ServerApp.h"
|
||||
#include "Window.h"
|
||||
#include "Workspace.h"
|
||||
@ -207,7 +208,8 @@ WorkspacesView::_DrawWindow(DrawingEngine* drawingEngine,
|
||||
_DarkenColor(white);
|
||||
}
|
||||
if (window == fSelectedWindow) {
|
||||
frameColor = navColor;
|
||||
frameColor = ui_color(B_WINDOW_BORDER_COLOR);
|
||||
//frameColor = navColor;
|
||||
}
|
||||
|
||||
if (tabFrame.left < frame.left)
|
||||
|
@ -87,17 +87,6 @@ const rgb_color DefaultDecorator::kFrameColors[4] = {
|
||||
{ 108, 108, 108, 255 }
|
||||
};
|
||||
|
||||
const rgb_color DefaultDecorator::kFocusFrameColors[2] = {
|
||||
{ 224, 224, 224, 255 },
|
||||
{ 208, 208, 208, 255 }
|
||||
};
|
||||
|
||||
const rgb_color DefaultDecorator::kNonFocusFrameColors[2] = {
|
||||
{ 232, 232, 232, 255 },
|
||||
{ 232, 232, 232, 255 }
|
||||
};
|
||||
|
||||
|
||||
|
||||
// TODO: get rid of DesktopSettings here, and introduce private accessor
|
||||
// methods to the Decorator base class
|
||||
@ -105,6 +94,9 @@ DefaultDecorator::DefaultDecorator(DesktopSettings& settings, BRect rect)
|
||||
:
|
||||
Decorator(settings, rect),
|
||||
// focus color constants
|
||||
kFocusFrameColor(settings.UIColor(B_WINDOW_BORDER_COLOR)),
|
||||
kFocusFrameColorBevel(tint_color(kFocusFrameColor, B_LIGHTEN_2_TINT)),
|
||||
kFocusFrameColorDark(tint_color(kFocusFrameColor, B_DARKEN_1_TINT)),
|
||||
kFocusTabColor(settings.UIColor(B_WINDOW_TAB_COLOR)),
|
||||
kFocusTabColorLight(tint_color(kFocusTabColor,
|
||||
(B_LIGHTEN_MAX_TINT + B_LIGHTEN_2_TINT) / 2)),
|
||||
@ -113,6 +105,9 @@ DefaultDecorator::DefaultDecorator(DesktopSettings& settings, BRect rect)
|
||||
(B_DARKEN_1_TINT + B_NO_TINT) / 2)),
|
||||
kFocusTextColor(settings.UIColor(B_WINDOW_TEXT_COLOR)),
|
||||
// non-focus color constants
|
||||
kNonFocusFrameColor(settings.UIColor(B_WINDOW_INACTIVE_BORDER_COLOR)),
|
||||
kNonFocusFrameColorBevel(tint_color(kNonFocusFrameColor, B_LIGHTEN_2_TINT)),
|
||||
kNonFocusFrameColorDark(tint_color(kNonFocusFrameColor, B_DARKEN_1_TINT)),
|
||||
kNonFocusTabColor(settings.UIColor(B_WINDOW_INACTIVE_TAB_COLOR)),
|
||||
kNonFocusTabColorLight(tint_color(kNonFocusTabColor,
|
||||
(B_LIGHTEN_MAX_TINT + B_LIGHTEN_2_TINT) / 2)),
|
||||
@ -143,7 +138,7 @@ DefaultDecorator::TabLocation(int32 tab) const
|
||||
{
|
||||
DefaultDecorator::Tab* decoratorTab = _TabAt(tab);
|
||||
if (decoratorTab == NULL)
|
||||
return 0.;
|
||||
return 0.0f;
|
||||
return (float)decoratorTab->tabOffset;
|
||||
}
|
||||
|
||||
@ -666,7 +661,7 @@ DefaultDecorator::_DrawFrame(BRect invalid)
|
||||
// top
|
||||
if (invalid.Intersects(fTopBorder)) {
|
||||
ComponentColors colors;
|
||||
_GetComponentColors(COMPONENT_TOP_BORDER, colors);
|
||||
_GetComponentColors(COMPONENT_TOP_BORDER, colors, fTopTab);
|
||||
|
||||
for (int8 i = 0; i < 5; i++) {
|
||||
fDrawingEngine->StrokeLine(BPoint(r.left + i, r.top + i),
|
||||
@ -686,7 +681,7 @@ DefaultDecorator::_DrawFrame(BRect invalid)
|
||||
// left
|
||||
if (invalid.Intersects(fLeftBorder.InsetByCopy(0, -fBorderWidth))) {
|
||||
ComponentColors colors;
|
||||
_GetComponentColors(COMPONENT_LEFT_BORDER, colors);
|
||||
_GetComponentColors(COMPONENT_LEFT_BORDER, colors, fTopTab);
|
||||
|
||||
for (int8 i = 0; i < 5; i++) {
|
||||
fDrawingEngine->StrokeLine(BPoint(r.left + i, r.top + i),
|
||||
@ -696,7 +691,7 @@ DefaultDecorator::_DrawFrame(BRect invalid)
|
||||
// bottom
|
||||
if (invalid.Intersects(fBottomBorder)) {
|
||||
ComponentColors colors;
|
||||
_GetComponentColors(COMPONENT_BOTTOM_BORDER, colors);
|
||||
_GetComponentColors(COMPONENT_BOTTOM_BORDER, colors, fTopTab);
|
||||
|
||||
for (int8 i = 0; i < 5; i++) {
|
||||
fDrawingEngine->StrokeLine(BPoint(r.left + i, r.bottom - i),
|
||||
@ -707,7 +702,7 @@ DefaultDecorator::_DrawFrame(BRect invalid)
|
||||
// right
|
||||
if (invalid.Intersects(fRightBorder.InsetByCopy(0, -fBorderWidth))) {
|
||||
ComponentColors colors;
|
||||
_GetComponentColors(COMPONENT_RIGHT_BORDER, colors);
|
||||
_GetComponentColors(COMPONENT_RIGHT_BORDER, colors, fTopTab);
|
||||
|
||||
for (int8 i = 0; i < 5; i++) {
|
||||
fDrawingEngine->StrokeLine(BPoint(r.right - i, r.top + i),
|
||||
@ -724,7 +719,7 @@ DefaultDecorator::_DrawFrame(BRect invalid)
|
||||
// top
|
||||
if (invalid.Intersects(fTopBorder)) {
|
||||
ComponentColors colors;
|
||||
_GetComponentColors(COMPONENT_TOP_BORDER, colors);
|
||||
_GetComponentColors(COMPONENT_TOP_BORDER, colors, fTopTab);
|
||||
|
||||
for (int8 i = 0; i < 3; i++) {
|
||||
fDrawingEngine->StrokeLine(BPoint(r.left + i, r.top + i),
|
||||
@ -744,7 +739,7 @@ DefaultDecorator::_DrawFrame(BRect invalid)
|
||||
// left
|
||||
if (invalid.Intersects(fLeftBorder.InsetByCopy(0, -fBorderWidth))) {
|
||||
ComponentColors colors;
|
||||
_GetComponentColors(COMPONENT_LEFT_BORDER, colors);
|
||||
_GetComponentColors(COMPONENT_LEFT_BORDER, colors, fTopTab);
|
||||
|
||||
for (int8 i = 0; i < 3; i++) {
|
||||
fDrawingEngine->StrokeLine(BPoint(r.left + i, r.top + i),
|
||||
@ -764,7 +759,7 @@ DefaultDecorator::_DrawFrame(BRect invalid)
|
||||
// bottom
|
||||
if (invalid.Intersects(fBottomBorder)) {
|
||||
ComponentColors colors;
|
||||
_GetComponentColors(COMPONENT_BOTTOM_BORDER, colors);
|
||||
_GetComponentColors(COMPONENT_BOTTOM_BORDER, colors, fTopTab);
|
||||
|
||||
for (int8 i = 0; i < 3; i++) {
|
||||
fDrawingEngine->StrokeLine(BPoint(r.left + i, r.bottom - i),
|
||||
@ -775,7 +770,7 @@ DefaultDecorator::_DrawFrame(BRect invalid)
|
||||
// right
|
||||
if (invalid.Intersects(fRightBorder.InsetByCopy(0, -fBorderWidth))) {
|
||||
ComponentColors colors;
|
||||
_GetComponentColors(COMPONENT_RIGHT_BORDER, colors);
|
||||
_GetComponentColors(COMPONENT_RIGHT_BORDER, colors, fTopTab);
|
||||
|
||||
for (int8 i = 0; i < 3; i++) {
|
||||
fDrawingEngine->StrokeLine(BPoint(r.right - i, r.top + i),
|
||||
@ -790,7 +785,7 @@ DefaultDecorator::_DrawFrame(BRect invalid)
|
||||
{
|
||||
// TODO: Draw the borders individually!
|
||||
ComponentColors colors;
|
||||
_GetComponentColors(COMPONENT_LEFT_BORDER, colors);
|
||||
_GetComponentColors(COMPONENT_LEFT_BORDER, colors, fTopTab);
|
||||
|
||||
fDrawingEngine->StrokeRect(r, colors[5]);
|
||||
break;
|
||||
@ -806,7 +801,7 @@ DefaultDecorator::_DrawFrame(BRect invalid)
|
||||
r = fResizeRect;
|
||||
|
||||
ComponentColors colors;
|
||||
_GetComponentColors(COMPONENT_RESIZE_CORNER, colors);
|
||||
_GetComponentColors(COMPONENT_RESIZE_CORNER, colors, fTopTab);
|
||||
|
||||
switch ((int)fTopTab->look) {
|
||||
case B_DOCUMENT_WINDOW_LOOK:
|
||||
@ -1534,15 +1529,19 @@ DefaultDecorator::GetComponentColors(Component component, uint8 highlight,
|
||||
case COMPONENT_RESIZE_CORNER:
|
||||
default:
|
||||
_colors[0] = kFrameColors[0];
|
||||
_colors[1] = kFrameColors[1];
|
||||
//_colors[1] = kFrameColors[1];
|
||||
if (tab && tab->buttonFocus) {
|
||||
_colors[2] = kFocusFrameColors[0];
|
||||
_colors[3] = kFocusFrameColors[1];
|
||||
_colors[1] = kFocusFrameColorBevel;
|
||||
_colors[2] = kFocusFrameColor;
|
||||
_colors[3] = kFocusFrameColor;
|
||||
_colors[4] = kFocusFrameColorDark;
|
||||
} else {
|
||||
_colors[2] = kNonFocusFrameColors[0];
|
||||
_colors[3] = kNonFocusFrameColors[1];
|
||||
_colors[1] = kFocusFrameColorBevel;
|
||||
_colors[2] = kNonFocusFrameColor;
|
||||
_colors[3] = kNonFocusFrameColor;
|
||||
_colors[4] = kNonFocusFrameColorDark;
|
||||
}
|
||||
_colors[4] = kFrameColors[2];
|
||||
//_colors[4] = kFrameColors[2];
|
||||
_colors[5] = kFrameColors[3];
|
||||
|
||||
// for the resize-border highlight dye everything bluish.
|
||||
|
@ -186,8 +186,10 @@ private:
|
||||
void _CalculateTabsRegion();
|
||||
protected:
|
||||
static const rgb_color kFrameColors[4];
|
||||
static const rgb_color kFocusFrameColors[2];
|
||||
static const rgb_color kNonFocusFrameColors[2];
|
||||
|
||||
const rgb_color kFocusFrameColor;
|
||||
const rgb_color kFocusFrameColorBevel;
|
||||
const rgb_color kFocusFrameColorDark;
|
||||
|
||||
const rgb_color kFocusTabColor;
|
||||
const rgb_color kFocusTabColorLight;
|
||||
@ -195,6 +197,10 @@ protected:
|
||||
const rgb_color kFocusTabColorShadow;
|
||||
const rgb_color kFocusTextColor;
|
||||
|
||||
const rgb_color kNonFocusFrameColor;
|
||||
const rgb_color kNonFocusFrameColorBevel;
|
||||
const rgb_color kNonFocusFrameColorDark;
|
||||
|
||||
const rgb_color kNonFocusTabColor;
|
||||
const rgb_color kNonFocusTabColorLight;
|
||||
const rgb_color kNonFocusTabColorBevel;
|
||||
|
Loading…
Reference in New Issue
Block a user