diff options
-rw-r--r-- | network_gui.c | 36 |
1 files changed, 20 insertions, 16 deletions
diff --git a/network_gui.c b/network_gui.c index 72a603f1a..fb266a190 100644 --- a/network_gui.c +++ b/network_gui.c @@ -76,6 +76,21 @@ static void NetworkTruncateString(char *name, const int max_width) extern const char _openttd_revision[]; +static FiosItem *selected_map = NULL; // to highlight slected map + +// called when a new server is found on the network +void UpdateNetworkGameWindow(bool unselect) +{ + Window *w; + w = FindWindowById(WC_NETWORK_WINDOW, 0); + if (w != NULL) { + if (unselect) + _selected_item = NULL; + w->vscroll.count = _network_game_count; + SetWindowDirty(w); + } +} + static void NetworkGameWindowWndProc(Window *w, WindowEvent *e) { switch(e->event) { @@ -334,10 +349,14 @@ static void NetworkGameWindowWndProc(Window *w, WindowEvent *e) case WE_KEYPRESS: if (_selected_field != 3) { if ( e->keypress.keycode == WKC_DELETE ) { // press 'delete' to remove servers - if (_selected_item != NULL && _selected_item->manually) { + if (_selected_item != NULL) { NetworkGameListRemoveItem(_selected_item); NetworkRebuildHostList(); SetWindowDirty(w); + _network_game_count--; + // reposition scrollbar + if (_network_game_count >= w->vscroll.cap && w->vscroll.pos > _network_game_count-w->vscroll.cap) w->vscroll.pos--; + UpdateNetworkGameWindow(false); _selected_item = NULL; } } @@ -411,21 +430,6 @@ static const WindowDesc _network_game_window_desc = { NetworkGameWindowWndProc, }; -static FiosItem *selected_map = NULL; // to highlight slected map - -// called when a new server is found on the network -void UpdateNetworkGameWindow(bool unselect) -{ - Window *w; - w = FindWindowById(WC_NETWORK_WINDOW, 0); - if (w != NULL) { - if (unselect) - _selected_item = NULL; - w->vscroll.count = _network_game_count; - SetWindowDirty(w); - } -} - void ShowNetworkGameWindow() { uint i; |