summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukas Fleischer <calcurse@cryptocrack.de>2014-05-13 21:35:02 +0200
committerLukas Fleischer <calcurse@cryptocrack.de>2014-05-18 11:02:56 +0200
commit05ba450c3b58c095b1e4ed206c25654f29a33b5a (patch)
treef6df52f53a4e3149b3d214edd212fb8f8249d1c6
parent5eea05a2033c479c74ab70d77dc0a0d31233c59d (diff)
downloadcalcurse-05ba450c3b58c095b1e4ed206c25654f29a33b5a.zip
Reduce flicker when resizing in option menus
Do not update the main windows when resizing the terminal in the general options menu or in the notification options menu. Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
-rw-r--r--src/calcurse.h1
-rw-r--r--src/custom.c2
-rw-r--r--src/notify.c2
-rw-r--r--src/wins.c8
4 files changed, 10 insertions, 3 deletions
diff --git a/src/calcurse.h b/src/calcurse.h
index 4f5c2c0..59af8f9 100644
--- a/src/calcurse.h
+++ b/src/calcurse.h
@@ -1093,6 +1093,7 @@ void wins_get_config(void);
void wins_update_border(int);
void wins_update_panels(int);
void wins_update(int);
+void wins_reset_noupdate(void);
void wins_reset(void);
void wins_prepare_external(void);
void wins_unprepare_external(void);
diff --git a/src/custom.c b/src/custom.c
index 2b309a2..9bf8905 100644
--- a/src/custom.c
+++ b/src/custom.c
@@ -802,7 +802,7 @@ void custom_general_config(void)
if (resize) {
resize = 0;
- wins_reset();
+ wins_reset_noupdate();
listbox_resize(&lb, 0, 0, notify_bar() ? row - 3 : row - 2, col);
listbox_draw_deco(&lb);
delwin(win[STA].p);
diff --git a/src/notify.c b/src/notify.c
index 17d0345..541c5ba 100644
--- a/src/notify.c
+++ b/src/notify.c
@@ -786,7 +786,7 @@ void notify_config_bar(void)
if (resize) {
resize = 0;
wins_get_config();
- wins_reset();
+ wins_reset_noupdate();
listbox_resize(&lb, 0, 0, notify_bar() ? row - 3 : row - 2, col);
listbox_draw_deco(&lb);
delwin(win[STA].p);
diff --git a/src/wins.c b/src/wins.c
index da517e8..2d521c1 100644
--- a/src/wins.c
+++ b/src/wins.c
@@ -584,12 +584,18 @@ void wins_update(int flags)
}
/* Reset the screen, needed when resizing terminal for example. */
-void wins_reset(void)
+void wins_reset_noupdate(void)
{
endwin();
wins_refresh();
curs_set(0);
wins_reinit();
+}
+
+/* Reset the screen, needed when resizing terminal for example. */
+void wins_reset(void)
+{
+ wins_reset_noupdate();
wins_update(FLAG_ALL);
}