From a7fdfdd2580b8f2efe113a3337513138ae2ad2cd Mon Sep 17 00:00:00 2001
From: Marek Bel <marek.bel@posta.cz>
Date: Tue, 18 Sep 2018 17:15:13 +0200
Subject: [PATCH] Put repetitive code into separate function. No change in
 functionality.

---
 Firmware/lcd.cpp      | 9 +++++++--
 Firmware/lcd.h        | 7 ++++++-
 Firmware/menu.cpp     | 3 +--
 Firmware/ultralcd.cpp | 3 +--
 4 files changed, 15 insertions(+), 7 deletions(-)

diff --git a/Firmware/lcd.cpp b/Firmware/lcd.cpp
index 31c7183e..c434aa08 100644
--- a/Firmware/lcd.cpp
+++ b/Firmware/lcd.cpp
@@ -683,13 +683,18 @@ ShortTimer longPressTimer;
 LongTimer lcd_timeoutToStatus;
 
 
+//! @brief Was button clicked?
+//!
+//! Consume click event, following call would return 0.
+//!
+//! @retval 0 not clicked
+//! @retval nonzero clicked
 uint8_t lcd_clicked(void)
 {
 	bool clicked = LCD_CLICKED;
 	if(clicked)
 	{
-	    lcd_button_pressed = 0;
-	    lcd_buttons &= 0xff^EN_C;
+	    lcd_consume_click();
 	}
     return clicked;
 }
diff --git a/Firmware/lcd.h b/Firmware/lcd.h
index 251344de..8d774b30 100644
--- a/Firmware/lcd.h
+++ b/Firmware/lcd.h
@@ -131,7 +131,6 @@ extern lcd_lcdupdate_func_t lcd_lcdupdate_func;
 
 extern uint8_t lcd_clicked(void);
 
-
 extern void lcd_beeper_quick_feedback(void);
 
 //Cause an LCD refresh, and give the user visual or audible feedback that something has happened
@@ -221,6 +220,12 @@ extern void lcd_set_custom_characters_progress(void);
 extern void lcd_set_custom_characters_nextpage(void);
 extern void lcd_set_custom_characters_degree(void);
 
+//! @brief Consume click event
+inline void lcd_consume_click()
+{
+    lcd_button_pressed = 0;
+    lcd_buttons &= 0xff^EN_C;
+}
 
 
 #endif //_LCD_H
diff --git a/Firmware/menu.cpp b/Firmware/menu.cpp
index a92fc857..b002ca0e 100644
--- a/Firmware/menu.cpp
+++ b/Firmware/menu.cpp
@@ -236,8 +236,7 @@ uint8_t menu_item_function_P(const char* str, menu_func_t func)
 		if (menu_clicked && (lcd_encoder == menu_item))
 		{
 			menu_clicked = false;
-            lcd_button_pressed = 0;
-            lcd_buttons &= 0xff^EN_C;
+			lcd_consume_click();
 			lcd_update_enabled = 0;
 			if (func) func();
 			lcd_update_enabled = 1;
diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp
index 35426147..7b201f2a 100644
--- a/Firmware/ultralcd.cpp
+++ b/Firmware/ultralcd.cpp
@@ -463,8 +463,7 @@ static uint8_t menu_item_sdfile(const char*
 		}
 		if (menu_clicked && (lcd_encoder == menu_item))
 		{
-		    lcd_button_pressed = 0;
-		    lcd_buttons &= 0xff^EN_C;
+		    lcd_consume_click();
 			menu_action_sdfile(str_fn);
 			return menu_item_ret();
 		}