void hexchat_globally_back() { std::vector<int> xs; std::vector<int>::iterator xsi; hexchat_list *xl = hexchat_list_get(ph, "channels"); if(xl) { while(hexchat_list_next(ph, xl)) { xsi = std::find(xs.begin(), xs.end(), hexchat_list_int(ph, xl, "id")); if((xsi == xs.end()) && ((strlen(hexchat_list_str(ph, xl, "server")) > 0) || (strlen(hexchat_list_str(ph, xl, "channel")) > 0))) { xs.push_back(hexchat_list_int(ph, xl, "id")); hexchat_set_context(ph, (hexchat_context *)hexchat_list_str(ph, xl, "context")); hexchat_back(); } } hexchat_list_free(ph, xl); } }
LRESULT CALLBACK sdTrayProc(HWND hWnd, int msg) { switch(msg) { case ACT_EXIT: { g_bCanQuit = true; PostMessage(hWnd, WM_CLOSE, 0, 0); } break; case ACT_RESTORE: { /*************************************************/ /** user wants us to restore the HexChat window **/ /** and of autoaway is on, set as back ******** **/ /*************************************************/ SendMessage(g_hXchatWnd, WM_SYSCOMMAND, SC_RESTORE, 0); SetForegroundWindow(hWnd); if((!g_iIsActive) && (g_dwPrefs & (1<<PREF_AOM))) { hexchat_globally_back(); g_iIsActive = 1; } } break; case ACT_SETTINGS: { ShowWindow(g_hPrefDlg, SW_SHOW); } break; case ACT_AWAY: { hexchat_globally_away(g_szAway); } break; case ACT_BACK: { hexchat_globally_back(); } break; default: { if(msg > 0) { hexchat_set_context(ph, hexchat_find_server(msg-1)); if(!hexchat_get_info(ph, "away")) { hexchat_away(g_szAway); } else { hexchat_back(); } } } break; } return 1; }