diff --git a/cm_changelog.txt b/cm_changelog.txt index 9ff99f08de..1eaa2ab082 100644 --- a/cm_changelog.txt +++ b/cm_changelog.txt @@ -75,6 +75,7 @@ This is usable for any OpenTTD servers == CHANGELOG == *** ??? *** +- Fix company selection when clicking in online players window. - Fix cargo selection in charts. - Fix shaded trees setting UI. diff --git a/src/network/network_gui.cpp b/src/network/network_gui.cpp index f0eb2e7dd9..2168dbade2 100644 --- a/src/network/network_gui.cpp +++ b/src/network/network_gui.cpp @@ -1877,8 +1877,7 @@ public: // NOTE: needs to match company order in DrawWidget if (button == nullptr) { NWidgetBase *nwi = this->GetWidget(widget); - int y = _cursor.pos.y - this->top - nwi->pos_y - 2; - int index = y / this->line_height; + int index = this->vscroll->GetScrolledRowFromWidget(pt.y, this, WID_CL_MATRIX); NetworkClientInfo *own_ci = NetworkClientInfo::GetByClientID(_network_own_client_id); CompanyID client_playas = own_ci == nullptr ? COMPANY_SPECTATOR : own_ci->client_playas; if (client_playas == COMPANY_SPECTATOR && !NetworkMaxCompaniesReached()) index--; @@ -1896,6 +1895,12 @@ public: for (const Company *c : Company::Iterate()) { if (client_playas == c->index) continue; if (count_company(c->index)) break; + + // Skip lines with company players + for (const NetworkClientInfo *ci : NetworkClientInfo::Iterate()) { + if (ci->client_playas == c->index) index--; + } + if (index < 0) break; } break; }