enable highlighting for colored entries
This commit is contained in:
parent
2e9cb1e408
commit
d065aa8ab6
51
libs/draw.c
51
libs/draw.c
|
@ -1,6 +1,4 @@
|
||||||
void
|
void drawhighlights(struct item *item, int x, int y, int w, int p, const char *ittext) {
|
||||||
drawhighlights(struct item *item, int x, int y, int w, int p)
|
|
||||||
{
|
|
||||||
int i, indent;
|
int i, indent;
|
||||||
char *highlight;
|
char *highlight;
|
||||||
char c;
|
char c;
|
||||||
|
@ -8,7 +6,7 @@ drawhighlights(struct item *item, int x, int y, int w, int p)
|
||||||
// limitation in order to prevent highlighting from drawing when the text isn't visible
|
// limitation in order to prevent highlighting from drawing when the text isn't visible
|
||||||
if (columns > 5 && lines > 1) return;
|
if (columns > 5 && lines > 1) return;
|
||||||
|
|
||||||
char *itemtext = item->text;
|
char *itemtext = strdup(ittext);
|
||||||
|
|
||||||
if (!(strlen(itemtext) && strlen(text))) return;
|
if (!(strlen(itemtext) && strlen(text))) return;
|
||||||
|
|
||||||
|
@ -38,9 +36,7 @@ drawhighlights(struct item *item, int x, int y, int w, int p)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int drawitemtext(struct item *item, int x, int y, int w) {
|
||||||
drawitemtext(struct item *item, int x, int y, int w)
|
|
||||||
{
|
|
||||||
char buffer[MAXITEMLENGTH]; // buffer containing item text
|
char buffer[MAXITEMLENGTH]; // buffer containing item text
|
||||||
Clr scm[2]; // color scheme
|
Clr scm[2]; // color scheme
|
||||||
int leftpadding = lrpad / 2; // padding
|
int leftpadding = lrpad / 2; // padding
|
||||||
|
@ -49,7 +45,6 @@ drawitemtext(struct item *item, int x, int y, int w)
|
||||||
int bg = 0; // background
|
int bg = 0; // background
|
||||||
int bgfg = 0; // both
|
int bgfg = 0; // both
|
||||||
int ignore = 0; // ignore colors
|
int ignore = 0; // ignore colors
|
||||||
int skiphighlight = 0; // skip highlighting
|
|
||||||
int selitem = 0;
|
int selitem = 0;
|
||||||
int priitem = 0;
|
int priitem = 0;
|
||||||
|
|
||||||
|
@ -98,13 +93,13 @@ drawitemtext(struct item *item, int x, int y, int w)
|
||||||
|
|
||||||
apply_fribidi(buffer);
|
apply_fribidi(buffer);
|
||||||
drw_text(drw, x, y, MIN(w, TEXTW(buffer) - lrpad) + leftpadding, bh, leftpadding, isrtl ? fribidi_text : buffer, 0, pango_item ? True : False);
|
drw_text(drw, x, y, MIN(w, TEXTW(buffer) - lrpad) + leftpadding, bh, leftpadding, isrtl ? fribidi_text : buffer, 0, pango_item ? True : False);
|
||||||
|
drawhighlights(item, x, y, MIN(w, TEXTW(buffer) - lrpad) + leftpadding, leftpadding, isrtl ? fribidi_text : buffer);
|
||||||
|
|
||||||
// position and width
|
// position and width
|
||||||
x += MIN(w, TEXTW(buffer) - lrpad) + leftpadding;
|
x += MIN(w, TEXTW(buffer) - lrpad) + leftpadding;
|
||||||
w -= MIN(w, TEXTW(buffer) - lrpad) + leftpadding;
|
w -= MIN(w, TEXTW(buffer) - lrpad) + leftpadding;
|
||||||
|
|
||||||
// no highlighting if colored text
|
// no highlighting if colored text
|
||||||
skiphighlight = 1;
|
|
||||||
leftpadding = 0;
|
leftpadding = 0;
|
||||||
|
|
||||||
char *character = item->text + rd + 1; // current character
|
char *character = item->text + rd + 1; // current character
|
||||||
|
@ -179,7 +174,7 @@ drawitemtext(struct item *item, int x, int y, int w)
|
||||||
// now draw any non-colored text
|
// now draw any non-colored text
|
||||||
apply_fribidi(buffer);
|
apply_fribidi(buffer);
|
||||||
int r = drw_text(drw, x, y, w, bh, leftpadding, isrtl ? fribidi_text : buffer, 0, pango_item ? True : False);
|
int r = drw_text(drw, x, y, w, bh, leftpadding, isrtl ? fribidi_text : buffer, 0, pango_item ? True : False);
|
||||||
if (!hidehighlight && !skiphighlight) drawhighlights(item, x, y, w, leftpadding);
|
if (!hidehighlight) drawhighlights(item, x, y, w, leftpadding, buffer);
|
||||||
|
|
||||||
// copy current buffer to item->clntext instead of item->text, this way SGR sequences aren't drawn
|
// copy current buffer to item->clntext instead of item->text, this way SGR sequences aren't drawn
|
||||||
item->clntext = malloc(sizeof(buffer));
|
item->clntext = malloc(sizeof(buffer));
|
||||||
|
@ -188,9 +183,7 @@ drawitemtext(struct item *item, int x, int y, int w)
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int drawitem(int x, int y, int w) {
|
||||||
drawitem(int x, int y, int w)
|
|
||||||
{
|
|
||||||
struct item *item;
|
struct item *item;
|
||||||
|
|
||||||
int numberWidth = 0;
|
int numberWidth = 0;
|
||||||
|
@ -286,9 +279,7 @@ drawitem(int x, int y, int w)
|
||||||
return x;
|
return x;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int drawprompt(int x, int y, int w) {
|
||||||
drawprompt(int x, int y, int w)
|
|
||||||
{
|
|
||||||
if (prompt && *prompt && !hideprompt) {
|
if (prompt && *prompt && !hideprompt) {
|
||||||
drw_setscheme(drw, scheme[SchemePrompt]);
|
drw_setscheme(drw, scheme[SchemePrompt]);
|
||||||
|
|
||||||
|
@ -305,9 +296,7 @@ drawprompt(int x, int y, int w)
|
||||||
return x;
|
return x;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int drawinput(int x, int y, int w) {
|
||||||
drawinput(int x, int y, int w)
|
|
||||||
{
|
|
||||||
char *censort; // censor text (password)
|
char *censort; // censor text (password)
|
||||||
unsigned int curpos = 0;
|
unsigned int curpos = 0;
|
||||||
int fh = drw->font->h;
|
int fh = drw->font->h;
|
||||||
|
@ -342,9 +331,7 @@ drawinput(int x, int y, int w)
|
||||||
return x;
|
return x;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int drawlarrow(int x, int y, int w) {
|
||||||
drawlarrow(int x, int y, int w)
|
|
||||||
{
|
|
||||||
if (hidelarrow) return x;
|
if (hidelarrow) return x;
|
||||||
|
|
||||||
if (curr->left) { // draw left arrow
|
if (curr->left) { // draw left arrow
|
||||||
|
@ -356,9 +343,7 @@ drawlarrow(int x, int y, int w)
|
||||||
return x;
|
return x;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int drawrarrow(int x, int y, int w) {
|
||||||
drawrarrow(int x, int y, int w)
|
|
||||||
{
|
|
||||||
if (hiderarrow) return x;
|
if (hiderarrow) return x;
|
||||||
|
|
||||||
if (next) { // draw right arrow
|
if (next) { // draw right arrow
|
||||||
|
@ -370,9 +355,7 @@ drawrarrow(int x, int y, int w)
|
||||||
return x;
|
return x;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int drawnumber(int x, int y, int w) {
|
||||||
drawnumber(int x, int y, int w)
|
|
||||||
{
|
|
||||||
if (hidematchcount) return x;
|
if (hidematchcount) return x;
|
||||||
|
|
||||||
int powerlinewidth = 0;
|
int powerlinewidth = 0;
|
||||||
|
@ -395,9 +378,7 @@ drawnumber(int x, int y, int w)
|
||||||
return x;
|
return x;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int drawmode(int x, int y, int w) {
|
||||||
drawmode(int x, int y, int w)
|
|
||||||
{
|
|
||||||
if (!hidemode) { // draw mode indicator
|
if (!hidemode) { // draw mode indicator
|
||||||
int powerlinewidth = 0;
|
int powerlinewidth = 0;
|
||||||
|
|
||||||
|
@ -420,9 +401,7 @@ drawmode(int x, int y, int w)
|
||||||
return x;
|
return x;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int drawcaps(int x, int y, int w) {
|
||||||
drawcaps(int x, int y, int w)
|
|
||||||
{
|
|
||||||
if (!w) return x; // not caps lock
|
if (!w) return x; // not caps lock
|
||||||
|
|
||||||
if (!hidecaps) { // draw caps lock indicator
|
if (!hidecaps) { // draw caps lock indicator
|
||||||
|
@ -447,9 +426,7 @@ drawcaps(int x, int y, int w)
|
||||||
return x;
|
return x;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void drawmenu(void) {
|
||||||
drawmenu(void)
|
|
||||||
{
|
|
||||||
int x = 0, y = 0, w = 0;
|
int x = 0, y = 0, w = 0;
|
||||||
plw = hidepowerline ? 0 : drw->font->h / 2 + 1; // powerline size
|
plw = hidepowerline ? 0 : drw->font->h / 2 + 1; // powerline size
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue