aboutsummaryrefslogtreecommitdiff
path: root/style.c
diff options
context:
space:
mode:
Diffstat (limited to 'style.c')
-rw-r--r--style.c32
1 files changed, 24 insertions, 8 deletions
diff --git a/style.c b/style.c
index 97d5576e..6df2ed04 100644
--- a/style.c
+++ b/style.c
@@ -17,6 +17,8 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
+#include <sys/types.h>
+
#include <string.h>
#include "tmux.h"
@@ -117,7 +119,7 @@ style_tostring(struct grid_cell *gc)
*s = '\0';
- if (gc->fg != 8) {
+ if (gc->fg != 8 || gc->flags & GRID_FLAG_FG256) {
if (gc->flags & GRID_FLAG_FG256)
c = gc->fg | 0x100;
else
@@ -126,7 +128,7 @@ style_tostring(struct grid_cell *gc)
comma = 1;
}
- if (gc->bg != 8) {
+ if (gc->bg != 8 || gc->flags & GRID_FLAG_BG256) {
if (gc->flags & GRID_FLAG_BG256)
c = gc->bg | 0x100;
else
@@ -203,8 +205,14 @@ style_apply(struct grid_cell *gc, struct options *oo, const char *name)
memcpy(gc, &grid_default_cell, sizeof *gc);
gcp = options_get_style(oo, name);
- colour_set_fg(gc, gcp->fg);
- colour_set_bg(gc, gcp->bg);
+ if (gcp->flags & GRID_FLAG_FG256)
+ colour_set_fg(gc, gcp->fg | 0x100);
+ else
+ colour_set_fg(gc, gcp->fg);
+ if (gcp->flags & GRID_FLAG_BG256)
+ colour_set_bg(gc, gcp->bg | 0x100);
+ else
+ colour_set_bg(gc, gcp->bg);
gc->attr |= gcp->attr;
}
@@ -215,10 +223,18 @@ style_apply_update(struct grid_cell *gc, struct options *oo, const char *name)
struct grid_cell *gcp;
gcp = options_get_style(oo, name);
- if (gcp->fg != 8)
- colour_set_fg(gc, gcp->fg);
- if (gcp->bg != 8)
- colour_set_bg(gc, gcp->bg);
+ if (gcp->fg != 8 || gcp->flags & GRID_FLAG_FG256) {
+ if (gcp->flags & GRID_FLAG_FG256)
+ colour_set_fg(gc, gcp->fg | 0x100);
+ else
+ colour_set_fg(gc, gcp->fg);
+ }
+ if (gcp->bg != 8 || gcp->flags & GRID_FLAG_BG256) {
+ if (gcp->flags & GRID_FLAG_BG256)
+ colour_set_bg(gc, gcp->bg | 0x100);
+ else
+ colour_set_bg(gc, gcp->bg);
+ }
if (gcp->attr != 0)
gc->attr |= gcp->attr;
}