diff options
author | Joan Josep <juanjo.ng.83@gmail.com> | 2019-02-17 00:15:58 +0100 |
---|---|---|
committer | PeterN <peter@fuzzle.org> | 2019-02-16 23:15:58 +0000 |
commit | 548ec05a48ba28b65e779fa27fa5985a4ee2901b (patch) | |
tree | 518372f8dba71cc9caf79f2d5974a917ceb2802f | |
parent | ebe84b9d4c747d516fd779c711788da5d4dcd1d0 (diff) | |
download | openttd-548ec05a48ba28b65e779fa27fa5985a4ee2901b.tar.xz |
Add: News menu entry and shortcut for deleting all messages. (#7240)
-rw-r--r-- | src/lang/english.txt | 1 | ||||
-rw-r--r-- | src/main_gui.cpp | 3 | ||||
-rw-r--r-- | src/toolbar_gui.cpp | 3 | ||||
-rw-r--r-- | src/window.cpp | 12 | ||||
-rw-r--r-- | src/window_func.h | 1 |
5 files changed, 19 insertions, 1 deletions
diff --git a/src/lang/english.txt b/src/lang/english.txt index 949851723..ceb42a5c6 100644 --- a/src/lang/english.txt +++ b/src/lang/english.txt @@ -466,6 +466,7 @@ STR_TOOLBAR_SOUND_MUSIC :Sound/music ############ range for message menu starts STR_NEWS_MENU_LAST_MESSAGE_NEWS_REPORT :Last message/news report STR_NEWS_MENU_MESSAGE_HISTORY_MENU :Message history +STR_NEWS_MENU_DELETE_ALL_MESSAGES :Delete all messages ############ range ends here ############ range for about menu starts diff --git a/src/main_gui.cpp b/src/main_gui.cpp index 2eb24c8dc..43a73f6de 100644 --- a/src/main_gui.cpp +++ b/src/main_gui.cpp @@ -220,6 +220,7 @@ enum { GHK_RESET_OBJECT_TO_PLACE, GHK_DELETE_WINDOWS, GHK_DELETE_NONVITAL_WINDOWS, + GHK_DELETE_ALL_MESSAGES, GHK_REFRESH_SCREEN, GHK_CRASH, GHK_MONEY, @@ -345,6 +346,7 @@ struct MainWindow : Window case GHK_RESET_OBJECT_TO_PLACE: ResetObjectToPlace(); break; case GHK_DELETE_WINDOWS: DeleteNonVitalWindows(); break; case GHK_DELETE_NONVITAL_WINDOWS: DeleteAllNonVitalWindows(); break; + case GHK_DELETE_ALL_MESSAGES: DeleteAllMessages(); break; case GHK_REFRESH_SCREEN: MarkWholeScreenDirty(); break; case GHK_CRASH: // Crash the game @@ -488,6 +490,7 @@ static Hotkey global_hotkeys[] = { Hotkey(WKC_ESC, "reset_object_to_place", GHK_RESET_OBJECT_TO_PLACE), Hotkey(WKC_DELETE, "delete_windows", GHK_DELETE_WINDOWS), Hotkey(WKC_DELETE | WKC_SHIFT, "delete_all_windows", GHK_DELETE_NONVITAL_WINDOWS), + Hotkey(WKC_DELETE | WKC_CTRL, "delete_all_messages", GHK_DELETE_ALL_MESSAGES), Hotkey('R' | WKC_CTRL, "refresh_screen", GHK_REFRESH_SCREEN), #if defined(_DEBUG) Hotkey('0' | WKC_ALT, "crash_game", GHK_CRASH), diff --git a/src/toolbar_gui.cpp b/src/toolbar_gui.cpp index a5bccd41f..9b84268ef 100644 --- a/src/toolbar_gui.cpp +++ b/src/toolbar_gui.cpp @@ -1023,7 +1023,7 @@ static CallBackFunction MenuClickMusicWindow(int index) static CallBackFunction ToolbarNewspaperClick(Window *w) { - PopupMainToolbMenu(w, WID_TN_MESSAGES, STR_NEWS_MENU_LAST_MESSAGE_NEWS_REPORT, 2); + PopupMainToolbMenu(w, WID_TN_MESSAGES, STR_NEWS_MENU_LAST_MESSAGE_NEWS_REPORT, 3); return CBF_NONE; } @@ -1038,6 +1038,7 @@ static CallBackFunction MenuClickNewspaper(int index) switch (index) { case 0: ShowLastNewsMessage(); break; case 1: ShowMessageHistory(); break; + case 2: DeleteAllMessages(); break; } return CBF_NONE; } diff --git a/src/window.cpp b/src/window.cpp index 3f4adf5e9..e8c4fe74d 100644 --- a/src/window.cpp +++ b/src/window.cpp @@ -39,6 +39,7 @@ #include "framerate_type.h" #include "network/network_func.h" #include "guitimer_func.h" +#include "news_func.h" #include "safeguards.h" @@ -3371,6 +3372,17 @@ restart_search: } /** + * Delete all messages and their corresponding window (if any). + */ +void DeleteAllMessages() +{ + InitNewsItemStructs(); + InvalidateWindowData(WC_STATUS_BAR, 0, SBI_NEWS_DELETED); // invalidate the statusbar + InvalidateWindowData(WC_MESSAGE_HISTORY, 0); // invalidate the message history + DeleteWindowById(WC_NEWS_WINDOW, 0); // close newspaper or general message window if shown +} + +/** * Delete all windows that are used for construction of vehicle etc. * Once done with that invalidate the others to ensure they get refreshed too. */ diff --git a/src/window_func.h b/src/window_func.h index 453b88978..45e2d71ec 100644 --- a/src/window_func.h +++ b/src/window_func.h @@ -40,6 +40,7 @@ void InvalidateWindowClassesData(WindowClass cls, int data = 0, bool gui_scope = void DeleteNonVitalWindows(); void DeleteAllNonVitalWindows(); +void DeleteAllMessages(); void DeleteConstructionWindows(); void HideVitalWindows(); void ShowVitalWindows(); |