diff options
author | Lars Wendler <polynomial-c@gentoo.org> | 2020-12-28 00:44:42 +0100 |
---|---|---|
committer | Lars Wendler <polynomial-c@gentoo.org> | 2020-12-28 00:45:17 +0100 |
commit | 2750c23c9e168f7e2d53f75405d5f8d0f1f7a7bc (patch) | |
tree | a67aa1fc98ac10eb7e25e338f2991d5af9ceba75 /sys-process | |
parent | dev-libs/oniguruma: Stabilize 6.9.6-r1 s390, #762026 (diff) | |
download | gentoo-2750c23c9e168f7e2d53f75405d5f8d0f1f7a7bc.tar.gz gentoo-2750c23c9e168f7e2d53f75405d5f8d0f1f7a7bc.tar.bz2 gentoo-2750c23c9e168f7e2d53f75405d5f8d0f1f7a7bc.zip |
sys-process/htop: Revbump to fix column header sort highlight
Package-Manager: Portage-3.0.12, Repoman-3.0.2
Signed-off-by: Lars Wendler <polynomial-c@gentoo.org>
Diffstat (limited to 'sys-process')
-rw-r--r-- | sys-process/htop/files/htop-3.0.4-sort_column_header_highlight.patch | 153 | ||||
-rw-r--r-- | sys-process/htop/htop-3.0.4-r1.ebuild (renamed from sys-process/htop/htop-3.0.4.ebuild) | 4 |
2 files changed, 157 insertions, 0 deletions
diff --git a/sys-process/htop/files/htop-3.0.4-sort_column_header_highlight.patch b/sys-process/htop/files/htop-3.0.4-sort_column_header_highlight.patch new file mode 100644 index 000000000000..a2b6a0d4259a --- /dev/null +++ b/sys-process/htop/files/htop-3.0.4-sort_column_header_highlight.patch @@ -0,0 +1,153 @@ +From 86d293125565a15bbd94683080dbc755c5d7edee Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Christian=20G=C3=B6ttsche?= <cgzones@googlemail.com> +Date: Tue, 22 Dec 2020 17:12:38 +0100 +Subject: [PATCH] Restore highlighted header of current sorted process column + +--- + MainPanel.c | 10 ++++++++-- + Panel.c | 22 ++++++++++------------ + Panel.h | 6 ++++-- + ScreenManager.c | 2 +- + htop.c | 2 -- + 5 files changed, 23 insertions(+), 19 deletions(-) + +diff --git a/MainPanel.c b/MainPanel.c +index 949138dc..c8a4c059 100644 +--- a/MainPanel.c ++++ b/MainPanel.c +@@ -102,7 +102,7 @@ static HandlerResult MainPanel_eventHandler(Panel* super, int ch) { + MainPanel_updateTreeFunctions(this, this->state->settings->treeView); + } + if (reaction & HTOP_UPDATE_PANELHDR) { +- ProcessList_printHeader(this->state->pl, Panel_getHeader(super)); ++ result |= REDRAW; + } + if (reaction & HTOP_REFRESH) { + result |= REFRESH; +@@ -168,13 +168,19 @@ static void MainPanel_drawFunctionBar(Panel* super) { + } + } + ++static void MainPanel_printHeader(Panel* super) { ++ MainPanel* this = (MainPanel*) super; ++ ProcessList_printHeader(this->state->pl, &super->header); ++} ++ + const PanelClass MainPanel_class = { + .super = { + .extends = Class(Panel), + .delete = MainPanel_delete + }, + .eventHandler = MainPanel_eventHandler, +- .drawFunctionBar = MainPanel_drawFunctionBar ++ .drawFunctionBar = MainPanel_drawFunctionBar, ++ .printHeader = MainPanel_printHeader + }; + + MainPanel* MainPanel_new() { +diff --git a/Panel.c b/Panel.c +index b36f1efc..26a0c0ec 100644 +--- a/Panel.c ++++ b/Panel.c +@@ -76,13 +76,6 @@ void Panel_setSelectionColor(Panel* this, ColorElements colorId) { + this->selectionColorId = colorId; + } + +-RichString* Panel_getHeader(Panel* this) { +- assert (this != NULL); +- +- this->needsRedraw = true; +- return &(this->header); +-} +- + inline void Panel_setHeader(Panel* this, const char* header) { + RichString_writeWide(&(this->header), CRT_colors[PANEL_HEADER_FOCUS], header); + this->needsRedraw = true; +@@ -228,15 +221,20 @@ void Panel_draw(Panel* this, bool force_redraw, bool focus, bool highlightSelect + int x = this->x; + int h = this->h; + ++ const int header_attr = focus ++ ? CRT_colors[PANEL_HEADER_FOCUS] ++ : CRT_colors[PANEL_HEADER_UNFOCUS]; ++ if (force_redraw) { ++ if (Panel_printHeaderFn(this)) ++ Panel_printHeader(this); ++ else ++ RichString_setAttr(&this->header, header_attr); ++ } + int headerLen = RichString_sizeVal(this->header); + if (headerLen > 0) { +- int attr = focus +- ? CRT_colors[PANEL_HEADER_FOCUS] +- : CRT_colors[PANEL_HEADER_UNFOCUS]; +- attrset(attr); ++ attrset(header_attr); + mvhline(y, x, ' ', this->w); + if (scrollH < headerLen) { +- RichString_setAttr(&this->header, attr); + RichString_printoffnVal(this->header, y, x, scrollH, + MINIMUM(headerLen - scrollH, this->w)); + } +diff --git a/Panel.h b/Panel.h +index 959c0b78..63659e3c 100644 +--- a/Panel.h ++++ b/Panel.h +@@ -37,11 +37,13 @@ typedef enum HandlerResult_ { + + typedef HandlerResult (*Panel_EventHandler)(Panel*, int); + typedef void (*Panel_DrawFunctionBar)(Panel*); ++typedef void (*Panel_PrintHeader)(Panel*); + + typedef struct PanelClass_ { + const ObjectClass super; + const Panel_EventHandler eventHandler; + const Panel_DrawFunctionBar drawFunctionBar; ++ const Panel_PrintHeader printHeader; + } PanelClass; + + #define As_Panel(this_) ((const PanelClass*)((this_)->super.klass)) +@@ -49,6 +51,8 @@ typedef struct PanelClass_ { + #define Panel_eventHandler(this_, ev_) (assert(As_Panel(this_)->eventHandler), As_Panel(this_)->eventHandler((Panel*)(this_), ev_)) + #define Panel_drawFunctionBarFn(this_) As_Panel(this_)->drawFunctionBar + #define Panel_drawFunctionBar(this_) (assert(As_Panel(this_)->drawFunctionBar), As_Panel(this_)->drawFunctionBar((Panel*)(this_))) ++#define Panel_printHeaderFn(this_) As_Panel(this_)->printHeader ++#define Panel_printHeader(this_) (assert(As_Panel(this_)->printHeader), As_Panel(this_)->printHeader((Panel*)(this_))) + + struct Panel_ { + Object super; +@@ -84,8 +88,6 @@ void Panel_done(Panel* this); + + void Panel_setSelectionColor(Panel* this, ColorElements colorId); + +-RichString* Panel_getHeader(Panel* this); +- + void Panel_setHeader(Panel* this, const char* header); + + void Panel_move(Panel* this, int x, int y); +diff --git a/ScreenManager.c b/ScreenManager.c +index 57cb564d..4c74e477 100644 +--- a/ScreenManager.c ++++ b/ScreenManager.c +@@ -141,7 +141,7 @@ void ScreenManager_run(ScreenManager* this, Panel** lastFocus, int* lastKey) { + + bool timedOut = true; + bool redraw = true; +- bool force_redraw = false; ++ bool force_redraw = true; + bool rescan = false; + int sortTimeout = 0; + int resetSortTimeout = 5; +diff --git a/htop.c b/htop.c +index 4b43ed2a..aa6d9147 100644 +--- a/htop.c ++++ b/htop.c +@@ -313,8 +313,6 @@ int main(int argc, char** argv) { + + MainPanel_updateTreeFunctions(panel, settings->treeView); + +- ProcessList_printHeader(pl, Panel_getHeader((Panel*)panel)); +- + State state = { + .settings = settings, + .ut = ut, diff --git a/sys-process/htop/htop-3.0.4.ebuild b/sys-process/htop/htop-3.0.4-r1.ebuild index 1e6c67cacd04..8b37c2d31a59 100644 --- a/sys-process/htop/htop-3.0.4.ebuild +++ b/sys-process/htop/htop-3.0.4-r1.ebuild @@ -29,6 +29,10 @@ CONFIG_CHECK="~TASKSTATS ~TASK_XACCT ~TASK_IO_ACCOUNTING ~CGROUPS" S="${WORKDIR}/${P/_}" +PATCHES=( + "${FILESDIR}/${P}-sort_column_header_highlight.patch" +) + pkg_setup() { if ! has_version sys-process/lsof; then ewarn "To use lsof features in htop (what processes are accessing" |