summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wendler <polynomial-c@gentoo.org>2020-12-28 00:44:42 +0100
committerLars Wendler <polynomial-c@gentoo.org>2020-12-28 00:45:17 +0100
commit2750c23c9e168f7e2d53f75405d5f8d0f1f7a7bc (patch)
treea67aa1fc98ac10eb7e25e338f2991d5af9ceba75 /sys-process
parentdev-libs/oniguruma: Stabilize 6.9.6-r1 s390, #762026 (diff)
downloadgentoo-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.patch153
-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"