mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-07-14 15:56:13 +03:00
renderer: respect reverse with cursor-invert-fg-bg
This commit is contained in:
@ -2650,8 +2650,13 @@ fn rebuildCells(
|
|||||||
const style = cursor_style_ orelse break :cursor;
|
const style = cursor_style_ orelse break :cursor;
|
||||||
const cursor_color = self.cursor_color orelse self.default_cursor_color orelse color: {
|
const cursor_color = self.cursor_color orelse self.default_cursor_color orelse color: {
|
||||||
if (self.cursor_invert) {
|
if (self.cursor_invert) {
|
||||||
|
// Use the foreground color from the cell under the cursor, if any.
|
||||||
const sty = screen.cursor.page_pin.style(screen.cursor.page_cell);
|
const sty = screen.cursor.page_pin.style(screen.cursor.page_cell);
|
||||||
break :color sty.fg(color_palette, self.config.bold_is_bright) orelse self.foreground_color orelse self.default_foreground_color;
|
break :color if (sty.flags.inverse)
|
||||||
|
// If the cell is reversed, use background color instead.
|
||||||
|
(sty.bg(screen.cursor.page_cell, color_palette) orelse self.background_color orelse self.default_background_color)
|
||||||
|
else
|
||||||
|
(sty.fg(color_palette, self.config.bold_is_bright) orelse self.foreground_color orelse self.default_foreground_color);
|
||||||
} else {
|
} else {
|
||||||
break :color self.foreground_color orelse self.default_foreground_color;
|
break :color self.foreground_color orelse self.default_foreground_color;
|
||||||
}
|
}
|
||||||
@ -2680,8 +2685,13 @@ fn rebuildCells(
|
|||||||
};
|
};
|
||||||
|
|
||||||
const uniform_color = if (self.cursor_invert) blk: {
|
const uniform_color = if (self.cursor_invert) blk: {
|
||||||
|
// Use the background color from the cell under the cursor, if any.
|
||||||
const sty = screen.cursor.page_pin.style(screen.cursor.page_cell);
|
const sty = screen.cursor.page_pin.style(screen.cursor.page_cell);
|
||||||
break :blk sty.bg(screen.cursor.page_cell, color_palette) orelse self.background_color orelse self.default_background_color;
|
break :blk if (sty.flags.inverse)
|
||||||
|
// If the cell is reversed, use foreground color instead.
|
||||||
|
(sty.fg(color_palette, self.config.bold_is_bright) orelse self.foreground_color orelse self.default_foreground_color)
|
||||||
|
else
|
||||||
|
(sty.bg(screen.cursor.page_cell, color_palette) orelse self.background_color orelse self.default_background_color);
|
||||||
} else if (self.config.cursor_text) |txt|
|
} else if (self.config.cursor_text) |txt|
|
||||||
txt
|
txt
|
||||||
else
|
else
|
||||||
|
@ -1737,8 +1737,13 @@ pub fn rebuildCells(
|
|||||||
|
|
||||||
const cursor_color = self.cursor_color orelse self.default_cursor_color orelse color: {
|
const cursor_color = self.cursor_color orelse self.default_cursor_color orelse color: {
|
||||||
if (self.cursor_invert) {
|
if (self.cursor_invert) {
|
||||||
|
// Use the foreground color from the cell under the cursor, if any.
|
||||||
const sty = screen.cursor.page_pin.style(screen.cursor.page_cell);
|
const sty = screen.cursor.page_pin.style(screen.cursor.page_cell);
|
||||||
break :color sty.fg(color_palette, self.config.bold_is_bright) orelse self.foreground_color orelse self.default_foreground_color;
|
break :color if (sty.flags.inverse)
|
||||||
|
// If the cell is reversed, use background color instead.
|
||||||
|
(sty.bg(screen.cursor.page_cell, color_palette) orelse self.background_color orelse self.default_background_color)
|
||||||
|
else
|
||||||
|
(sty.fg(color_palette, self.config.bold_is_bright) orelse self.foreground_color orelse self.default_foreground_color);
|
||||||
} else {
|
} else {
|
||||||
break :color self.foreground_color orelse self.default_foreground_color;
|
break :color self.foreground_color orelse self.default_foreground_color;
|
||||||
}
|
}
|
||||||
@ -1748,8 +1753,13 @@ pub fn rebuildCells(
|
|||||||
for (cursor_cells.items) |*cell| {
|
for (cursor_cells.items) |*cell| {
|
||||||
if (cell.mode.isFg() and cell.mode != .fg_color) {
|
if (cell.mode.isFg() and cell.mode != .fg_color) {
|
||||||
const cell_color = if (self.cursor_invert) blk: {
|
const cell_color = if (self.cursor_invert) blk: {
|
||||||
|
// Use the background color from the cell under the cursor, if any.
|
||||||
const sty = screen.cursor.page_pin.style(screen.cursor.page_cell);
|
const sty = screen.cursor.page_pin.style(screen.cursor.page_cell);
|
||||||
break :blk sty.bg(screen.cursor.page_cell, color_palette) orelse self.background_color orelse self.default_background_color;
|
break :blk if (sty.flags.inverse)
|
||||||
|
// If the cell is reversed, use foreground color instead.
|
||||||
|
(sty.fg(color_palette, self.config.bold_is_bright) orelse self.foreground_color orelse self.default_foreground_color)
|
||||||
|
else
|
||||||
|
(sty.bg(screen.cursor.page_cell, color_palette) orelse self.background_color orelse self.default_background_color);
|
||||||
} else if (self.config.cursor_text) |txt|
|
} else if (self.config.cursor_text) |txt|
|
||||||
txt
|
txt
|
||||||
else
|
else
|
||||||
|
Reference in New Issue
Block a user