1
0
mirror of https://github.com/gryf/wmaker.git synced 2025-12-21 21:38:00 +01:00

WPrefs: set IconTitleColor, IconTitleBack, ClipTitleColor, and CClipTitleColor

This patch adds the ability to set the colors for IconTitleColor, IconTitleBack,
ClipTitleColor, and CClipTitleColor, the only four colors set by setstyle which
previously were not configurable using WPrefs.

The icon in the preview window appears as a miniwindow if IconTitleColor or
IconTitleBack are being configured and as the clip if ClipTitleColor or
CClipTitleColor are being configured.
This commit is contained in:
Doug Torrance
2014-06-02 14:11:38 -06:00
committed by Carlos R. Mafra
parent 97d281e310
commit 137a571fec

View File

@@ -60,7 +60,7 @@ typedef struct _Panel {
WMFrame *colF;
WMPopUpButton *colP;
WMColor *colors[14];
WMColor *colors[15];
WMColorWell *colW;
@@ -354,11 +354,11 @@ static const struct {
{ "HighlightTextColor", "black" },
{ "FrameFocusedBorderColor", "black" },
{ "FrameBorderColor", "black" },
{ "FrameSelectedBorderColor", "white" }/* , */
/* { "IconTitleColor", "white" }, */
/* { "IconTitleBack", "black" }, */
/* { "ClipTitleColor", "black" }, */
/* { "CClipTitleColor", "#454045" } */
{ "FrameSelectedBorderColor", "white" },
{ "IconTitleColor", "white" },
{ "IconTitleBack", "black" },
{ "ClipTitleColor", "black" },
{ "CClipTitleColor", "#454045" }
};
static WMRect previewPositions[] = {
@@ -853,9 +853,6 @@ static void updatePreviewBox(_Panel * panel, int elements)
titem = (TextureListItem *) item->clientData;
renderPreview(panel, gc, PICON, titem->ispixmap ? 0 : RBEV_RAISED3);
colorUpdate |= 1 << ICONT_COL | 1 << ICONB_COL |
1 << CLIP_COL | 1 << CCLIP_COL;
}
if (colorUpdate)
@@ -1384,10 +1381,10 @@ static void changeColorPage(WMWidget * w, void *data)
{-22, -21},
{-22, -21},
{-22, -21},
{130, 140},
{130, 140},
{130, 140},
{130, 140}
{130, 132},
{130, 132},
{130, 132},
{130, 132}
};
if (panel->preview) {
@@ -1407,7 +1404,8 @@ static void changeColorPage(WMWidget * w, void *data)
if (panel->preview)
WMDrawPixmap(panel->hand, panel->preview, positions[section].x, positions[section].y);
section = WMGetPopUpButtonSelectedItem(panel->colP);
if (section >= ICONT_COL)
updateColorPreviewBox(panel, 1 << section);
WMSetColorWellColor(panel->colW, panel->colors[section]);
}
@@ -1563,28 +1561,129 @@ static void updateColorPreviewBox(_Panel * panel, int elements)
29, 9, 190, 20);
}
/*
if (elements & (1 << ICONT_COL)) {
WRITE(_("Focused Window"), panel->colors[ICONT_COL],
panel->boldFont,
155, 130, 64);
if (elements & (1 << ICONT_COL) || elements & (1 << ICONB_COL)) {
RColor rgb;
RHSVColor hsv, hsv2;
int v;
WMColor *light, *dim;
updatePreviewBox(panel, 1 << PICON);
rgb.red = WMRedComponentOfColor(panel->colors[ICONB_COL]) >> 8;
rgb.green = WMGreenComponentOfColor(panel->colors[ICONB_COL]) >> 8;
rgb.blue = WMBlueComponentOfColor(panel->colors[ICONB_COL]) >> 8;
RRGBtoHSV(&rgb, &hsv);
RHSVtoRGB(&hsv, &rgb);
hsv2 = hsv;
v = hsv.value * 16 / 10;
hsv.value = (v > 255 ? 255 : v);
RHSVtoRGB(&hsv, &rgb);
light = WMCreateRGBColor(scr, rgb.red << 8, rgb.green << 8, rgb.blue << 8, False);
hsv2.value = hsv2.value / 2;
RHSVtoRGB(&hsv2, &rgb);
dim = WMCreateRGBColor(scr, rgb.red << 8, rgb.green << 8, rgb.blue << 8, False);
XFillRectangle(dpy, d, WMColorGC(panel->colors[ICONB_COL]), 156, 131, 62, 11);
XDrawLine(dpy, d, WMColorGC(light), 155, 130, 155, 142);
XDrawLine(dpy, d, WMColorGC(light), 156, 130, 217, 130);
XDrawLine(dpy, d, WMColorGC(dim), 218, 130, 218, 142);
paintText(scr, d, panel->colors[ICONT_COL],
panel->smallFont, 155, 130, 64, 13, WALeft,
_("Icon Text"));
}
if (elements & (1 << ICONB_COL)) {
WRITE(_("Focused Window"), panel->colors[ICONB_COL],
panel->boldFont,
0, 0, 30);
}
if (elements & (1 << CLIP_COL)) {
WRITE(_("Focused Window"), panel->colors[CLIP_COL],
panel->boldFont,
0, 0, 30);
if (elements & (1 << CLIP_COL) || elements & (1 << CCLIP_COL)) {
Pixmap pix;
RColor black;
RColor dark;
RColor light;
RImage *tile;
TextureListItem *titem;
WMListItem *item;
XPoint p[4];
item = WMGetListItem(panel->texLs, panel->textureIndex[PICON]);
titem = (TextureListItem *) item->clientData;
pix = renderTexture(scr, titem->prop, 64, 64, NULL, titem->ispixmap ? 0 : RBEV_RAISED3);
tile = RCreateImageFromDrawable(WMScreenRContext(scr), pix, None);
black.alpha = 255;
black.red = black.green = black.blue = 0;
dark.alpha = 0;
dark.red = dark.green = dark.blue = 60;
light.alpha = 0;
light.red = light.green = light.blue = 80;
/* top right */
ROperateLine(tile, RSubtractOperation, 64 - 1 - 23, 0, 64 - 2, 23 - 1, &dark);
RDrawLine(tile, 64 - 1 - 23 - 1, 0, 64 - 1, 23 + 1, &black);
ROperateLine(tile, RAddOperation, 64 - 1 - 23, 2, 64 - 3, 23, &light);
/* arrow bevel */
ROperateLine(tile, RSubtractOperation, 64 - 7 - (23 - 15), 4, 64 - 5, 4, &dark);
ROperateLine(tile, RSubtractOperation, 64 - 6 - (23 - 15), 5, 64 - 5, 6 + 23 - 15, &dark);
ROperateLine(tile, RAddOperation, 64 - 5, 4, 64 - 5, 6 + 23 - 15, &light);
/* bottom left */
ROperateLine(tile, RAddOperation, 2, 64 - 1 - 23 + 2, 23 - 2, 64 - 3, &dark);
RDrawLine(tile, 0, 64 - 1 - 23 - 1, 23 + 1, 64 - 1, &black);
ROperateLine(tile, RSubtractOperation, 0, 64 - 1 - 23 - 2, 23 + 1, 64 - 2, &light);
/* arrow bevel */
ROperateLine(tile, RSubtractOperation, 4, 64 - 7 - (23 - 15), 4, 64 - 5, &dark);
ROperateLine(tile, RSubtractOperation, 5, 64 - 6 - (23 - 15), 6 + 23 - 15, 64 - 5, &dark);
ROperateLine(tile, RAddOperation, 4, 64 - 5, 6 + 23 - 15, 64 - 5, &light);
RConvertImage(WMScreenRContext(scr), tile, &pix);
RReleaseImage(tile);
XCopyArea(dpy, pix, d, gc, 0, 0, 64, 64, 155, 130);
XFreePixmap(dpy, pix);
/* top right arrow */
p[0].x = p[3].x = 155 + 64 - 5 - (23 - 15);
p[0].y = p[3].y = 130 + 5;
p[1].x = 155 + 64 - 6;
p[1].y = 130 + 5;
p[2].x = 155 + 64 - 6;
p[2].y = 130 + 4 + 23 - 15;
XFillPolygon(dpy, d, WMColorGC(panel->colors[CLIP_COL]), p, 3, Convex, CoordModeOrigin);
XDrawLines(dpy, d, WMColorGC(panel->colors[CLIP_COL]), p, 4, CoordModeOrigin);
/* bottom left arrow */
p[0].x = p[3].x = 155 + 5;
p[0].y = p[3].y = 130 + 64 - 5 - (23 - 15);
p[1].x = 155 + 5;
p[1].y = 130 + 64 - 6;
p[2].x = 155 + 4 + 23 - 15;
p[2].y = 130 + 64 - 6;
XFillPolygon(dpy, d, WMColorGC(panel->colors[CLIP_COL]), p, 3, Convex, CoordModeOrigin);
XDrawLines(dpy, d, WMColorGC(panel->colors[CLIP_COL]), p, 4, CoordModeOrigin);
}
if (elements & (1 << CLIP_COL))
paintText(scr, d, panel->colors[CLIP_COL],
panel->boldFont, 155 + 23, 130 + 64 - 15 - 3, 22, 15, WALeft,
_("Clip"));
if (elements & (1 << CCLIP_COL)) {
WRITE(_("Focused Window"), panel->colors[CCLIP_COL],
panel->boldFont,
0, 0, 30);
paintText(scr, d, panel->colors[CCLIP_COL],
panel->boldFont, 155+2, 130 + 2, 26, 15, WALeft, _("Coll."));
paintText(scr, d, panel->colors[CCLIP_COL],
panel->boldFont, 155 + 23, 130 + 64 - 15 - 3, 22, 15, WALeft,
_("Clip"));
}
*/
WMRedisplayWidget(panel->prevL);
}
@@ -1857,12 +1956,10 @@ static void createPanel(Panel * p)
WMAddPopUpButtonItem(panel->colP, _("Focused Window Border Color"));
WMAddPopUpButtonItem(panel->colP, _("Window Border Color"));
WMAddPopUpButtonItem(panel->colP, _("Selected Window Border Color"));
/*
WMAddPopUpButtonItem(panel->colP, _("Miniwindow Title"));
WMAddPopUpButtonItem(panel->colP, _("Miniwindow Title Back"));
WMAddPopUpButtonItem(panel->colP, _("Clip Title"));
WMAddPopUpButtonItem(panel->colP, _("Collapsed Clip Title"));
*/
WMSetPopUpButtonSelectedItem(panel->colP, 0);