From 05ba450c3b58c095b1e4ed206c25654f29a33b5a Mon Sep 17 00:00:00 2001
From: Lukas Fleischer <calcurse@cryptocrack.de>
Date: Tue, 13 May 2014 21:35:02 +0200
Subject: 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>
---
 src/calcurse.h | 1 +
 src/custom.c   | 2 +-
 src/notify.c   | 2 +-
 src/wins.c     | 8 +++++++-
 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);
 }
 
-- 
cgit v1.2.3-70-g09d2