mod: reduce the amount of unnecessary re-renderings
All checks were successful
Zig Project Action / Lint, Spell-check and test zig project (push) Successful in 1m8s
All checks were successful
Zig Project Action / Lint, Spell-check and test zig project (push) Successful in 1m8s
This commit is contained in:
@@ -64,18 +64,32 @@ pub fn Widget(comptime Event: type, comptime Renderer: type) type {
|
|||||||
var require_render = true;
|
var require_render = true;
|
||||||
if (key.matches(.{ .cp = 'g' })) {
|
if (key.matches(.{ .cp = 'g' })) {
|
||||||
// top
|
// top
|
||||||
|
if (this.idx != 0) {
|
||||||
this.idx = 0;
|
this.idx = 0;
|
||||||
|
} else {
|
||||||
|
require_render = false;
|
||||||
|
}
|
||||||
} else if (key.matches(.{ .cp = 'G' })) {
|
} else if (key.matches(.{ .cp = 'G' })) {
|
||||||
// bottom
|
// bottom
|
||||||
|
if (this.idx < this.contents.items.len -| 1) {
|
||||||
this.idx = this.contents.items.len -| 1;
|
this.idx = this.contents.items.len -| 1;
|
||||||
|
} else {
|
||||||
|
require_render = false;
|
||||||
|
}
|
||||||
} else if (key.matches(.{ .cp = 'j' })) {
|
} else if (key.matches(.{ .cp = 'j' })) {
|
||||||
// down
|
// down
|
||||||
if (this.idx < this.contents.items.len -| 1) {
|
if (this.idx < this.contents.items.len -| 1) {
|
||||||
this.idx +|= 1;
|
this.idx += 1;
|
||||||
|
} else {
|
||||||
|
require_render = false;
|
||||||
}
|
}
|
||||||
} else if (key.matches(.{ .cp = 'k' })) {
|
} else if (key.matches(.{ .cp = 'k' })) {
|
||||||
// up
|
// up
|
||||||
this.idx -|= 1;
|
if (this.idx > 0) {
|
||||||
|
this.idx -= 1;
|
||||||
|
} else {
|
||||||
|
require_render = false;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
require_render = false;
|
require_render = false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -55,18 +55,32 @@ pub fn Widget(comptime Event: type, comptime Renderer: type) type {
|
|||||||
.key => |key| {
|
.key => |key| {
|
||||||
if (key.matches(.{ .cp = 'g' })) {
|
if (key.matches(.{ .cp = 'g' })) {
|
||||||
// top
|
// top
|
||||||
|
if (this.line != 0) {
|
||||||
this.line = 0;
|
this.line = 0;
|
||||||
|
} else {
|
||||||
|
require_render = false;
|
||||||
|
}
|
||||||
} else if (key.matches(.{ .cp = 'G' })) {
|
} else if (key.matches(.{ .cp = 'G' })) {
|
||||||
// bottom
|
// bottom
|
||||||
|
if (this.line < this.line_index.items.len -| 1 -| this.size.rows) {
|
||||||
this.line = this.line_index.items.len -| 1 -| this.size.rows;
|
this.line = this.line_index.items.len -| 1 -| this.size.rows;
|
||||||
|
} else {
|
||||||
|
require_render = false;
|
||||||
|
}
|
||||||
} else if (key.matches(.{ .cp = 'j' })) {
|
} else if (key.matches(.{ .cp = 'j' })) {
|
||||||
// down
|
// down
|
||||||
if (this.line < this.line_index.items.len -| 1 -| this.size.rows) {
|
if (this.line < this.line_index.items.len -| 1 -| this.size.rows) {
|
||||||
this.line +|= 1;
|
this.line += 1;
|
||||||
|
} else {
|
||||||
|
require_render = false;
|
||||||
}
|
}
|
||||||
} else if (key.matches(.{ .cp = 'k' })) {
|
} else if (key.matches(.{ .cp = 'k' })) {
|
||||||
// up
|
// up
|
||||||
this.line -|= 1;
|
if (this.line > 0) {
|
||||||
|
this.line -= 1;
|
||||||
|
} else {
|
||||||
|
require_render = false;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
require_render = false;
|
require_render = false;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user