From c2b2e67c1f2aa8f4fadf4240d81ef323a9699d01 Mon Sep 17 00:00:00 2001 From: Sijmen Date: Wed, 20 Oct 2021 23:06:53 +0200 Subject: [PATCH 1/4] Remove unused server_list_get_item_button function --- src/openrct2-ui/windows/ServerList.cpp | 29 +------------------------- 1 file changed, 1 insertion(+), 28 deletions(-) diff --git a/src/openrct2-ui/windows/ServerList.cpp b/src/openrct2-ui/windows/ServerList.cpp index 90731a267f..4b514a2fca 100644 --- a/src/openrct2-ui/windows/ServerList.cpp +++ b/src/openrct2-ui/windows/ServerList.cpp @@ -109,10 +109,8 @@ enum DDIDX_FAVOURITE }; -static int32_t _hoverButtonIndex = -1; static std::string _version; -static void server_list_get_item_button(int32_t buttonIndex, int32_t x, int32_t y, int32_t width, int32_t* outX, int32_t* outY); static void join_server(std::string address); static void server_list_fetch_servers_begin(); static void server_list_fetch_servers_check(rct_window* w); @@ -288,25 +286,7 @@ static void window_server_list_scroll_mouseover(rct_window* w, int32_t scrollInd index = -1; } - int32_t hoverButtonIndex = -1; auto& listWidget = w->widgets[WIDX_LIST]; - if (index != -1) - { - int32_t width = listWidget.width(); - int32_t sy = index * ITEM_HEIGHT; - for (int32_t i = 0; i < 2; i++) - { - int32_t bx, by; - - server_list_get_item_button(i, 0, sy, width, &bx, &by); - if (screenCoords.x >= bx && screenCoords.y >= by && screenCoords.x < bx + 24 && screenCoords.y < by + 24) - { - hoverButtonIndex = i; - break; - } - } - } - int32_t width = listWidget.width(); int32_t right = width - 3 - 14 - 10; if (screenCoords.x < right) @@ -315,10 +295,9 @@ static void window_server_list_scroll_mouseover(rct_window* w, int32_t scrollInd window_tooltip_close(); } - if (w->selected_list_item != index || _hoverButtonIndex != hoverButtonIndex) + if (w->selected_list_item != index) { w->selected_list_item = index; - _hoverButtonIndex = hoverButtonIndex; window_tooltip_close(); w->Invalidate(); } @@ -516,12 +495,6 @@ static void window_server_list_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi } } -static void server_list_get_item_button(int32_t buttonIndex, int32_t x, int32_t y, int32_t width, int32_t* outX, int32_t* outY) -{ - *outX = width - 3 - 36 - (30 * buttonIndex); - *outY = y + 2; -} - static void join_server(std::string address) { int32_t port = NETWORK_DEFAULT_PORT; From f2c495265735061d9742c2f45d211ee37dd5c4fc Mon Sep 17 00:00:00 2001 From: Sijmen Date: Thu, 21 Oct 2021 20:35:46 +0200 Subject: [PATCH 2/4] Fix server list network version tooltip logic Moved the showing/hiding of the tooltip to scroll_mouseover, and simplified the logic. Now, the tooltip will consistently show instead of only when it felt like it :) --- src/openrct2-ui/windows/ServerList.cpp | 36 ++++++++++++++------------ 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/src/openrct2-ui/windows/ServerList.cpp b/src/openrct2-ui/windows/ServerList.cpp index 4b514a2fca..1dd6a8d575 100644 --- a/src/openrct2-ui/windows/ServerList.cpp +++ b/src/openrct2-ui/windows/ServerList.cpp @@ -109,6 +109,7 @@ enum DDIDX_FAVOURITE }; +static bool _showServerVersion = false; static std::string _version; static void join_server(std::string address); @@ -279,26 +280,31 @@ static void window_server_list_scroll_mousedown(rct_window* w, int32_t scrollInd static void window_server_list_scroll_mouseover(rct_window* w, int32_t scrollIndex, const ScreenCoordsXY& screenCoords) { - // Item - int32_t index = screenCoords.y / ITEM_HEIGHT; - if (index < 0 || index >= w->no_list_items) - { - index = -1; - } - auto& listWidget = w->widgets[WIDX_LIST]; - int32_t width = listWidget.width(); - int32_t right = width - 3 - 14 - 10; - if (screenCoords.x < right) + + int32_t itemIndex = screenCoords.y / ITEM_HEIGHT; + bool showServerVersion = false; + if (itemIndex < 0 || itemIndex >= w->no_list_items) { - listWidget.tooltip = STR_NONE; - window_tooltip_close(); + itemIndex = -1; + } + else + { + const int32_t iconX = listWidget.width() - SCROLLBAR_WIDTH - 17; + showServerVersion = screenCoords.x > iconX; } - if (w->selected_list_item != index) + if (w->selected_list_item != itemIndex || _showServerVersion != showServerVersion) { - w->selected_list_item = index; + w->selected_list_item = itemIndex; + _showServerVersion = showServerVersion; + + if (showServerVersion) + listWidget.tooltip = STR_NETWORK_VERSION_TIP; + else + listWidget.tooltip = STR_NONE; window_tooltip_close(); + w->Invalidate(); } } @@ -408,7 +414,6 @@ static void window_server_list_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi ScreenCoordsXY screenCoords; screenCoords.y = 0; - listWidget.tooltip = STR_NONE; for (int32_t i = 0; i < w->no_list_items; i++) { if (screenCoords.y >= dpi->y + dpi->height) @@ -422,7 +427,6 @@ static void window_server_list_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi { gfx_filter_rect(dpi, { 0, screenCoords.y, width, screenCoords.y + ITEM_HEIGHT }, FilterPaletteID::PaletteDarken1); _version = serverDetails.Version; - listWidget.tooltip = STR_NETWORK_VERSION_TIP; } colour_t colour = w->colours[1]; From dc532f6ac9868eacf0c45d68164b5b6e2af6f348 Mon Sep 17 00:00:00 2001 From: Sijmen Date: Fri, 22 Oct 2021 00:51:37 +0200 Subject: [PATCH 3/4] Rename showServerVersion to showVersionTooltip --- src/openrct2-ui/windows/ServerList.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/openrct2-ui/windows/ServerList.cpp b/src/openrct2-ui/windows/ServerList.cpp index 1dd6a8d575..f9b5dc975b 100644 --- a/src/openrct2-ui/windows/ServerList.cpp +++ b/src/openrct2-ui/windows/ServerList.cpp @@ -109,7 +109,7 @@ enum DDIDX_FAVOURITE }; -static bool _showServerVersion = false; +static bool _showVersionTooltip = false; static std::string _version; static void join_server(std::string address); @@ -283,7 +283,7 @@ static void window_server_list_scroll_mouseover(rct_window* w, int32_t scrollInd auto& listWidget = w->widgets[WIDX_LIST]; int32_t itemIndex = screenCoords.y / ITEM_HEIGHT; - bool showServerVersion = false; + bool showVersionTooltip = false; if (itemIndex < 0 || itemIndex >= w->no_list_items) { itemIndex = -1; @@ -291,15 +291,15 @@ static void window_server_list_scroll_mouseover(rct_window* w, int32_t scrollInd else { const int32_t iconX = listWidget.width() - SCROLLBAR_WIDTH - 17; - showServerVersion = screenCoords.x > iconX; + showVersionTooltip = screenCoords.x > iconX; } - if (w->selected_list_item != itemIndex || _showServerVersion != showServerVersion) + if (w->selected_list_item != itemIndex || _showVersionTooltip != showVersionTooltip) { w->selected_list_item = itemIndex; - _showServerVersion = showServerVersion; + _showVersionTooltip = showVersionTooltip; - if (showServerVersion) + if (showVersionTooltip) listWidget.tooltip = STR_NETWORK_VERSION_TIP; else listWidget.tooltip = STR_NONE; From 380b20f71d41b8b338bfccec5c9fcf211b25943e Mon Sep 17 00:00:00 2001 From: Sijmen Date: Sat, 23 Oct 2021 18:20:45 +0200 Subject: [PATCH 4/4] Apply review suggestions --- src/openrct2-ui/windows/ServerList.cpp | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/src/openrct2-ui/windows/ServerList.cpp b/src/openrct2-ui/windows/ServerList.cpp index f9b5dc975b..ffd85a95d7 100644 --- a/src/openrct2-ui/windows/ServerList.cpp +++ b/src/openrct2-ui/windows/ServerList.cpp @@ -109,7 +109,7 @@ enum DDIDX_FAVOURITE }; -static bool _showVersionTooltip = false; +static bool _showNetworkVersionTooltip = false; static std::string _version; static void join_server(std::string address); @@ -283,26 +283,23 @@ static void window_server_list_scroll_mouseover(rct_window* w, int32_t scrollInd auto& listWidget = w->widgets[WIDX_LIST]; int32_t itemIndex = screenCoords.y / ITEM_HEIGHT; - bool showVersionTooltip = false; + bool showNetworkVersionTooltip = false; if (itemIndex < 0 || itemIndex >= w->no_list_items) { itemIndex = -1; } else { - const int32_t iconX = listWidget.width() - SCROLLBAR_WIDTH - 17; - showVersionTooltip = screenCoords.x > iconX; + const int32_t iconX = listWidget.width() - SCROLLBAR_WIDTH - 7 - 10; + showNetworkVersionTooltip = screenCoords.x > iconX; } - if (w->selected_list_item != itemIndex || _showVersionTooltip != showVersionTooltip) + if (w->selected_list_item != itemIndex || _showNetworkVersionTooltip != showNetworkVersionTooltip) { w->selected_list_item = itemIndex; - _showVersionTooltip = showVersionTooltip; + _showNetworkVersionTooltip = showNetworkVersionTooltip; - if (showVersionTooltip) - listWidget.tooltip = STR_NETWORK_VERSION_TIP; - else - listWidget.tooltip = STR_NONE; + listWidget.tooltip = showNetworkVersionTooltip ? static_cast(STR_NETWORK_VERSION_TIP) : STR_NONE; window_tooltip_close(); w->Invalidate();