From 4e468ff0f22b11c5b2a3f5ab56ade934ebcb6da8 Mon Sep 17 00:00:00 2001 From: Alastair Poole Date: Wed, 20 Jan 2021 08:49:00 +0000 Subject: [PATCH] proc_view: show or not show scroller. I like it off, someone won't, sooooo... --- src/bin/evisum_config.h | 4 +++- src/bin/ui/ui.c | 39 +++++++++++++++++++++++++++++++++--- src/bin/ui/ui.h | 2 ++ src/bin/ui/ui_process_list.c | 12 ++++++++++- 4 files changed, 52 insertions(+), 5 deletions(-) diff --git a/src/bin/evisum_config.h b/src/bin/evisum_config.h index 76b73aa..897138f 100644 --- a/src/bin/evisum_config.h +++ b/src/bin/evisum_config.h @@ -3,7 +3,7 @@ #include "ui/ui.h" -#define CONFIG_VERSION 0x000c +#define CONFIG_VERSION 0x000d typedef struct _Evisum_Config { @@ -25,6 +25,8 @@ typedef struct _Evisum_Config int sort_type; Eina_Bool sort_reverse; int poll_delay; + + int show_scroller; } proc; struct diff --git a/src/bin/ui/ui.c b/src/bin/ui/ui.c index 59347d7..725a7e5 100644 --- a/src/bin/ui/ui.c +++ b/src/bin/ui/ui.c @@ -29,8 +29,10 @@ evisum_ui_config_save(Ui *ui) if (ui->proc.win) { - if (_evisum_config->proc.poll_delay != ui->proc.poll_delay || - _evisum_config->proc.show_kthreads != ui->proc.show_kthreads) + if ((_evisum_config->proc.poll_delay != ui->proc.poll_delay) || + (_evisum_config->proc.show_kthreads != ui->proc.show_kthreads) || + (_evisum_config->proc.show_scroller != ui->proc.show_scroller) + ) { notify = EINA_TRUE; } @@ -45,6 +47,7 @@ evisum_ui_config_save(Ui *ui) _evisum_config->proc.poll_delay = ui->proc.poll_delay; _evisum_config->proc.show_kthreads = ui->proc.show_kthreads; _evisum_config->proc.show_user = ui->proc.show_user; + _evisum_config->proc.show_scroller = ui->proc.show_scroller; proc_info_kthreads_show_set(ui->proc.show_kthreads); } @@ -109,6 +112,7 @@ evisum_ui_config_load(Ui *ui) ui->proc.show_kthreads = _evisum_config->proc.show_kthreads; proc_info_kthreads_show_set(ui->proc.show_kthreads); ui->proc.show_user = _evisum_config->proc.show_user; + ui->proc.show_scroller = _evisum_config->proc.show_scroller; ui->proc.width = _evisum_config->proc.width; ui->proc.height = _evisum_config->proc.height; @@ -287,6 +291,16 @@ _main_menu_show_threads_changed_cb(void *data EINA_UNUSED, Evas_Object *obj, evisum_ui_config_save(ui); } +static void +_main_menu_show_scroller_changed_cb(void *data EINA_UNUSED, Evas_Object *obj, + void *event_info EINA_UNUSED) +{ + Ui *ui = data; + + ui->proc.show_scroller = elm_check_state_get(obj); + evisum_ui_config_save(ui); +} + static void _main_menu_show_user_changed_cb(void *data EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED) @@ -296,6 +310,7 @@ _main_menu_show_user_changed_cb(void *data EINA_UNUSED, Evas_Object *obj, ui->proc.show_user = elm_check_state_get(obj); evisum_ui_config_save(ui); } + typedef struct { Ecore_Timer *timer; @@ -304,7 +319,7 @@ typedef struct static void _main_menu_deleted_cb(void *data EINA_UNUSED, Evas_Object *obj, Evas *e, - void *event_info EINA_UNUSED) + void *event_info EINA_UNUSED) { Menu_Inst *inst = data; @@ -475,6 +490,24 @@ evisum_ui_main_menu_create(Ui *ui, Evas_Object *parent, Evas_Object *obj) _main_menu_show_user_changed_cb, ui); elm_box_pack_end(bx2, chk); + sep = elm_separator_add(bx2); + evas_object_size_hint_align_set(sep, FILL, FILL); + evas_object_size_hint_weight_set(sep, EXPAND, EXPAND); + elm_separator_horizontal_set(sep, 1); + evas_object_show(sep); + elm_box_pack_end(bx2, sep); + + chk = elm_check_add(bx2); + evas_object_size_hint_weight_set(chk, EXPAND, EXPAND); + evas_object_size_hint_align_set(chk, FILL, FILL); + elm_object_text_set(chk, _("Display scroll bar?")); + elm_check_state_set(chk, ui->proc.show_scroller); + evas_object_show(chk); + evas_object_smart_callback_add(chk, "changed", + _main_menu_show_scroller_changed_cb, ui); + elm_box_pack_end(bx2, chk); + + elm_object_content_set(fr, bx2); elm_box_pack_end(bx, fr); diff --git a/src/bin/ui/ui.h b/src/bin/ui/ui.h index 8e31efb..a53695b 100644 --- a/src/bin/ui/ui.h +++ b/src/bin/ui/ui.h @@ -35,6 +35,8 @@ typedef struct Ui Eina_Bool show_self; Eina_Bool show_kthreads; Eina_Bool show_user; + + Eina_Bool show_scroller; } proc; Evas_Object *win_about; diff --git a/src/bin/ui/ui_process_list.c b/src/bin/ui/ui_process_list.c index 3fb384e..82bc956 100644 --- a/src/bin/ui/ui_process_list.c +++ b/src/bin/ui/ui_process_list.c @@ -1418,7 +1418,9 @@ _ui_content_system_add(Ui_Data *pd, Evas_Object *parent) elm_scroller_gravity_set(pd->scroller, 0.0, 1.0); elm_object_focus_allow_set(glist, 1); elm_scroller_policy_set(pd->scroller, ELM_SCROLLER_POLICY_OFF, - ELM_SCROLLER_POLICY_OFF); + (ui->proc.show_scroller ? + ELM_SCROLLER_POLICY_ON : + ELM_SCROLLER_POLICY_OFF)); elm_genlist_multi_select_set(glist, EINA_FALSE); evas_object_size_hint_weight_set(glist, EXPAND, EXPAND); evas_object_size_hint_align_set(glist, FILL, FILL); @@ -1619,9 +1621,12 @@ static Eina_Bool _evisum_config_changed_cb(void *data, int type EINA_UNUSED, void *event EINA_UNUSED) { Eina_Iterator *it; + Ui *ui; Ui_Data *pd = data; void *d = NULL; + ui = pd->ui; + it = eina_hash_iterator_data_new(pd->cpu_times); while (eina_iterator_next(it, &d)) { @@ -1631,6 +1636,11 @@ _evisum_config_changed_cb(void *data, int type EINA_UNUSED, void *event EINA_UNU eina_iterator_free(it); + elm_scroller_policy_set(pd->scroller, ELM_SCROLLER_POLICY_OFF, + (ui->proc.show_scroller ? + ELM_SCROLLER_POLICY_ON : + ELM_SCROLLER_POLICY_OFF)); + return EINA_TRUE; }