1
0
Fork 0

(svn r4605) -Backported revisions 4304, 4309, 4310, 4312, 4313, 4314 from trunk (chatbox-related stuff)

-The chat box' parent window (the main toolbar, wtf?) doesn't care for the WE_ON_EDIT_TEXT_CANCEL event, so don't send one. This code looks like it was mindlessly copy&pasted from the query box
	-The initial string of the chat box is always the empty string, so don't jump through hoops to check if nothing was entered and simplify the code
	-The chat box has no visible window title, therefore remove the string
	-Calculate the maximum pixel width of the entered text in the chat box from the "text box"-widget instead of hardcoding an arbitrary - and wrong - number
	-The parent window of the chat box is always the main toolbar (?!), therefore don't pass this information as parameter
	-a buffer overflow of the chat box introduced in r1263. Don't tell the Textbuf an arbitrary number as size of the string buffer, but the real lengthof() it
release/0.4
celestar 2006-04-28 07:45:44 +00:00
parent 05b541f63a
commit 6573b46ca3
27 changed files with 11 additions and 59 deletions

2
gui.h
View File

@ -123,7 +123,7 @@ extern const byte _fios_colors[];
/* network gui */
void ShowNetworkGameWindow(void);
void ShowChatWindow(StringID str, StringID caption, int maxlen, int maxwidth, WindowClass window_class, WindowNumber window_number);
void ShowChatWindow(void);
/* bridge_gui.c */
void ShowBuildBridgeWindow(uint start, uint end, byte type);

View File

@ -1313,7 +1313,6 @@ STR_NETWORK_CONNECTING_DOWNLOADING :{BLACK}{NUM} /
STR_NETWORK_DISCONNECT :{BLACK}Disconnect
STR_NETWORK_CHAT_QUERY_CAPTION :{WHITE}Enter your text message to send
STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Enter the amount of money you want to give
STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Server is protected. Enter password
STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Company is protected. Enter password

View File

@ -1298,7 +1298,6 @@ STR_NETWORK_CONNECTING_DOWNLOADING :{BLACK}{NUM} /
STR_NETWORK_DISCONNECT :{BLACK}Desconectar
STR_NETWORK_CHAT_QUERY_CAPTION :{WHITE}Digite a mensagem de texto a enviar
STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Digite o valor do dinheiro que pretende dar
STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Servidor protegido. Digite a senha
STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Companhia protegida. Digite a senha

View File

@ -1297,7 +1297,6 @@ STR_NETWORK_CONNECTING_DOWNLOADING :{BLACK}{NUM} /
STR_NETWORK_DISCONNECT :{BLACK}Desconnecta
STR_NETWORK_CHAT_QUERY_CAPTION :{WHITE}Entra el text del missatge a enviar
STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Entra la quantitat de diners que vols obtenir
STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Servidor protegit. Entra la contrasenya
STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Empresa protegida. Entra la contrasenya

View File

@ -1354,7 +1354,6 @@ STR_NETWORK_CONNECTING_DOWNLOADING :{BLACK}{NUM} /
STR_NETWORK_DISCONNECT :{BLACK}Odpojit se
STR_NETWORK_CHAT_QUERY_CAPTION :{WHITE}Napi¨ zprávu, kterou chce¨ poslat
STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Napi¨ castku, kterou chce¨ poskytnout
STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Server je chraneny. Napi¨ heslo
STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Spolecnost je chranena. Napi¨ heslo

View File

@ -1311,7 +1311,6 @@ STR_NETWORK_CONNECTING_DOWNLOADING :{BLACK}{NUM} /
STR_NETWORK_DISCONNECT :{BLACK}Afbryd forbindelse
STR_NETWORK_CHAT_QUERY_CAPTION :{WHITE}Skrive den tekst, som du vil sende
STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Skriv det beløb, som du ønsker at give
STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Serveren er beskyttet. Skriv kodeordet
STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Virksomheden er beskyttet. Skriv kodeordet

View File

@ -1313,7 +1313,6 @@ STR_NETWORK_CONNECTING_DOWNLOADING :{BLACK}{NUM} /
STR_NETWORK_DISCONNECT :{BLACK}Verbinding verbroken
STR_NETWORK_CHAT_QUERY_CAPTION :{WHITE}Voer het te versturen bericht in
STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Voer het geldbedrag dat je wilt geven in
STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Server is beveiligd. Voer wachtwoord in.
STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Bedrijf is beveiligd. Voer wachtwoord in.

View File

@ -1313,7 +1313,6 @@ STR_NETWORK_CONNECTING_DOWNLOADING :{BLACK}{NUM} /
STR_NETWORK_DISCONNECT :{BLACK}Disconnect
STR_NETWORK_CHAT_QUERY_CAPTION :{WHITE}Enter your text message to send
STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Enter the amount of money you want to give
STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Server is protected. Enter password
STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Company is protected. Enter password

View File

@ -1294,7 +1294,6 @@ STR_NETWORK_CONNECTING_DOWNLOADING :{BLACK}{NUM} /
STR_NETWORK_DISCONNECT :{BLACK}Katkesta
STR_NETWORK_CHAT_QUERY_CAPTION :{WHITE}Sõnumi kirjutamine saatmiseks teistele mängijatele
STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Teisele mängijale saadetava rahasumma sisestamine
STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Server on kaitstud. Sisesta parool
STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Ettevõte on kaitstud. Sisesta parool

View File

@ -1312,7 +1312,6 @@ STR_NETWORK_CONNECTING_DOWNLOADING :{BLACK}{NUM} /
STR_NETWORK_DISCONNECT :{BLACK}Pura yhteys
STR_NETWORK_CHAT_QUERY_CAPTION :{WHITE}Syötä lähetettävä teksti
STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Syötä annettava rahamäärä
STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Palvelin on suojattu. Anna salasana
STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Yhtiö on suojattu. Anna salasana

View File

@ -1314,7 +1314,6 @@ STR_NETWORK_CONNECTING_DOWNLOADING :{BLACK}{NUM} /
STR_NETWORK_DISCONNECT :{BLACK}Déconnecter
STR_NETWORK_CHAT_QUERY_CAPTION :{WHITE}Saisir le message à envoyer
STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Saisir le montant d'argent que vous désirez transférer
STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Le serveur est protégé. Entrez le mot de passe
STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}La compagnie est protégée. Entrez le mot de passe

View File

@ -1283,7 +1283,6 @@ STR_NETWORK_CONNECTING_DOWNLOADING :{BLACK}{NUM} /
STR_NETWORK_DISCONNECT :{BLACK}Desconectar
STR_NETWORK_CHAT_QUERY_CAPTION :{WHITE}Introduce o texto a enviar
STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Introduce a cantidade de diñeiro a dar
STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}O servidor está protexido. Introduce clave
STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}A comañía está protexida. Introduce clave

View File

@ -1314,7 +1314,6 @@ STR_NETWORK_CONNECTING_DOWNLOADING :{BLACK}{NUM} /
STR_NETWORK_DISCONNECT :{BLACK}Trennen
STR_NETWORK_CHAT_QUERY_CAPTION :{WHITE}Gib deine Nachricht ein
STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Gib an, wieviel Geld du geben möchtest
STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Server ist geschützt. Gib das Passwort ein
STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Firma ist geschützt! Passwort eingeben

View File

@ -1378,7 +1378,6 @@ STR_NETWORK_CONNECTING_DOWNLOADING :{BLACK}{NUM} /
STR_NETWORK_DISCONNECT :{BLACK}Lebontás
STR_NETWORK_CHAT_QUERY_CAPTION :{WHITE}Írd be az elküldendõ üzenetet
STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Írd be mennyi pénzt akarsz adományozni
STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}A szerver jelszóval van védve. Írd be
STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}A cég jelszóval van védve. Írd be

View File

@ -1298,7 +1298,6 @@ STR_NETWORK_CONNECTING_DOWNLOADING :{BLACK}{NUM} /
STR_NETWORK_DISCONNECT :{BLACK}Aftengjast
STR_NETWORK_CHAT_QUERY_CAPTION :{WHITE}Sláðu inn skilaboð til að senda
STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Sláðu inn upphæð fjár sem þú villt gefa
STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Þjónn er varinn. Sláðu inn lykilorð
STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Fyrirtæki er varið. Sláðu inn lykilorð

View File

@ -1313,7 +1313,6 @@ STR_NETWORK_CONNECTING_DOWNLOADING :{BLACK}{NUM} /
STR_NETWORK_DISCONNECT :{BLACK}Disconnessione
STR_NETWORK_CHAT_QUERY_CAPTION :{WHITE}Inserisci il messaggio di testo da inviare
STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Inserisci l'ammontare di denaro che vuoi donare
STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Server protetto. Inserisci la password
STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Compagnia protetta. Inserisci la password

View File

@ -1296,7 +1296,6 @@ STR_NETWORK_CONNECTING_DOWNLOADING :{BLACK}{NUM} /
STR_NETWORK_DISCONNECT :{BLACK}Koble fra
STR_NETWORK_CHAT_QUERY_CAPTION :{WHITE}Skriv inn teksten du vil sende
STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Skriv inn hvor mange penger du vil gi
STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Tjeneren er beskyttet. Skriv inn passord
STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Firmaet er beskyttet. Skriv inn passord

View File

@ -1313,7 +1313,6 @@ STR_NETWORK_CONNECTING_DOWNLOADING :{BLACK}{NUM} /
STR_NETWORK_DISCONNECT :{BLACK}Rozlaczony
STR_NETWORK_CHAT_QUERY_CAPTION :{WHITE}Wprowadz tekst do wyslania
STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Wprowadz ilosc pieniedzy jaka chcesz przekazac
STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Serwer jest chroniony. Wprowadz haslo
STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Firma jest chroniona. Wprowadz haslo

View File

@ -1298,7 +1298,6 @@ STR_NETWORK_CONNECTING_DOWNLOADING :{BLACK}{NUM} /
STR_NETWORK_DISCONNECT :{BLACK}Desligar
STR_NETWORK_CHAT_QUERY_CAPTION :{WHITE}Introduza a mensagem de texto a enviar
STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Introduza o valor do dinheiro que pretende dar
STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Servidor protegido. Introduza palavra-chave
STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Companhia protegida. Introduza palavra-chave

View File

@ -1298,7 +1298,6 @@ STR_NETWORK_CONNECTING_DOWNLOADING :{BLACK}{NUM} /
STR_NETWORK_DISCONNECT :{BLACK}Deconectare
STR_NETWORK_CHAT_QUERY_CAPTION :{WHITE}Introdu textul de trimis
STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Introdu suma de bani pe care vrei sa o cedezi
STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Server protejat. Introdu parola
STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Companie protejata. Introdu parola

View File

@ -1304,7 +1304,6 @@ STR_NETWORK_CONNECTING_DOWNLOADING :{BLACK}{NUM} /
STR_NETWORK_DISCONNECT :{BLACK}Odpojit sa
STR_NETWORK_CHAT_QUERY_CAPTION :{WHITE}Napis spravu, ktoru chces poslat
STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Napis sumu, ktoru chces poskytnut
STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Server je chraneny. Napis heslo
STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Spolocnost je chranena. Napis heslo

View File

@ -1298,7 +1298,6 @@ STR_NETWORK_CONNECTING_DOWNLOADING :{BLACK}{NUM} /
STR_NETWORK_DISCONNECT :{BLACK}Desconectado
STR_NETWORK_CHAT_QUERY_CAPTION :{WHITE}Teclee el mensaje de texto a enviar
STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Introduce la cantidad de dinero que desea dar
STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Servidor protegido. Teclee la contraseña
STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Empresa protegida. Introduce contraseña

View File

@ -1313,7 +1313,6 @@ STR_NETWORK_CONNECTING_DOWNLOADING :{BLACK}{NUM} /
STR_NETWORK_DISCONNECT :{BLACK}Frånkopplad
STR_NETWORK_CHAT_QUERY_CAPTION :{WHITE}Ange meddelandet du vill skicka
STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Ange beloppet du vill ge
STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Servern är skyddad. Ange lösenord
STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Företaget är skyddat. Ange lösenord

View File

@ -1313,7 +1313,6 @@ STR_NETWORK_CONNECTING_DOWNLOADING :{BLACK}{NUM} /
STR_NETWORK_DISCONNECT :{BLACK}Baglantiyi kes
STR_NETWORK_CHAT_QUERY_CAPTION :{WHITE}Göndereceginiz mesaji girin
STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Vereceginiz para miktarini girin
STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Sunucu korumali. Parola girin
STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Sirket korumali. Parola girin

View File

@ -1248,7 +1248,6 @@ STR_NETWORK_CONNECTING_DOWNLOADING :{BLACK}{NUM} /
STR_NETWORK_DISCONNECT :{BLACK}Atsijungti
STR_NETWORK_CHAT_QUERY_CAPTION :{WHITE}Ivesk teksta kuri nori siusti
STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Ivesk pinigu kieki kuri nori duoti
STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Serveris apsaugotas. Ivesk slaptazodi
STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Kompanija apsaugota. Ivesk slaptazodi

View File

@ -331,7 +331,7 @@ void ShowNetworkChatQueryWindow(byte desttype, byte dest)
{
_rename_id = desttype + (dest << 8);
_rename_what = 2;
ShowChatWindow(STR_EMPTY, STR_NETWORK_CHAT_QUERY_CAPTION, 150, 338, 1, 0);
ShowChatWindow();
}
void ShowNetworkGiveMoneyWindow(byte player)

View File

@ -51,7 +51,7 @@ typedef struct NetworkGameSorting {
/* Global to remember sorting after window has been closed */
static NetworkGameSorting _ng_sorting;
static char _edit_str_buf[MAX_QUERYSTR_LEN*2];
static char _edit_str_buf[MAX_QUERYSTR_LEN];
static void ShowNetworkStartServerWindow(void);
static void ShowNetworkLobbyWindow(NetworkGameList *ngl);
@ -1463,19 +1463,13 @@ void ShowJoinStatusWindowAfterJoin(void)
}
#define MAX_QUERYSTR_LEN 64
/* uses querystr_d WP macro */
static void ChatWindowWndProc(Window *w, WindowEvent *e)
{
static bool closed = false;
switch (e->event) {
case WE_CREATE:
SendWindowMessage(WC_NEWS_WINDOW, 0, WE_CREATE, w->height, 0);
SETBIT(_no_scroll, SCROLL_CHAT); // do not scroll the game with the arrow-keys
closed = false;
break;
case WE_PAINT:
@ -1488,7 +1482,7 @@ static void ChatWindowWndProc(Window *w, WindowEvent *e)
case 3: DeleteWindow(w); break; // Cancel
case 2: // Send
press_ok:;
if (strcmp(WP(w, querystr_d).text.buf, WP(w, querystr_d).text.buf + MAX_QUERYSTR_LEN) == 0) {
if (WP(w, querystr_d).text.buf[0] == '\0') {
DeleteWindow(w);
} else {
char *buf = WP(w, querystr_d).text.buf;
@ -1496,9 +1490,6 @@ press_ok:;
WindowNumber wnd_num = WP(w, querystr_d).wnd_num;
Window *parent;
// Mask the edit-box as closed, so we don't send out a CANCEL
closed = true;
DeleteWindow(w);
parent = FindWindowById(wnd_class, wnd_num);
@ -1534,15 +1525,6 @@ press_ok:;
case WE_DESTROY:
SendWindowMessage(WC_NEWS_WINDOW, 0, WE_DESTROY, 0, 0);
CLRBIT(_no_scroll, SCROLL_CHAT);
// If the window is not closed yet, it means it still needs to send a CANCEL
if (!closed) {
Window *parent = FindWindowById(WP(w,querystr_d).wnd_class, WP(w,querystr_d).wnd_num);
if (parent != NULL) {
WindowEvent e;
e.event = WE_ON_EDIT_TEXT_CANCEL;
parent->wndproc(parent, &e);
}
}
break;
}
}
@ -1563,29 +1545,23 @@ static const WindowDesc _chat_window_desc = {
ChatWindowWndProc
};
void ShowChatWindow(StringID str, StringID caption, int maxlen, int maxwidth, WindowClass window_class, WindowNumber window_number)
void ShowChatWindow(void)
{
Window *w;
#define _orig_edit_str_buf (_edit_str_buf+MAX_QUERYSTR_LEN)
DeleteWindowById(WC_SEND_NETWORK_MSG, 0);
GetString(_orig_edit_str_buf, str);
_orig_edit_str_buf[maxlen] = '\0';
memcpy(_edit_str_buf, _orig_edit_str_buf, MAX_QUERYSTR_LEN);
_edit_str_buf[0] = '\0';
w = AllocateWindowDesc(&_chat_window_desc);
w->click_state = 1 << 1;
WP(w,querystr_d).caption = caption;
WP(w,querystr_d).wnd_class = window_class;
WP(w,querystr_d).wnd_num = window_number;
WP(w,querystr_d).caption = STR_NULL;
WP(w,querystr_d).wnd_class = WC_MAIN_TOOLBAR;
WP(w,querystr_d).wnd_num = 0;
WP(w,querystr_d).text.caret = false;
WP(w,querystr_d).text.maxlength = maxlen - 1;
WP(w,querystr_d).text.maxwidth = maxwidth;
WP(w,querystr_d).text.maxlength = lengthof(_edit_str_buf);
WP(w,querystr_d).text.maxwidth = w->widget[1].right - w->widget[1].left - 2; // widget[1] is the "text box"
WP(w,querystr_d).text.buf = _edit_str_buf;
UpdateTextBufferSize(&WP(w, querystr_d).text);
}