summaryrefslogtreecommitdiff
path: root/plugins/TabSRMM/src/buttonsbar.cpp
diff options
context:
space:
mode:
authorGeorge Hazan <ghazan@miranda.im>2016-11-29 15:13:38 +0300
committerGeorge Hazan <ghazan@miranda.im>2016-11-29 15:13:38 +0300
commit30a6aec84f2a27a5ef5c8d438037817c2083014b (patch)
tree706cb097256ae577e32ea9b523822866600c3016 /plugins/TabSRMM/src/buttonsbar.cpp
parent2f785cafc08aa2a4b91cca2245d0895231141470 (diff)
very strange schema with two arrays of button replaced with the simpler one with one array
no need to double the code
Diffstat (limited to 'plugins/TabSRMM/src/buttonsbar.cpp')
-rw-r--r--plugins/TabSRMM/src/buttonsbar.cpp303
1 files changed, 89 insertions, 214 deletions
diff --git a/plugins/TabSRMM/src/buttonsbar.cpp b/plugins/TabSRMM/src/buttonsbar.cpp
index 41848e6e52..969977083e 100644
--- a/plugins/TabSRMM/src/buttonsbar.cpp
+++ b/plugins/TabSRMM/src/buttonsbar.cpp
@@ -35,7 +35,14 @@ struct CustomButtonData : public MZeroedObject
HANDLE hHookButtonPressedEvt;
HANDLE hHookToolBarLoadedEvt;
-static LIST<CustomButtonData> RButtonsList(1, NumericKeySortT), LButtonsList(1, NumericKeySortT);
+static int SortButtons(const CustomButtonData *p1, const CustomButtonData *p2)
+{
+ if (p1->m_bRSided != p2->m_bRSided)
+ return (p2->m_bRSided) ? -1 : 1;
+ return p1->m_dwPosition - p2->m_dwPosition;
+}
+
+static LIST<CustomButtonData> arButtonsList(1, SortButtons);
DWORD LastCID = 4000;
DWORD dwSepCount = 0;
@@ -52,7 +59,10 @@ static void wipeList(LIST<CustomButtonData> &list)
static int sstSortButtons(const void *p1, const void *p2)
{
- return (*(CustomButtonData**)p1)->m_dwPosition - (*(CustomButtonData**)p2)->m_dwPosition;
+ CustomButtonData *pb1 = *(CustomButtonData**)p1, *pb2 = *(CustomButtonData**)p2;
+ if (pb1->m_bRSided != pb2->m_bRSided)
+ return (pb2->m_bRSided) ? -1 : 1;
+ return pb1->m_dwPosition - pb2->m_dwPosition;
}
static void CB_GetButtonSettings(MCONTACT hContact, CustomButtonData *cbd)
@@ -61,7 +71,7 @@ static void CB_GetButtonSettings(MCONTACT hContact, CustomButtonData *cbd)
char SettingName[1024];
char* token = NULL;
- //modulename_buttonID, position_inIM_inCHAT_isLSide_isRSide_CanBeHidden
+ // modulename_buttonID, position_inIM_inCHAT_isLSide_isRSide_CanBeHidden
mir_snprintf(SettingName, "%s_%d", cbd->m_pszModuleName, cbd->m_dwButtonOrigID);
@@ -87,8 +97,7 @@ static void CB_HardReInit()
M.BroadcastMessage(DM_CBDESTROY, 0, 0);
{
mir_cslock lck(csToolBar);
- wipeList(LButtonsList);
- wipeList(RButtonsList);
+ wipeList(arButtonsList);
}
LastCID = 4000;
dwSepCount = 0;
@@ -129,12 +138,10 @@ static INT_PTR CB_AddButton(WPARAM, LPARAM lParam)
cbd->m_bDisabled = (bbdi->bbbFlags & BBBF_DISABLED) != 0;
cbd->m_bPushButton = (bbdi->bbbFlags & BBBF_ISPUSHBUTTON) != 0;
+ // download database settings
CB_GetButtonSettings(NULL, cbd);
- if (cbd->m_bRSided)
- RButtonsList.insert(cbd);
- else
- LButtonsList.insert(cbd);
+ arButtonsList.insert(cbd);
if (cbd->m_dwButtonCID != cbd->m_dwButtonOrigID)
LastCID++;
@@ -154,23 +161,14 @@ static INT_PTR CB_GetButtonState(WPARAM wParam, LPARAM lParam)
bool realbutton = false;
BBButton *bbdi = (BBButton *)lParam;
bbdi->bbbFlags = 0;
- for (int i = 0; i < LButtonsList.getCount(); i++) {
- CustomButtonData *cbd = LButtonsList[i];
+ for (int i = 0; i < arButtonsList.getCount(); i++) {
+ CustomButtonData *cbd = arButtonsList[i];
if (!mir_strcmp(cbd->m_pszModuleName, bbdi->pszModuleName) && (cbd->m_dwButtonOrigID == bbdi->dwButtonID)) {
realbutton = true;
tempCID = cbd->m_dwButtonCID;
}
}
if (!realbutton)
- for (int i = 0; i < RButtonsList.getCount(); i++) {
- CustomButtonData *cbd = RButtonsList[i];
- if (!mir_strcmp(cbd->m_pszModuleName, bbdi->pszModuleName) && (cbd->m_dwButtonOrigID == bbdi->dwButtonID)) {
- realbutton = true;
- tempCID = cbd->m_dwButtonCID;
- }
- }
-
- if (!realbutton)
return 1;
HWND hwndDlg = M.FindWindow(wParam);
@@ -190,23 +188,14 @@ static INT_PTR CB_SetButtonState(WPARAM wParam, LPARAM lParam)
bool realbutton = false;
DWORD tempCID = 0;
BBButton *bbdi = (BBButton *)lParam;
- for (int i = 0; i < LButtonsList.getCount(); i++) {
- CustomButtonData *cbd = LButtonsList[i];
+ for (int i = 0; i < arButtonsList.getCount(); i++) {
+ CustomButtonData *cbd = arButtonsList[i];
if (!mir_strcmp(cbd->m_pszModuleName, bbdi->pszModuleName) && (cbd->m_dwButtonOrigID == bbdi->dwButtonID)) {
realbutton = true;
tempCID = cbd->m_dwButtonCID;
}
}
if (!realbutton)
- for (int i = 0; i < RButtonsList.getCount(); i++) {
- CustomButtonData *cbd = RButtonsList[i];
- if (!mir_strcmp(cbd->m_pszModuleName, bbdi->pszModuleName) && (cbd->m_dwButtonOrigID == bbdi->dwButtonID)) {
- realbutton = true;
- tempCID = cbd->m_dwButtonCID;
- }
- }
-
- if (!realbutton)
return 1;
HWND hwndDlg = M.FindWindow(wParam);
@@ -237,21 +226,11 @@ static INT_PTR CB_RemoveButton(WPARAM, LPARAM lParam)
{
mir_cslock lck(csToolBar);
- for (int i = LButtonsList.getCount() - 1; i >= 0; i--) {
- CustomButtonData *cbd = LButtonsList[i];
+ for (int i = arButtonsList.getCount() - 1; i >= 0; i--) {
+ CustomButtonData *cbd = arButtonsList[i];
if (!mir_strcmp(cbd->m_pszModuleName, bbdi->pszModuleName) && cbd->m_dwButtonOrigID == bbdi->dwButtonID) {
pFound = cbd;
- LButtonsList.remove(i);
- }
- }
-
- if (!pFound) {
- for (int i = RButtonsList.getCount() - 1; i >= 0; i--) {
- CustomButtonData *cbd = RButtonsList[i];
- if (!mir_strcmp(cbd->m_pszModuleName, bbdi->pszModuleName) && cbd->m_dwButtonOrigID == bbdi->dwButtonID) {
- pFound = cbd;
- RButtonsList.remove(i);
- }
+ arButtonsList.remove(i);
}
}
}
@@ -274,24 +253,14 @@ static INT_PTR CB_ModifyButton(WPARAM, LPARAM lParam)
{
mir_cslock lck(csToolBar);
- for (int i = 0; i < LButtonsList.getCount(); i++) {
- cbd = LButtonsList[i];
+ for (int i = 0; i < arButtonsList.getCount(); i++) {
+ cbd = arButtonsList[i];
if (!mir_strcmp(cbd->m_pszModuleName, bbdi->pszModuleName) && (cbd->m_dwButtonOrigID == bbdi->dwButtonID)) {
bFound = true;
break;
}
}
- if (!bFound) {
- for (int i = 0; i < RButtonsList.getCount(); i++) {
- cbd = RButtonsList[i];
- if (!mir_strcmp(cbd->m_pszModuleName, bbdi->pszModuleName) && (cbd->m_dwButtonOrigID == bbdi->dwButtonID)) {
- bFound = true;
- break;
- }
- }
- }
-
if (bFound) {
if (bbdi->pwszTooltip)
cbd->m_pwszTooltip = mir_wstrdup(bbdi->pwszTooltip);
@@ -398,8 +367,7 @@ static int SaveTree(HWND hToolBarTree)
tvi.hItem = hItem;
}
- qsort(LButtonsList.getArray(), LButtonsList.getCount(), sizeof(void*), sstSortButtons);
- qsort(RButtonsList.getArray(), RButtonsList.getCount(), sizeof(void*), sstSortButtons);
+ qsort(arButtonsList.getArray(), arButtonsList.getCount(), sizeof(void*), sstSortButtons);
}
db_set_dw(0, "TabSRMM_Toolbar", "SeparatorsCount", loc_sepcout);
dwSepCount = loc_sepcout;
@@ -425,55 +393,43 @@ static int BuildMenuObjectsTree(HWND hToolBarTree)
ImageList_Destroy(TreeView_GetImageList(hToolBarTree, TVSIL_NORMAL));
TreeView_SetImageList(hToolBarTree, himgl, TVSIL_NORMAL);
- if ((RButtonsList.getCount() + LButtonsList.getCount()) == 0)
+ if (arButtonsList.getCount() == 0)
return FALSE;
+ bool bPrevSide = false;
mir_cslock lck(csToolBar);
- for (int i = 0; i < LButtonsList.getCount(); i++) {
- CustomButtonData *cbd = LButtonsList[i];
- tvis.item.lParam = (LPARAM)cbd;
-
- if (cbd->m_bSeparator) {
- tvis.item.pszText = TranslateT("<Separator>");
- tvis.item.iImage = tvis.item.iSelectedImage = 0;
- }
- else {
- tvis.item.pszText = TranslateW(cbd->m_pwszTooltip);
- iImage = ImageList_AddIcon(himgl, IcoLib_GetIconByHandle(cbd->m_hIcon));
- tvis.item.iImage = tvis.item.iSelectedImage = iImage;
+ for (int i = 0; i < arButtonsList.getCount(); i++) {
+ CustomButtonData *cbd = arButtonsList[i];
+
+ if (bPrevSide != cbd->m_bRSided) {
+ bPrevSide = true;
+
+ TVINSERTSTRUCT tvis2 = {};
+ tvis.hInsertAfter = TVI_LAST;
+ tvis2.item.mask = TVIF_PARAM | TVIF_TEXT | TVIF_SELECTEDIMAGE | TVIF_IMAGE | TVIF_STATE;
+ tvis2.item.pszText = MIDDLE_SEPARATOR;
+ tvis2.item.stateMask = TVIS_BOLD;
+ tvis2.item.state = TVIS_BOLD;
+ tvis2.item.iImage = tvis.item.iSelectedImage = -1;
+ tvis.hInsertAfter = hti = TreeView_InsertItem(hToolBarTree, &tvis2);
+ TreeView_SetCheckState(hToolBarTree, hti, 1);
}
- cbd->m_opFlags = 0;
- hti = TreeView_InsertItem(hToolBarTree, &tvis);
-
- TreeView_SetCheckState(hToolBarTree, hti, (cbd->m_bIMButton || cbd->m_bChatButton));
- }
- tvis.item.lParam = 0;
- tvis.item.mask |= TVIF_STATE;
- tvis.item.pszText = MIDDLE_SEPARATOR;
- tvis.item.stateMask = TVIS_BOLD;
- tvis.item.state = TVIS_BOLD;
- tvis.item.iImage = tvis.item.iSelectedImage = -1;
- hti = TreeView_InsertItem(hToolBarTree, &tvis);
- TreeView_SetCheckState(hToolBarTree, hti, 1);
-
- for (int i = RButtonsList.getCount() - 1; i >= 0; i--) {
- CustomButtonData *cbd = RButtonsList[i];
tvis.item.lParam = (LPARAM)cbd;
if (cbd->m_bSeparator) {
tvis.item.pszText = TranslateT("<Separator>");
- tvis.item.iImage = tvis.item.iSelectedImage = -1;
+ tvis.item.iImage = tvis.item.iSelectedImage = 0;
}
else {
tvis.item.pszText = TranslateW(cbd->m_pwszTooltip);
iImage = ImageList_AddIcon(himgl, IcoLib_GetIconByHandle(cbd->m_hIcon));
tvis.item.iImage = tvis.item.iSelectedImage = iImage;
}
- tvis.item.state = 0;
cbd->m_opFlags = 0;
hti = TreeView_InsertItem(hToolBarTree, &tvis);
+
TreeView_SetCheckState(hToolBarTree, hti, (cbd->m_bIMButton || cbd->m_bChatButton));
}
@@ -603,7 +559,7 @@ INT_PTR CALLBACK DlgProcToolBar(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM l
cbd->m_pszModuleName = "Tabsrmm_sep";
cbd->m_iButtonWidth = 22;
cbd->m_opFlags = BBSF_NTBDESTRUCT;
- LButtonsList.insert(cbd);
+ arButtonsList.insert(cbd);
TVINSERTSTRUCT tvis;
tvis.hParent = NULL;
@@ -977,32 +933,18 @@ void CB_InitDefaultButtons()
void CB_ReInitCustomButtons()
{
- for (int i = 0; i < LButtonsList.getCount();) {
- CustomButtonData *cbd = LButtonsList[i];
+ for (int i = arButtonsList.getCount()-1; i >= 0; i--) {
+ CustomButtonData *cbd = arButtonsList[i];
if (cbd->m_opFlags & (BBSF_NTBSWAPED | BBSF_NTBDESTRUCT)) {
cbd->m_opFlags ^= BBSF_NTBSWAPED;
- if (!(cbd->m_opFlags & BBSF_NTBDESTRUCT))
- RButtonsList.insert(cbd);
-
- LButtonsList.remove(i);
+ if (cbd->m_opFlags & BBSF_NTBDESTRUCT)
+ arButtonsList.remove(i);
}
- else i++;
}
+ qsort(arButtonsList.getArray(), arButtonsList.getCount(), sizeof(void*), sstSortButtons);
- for (int i = 0; i < RButtonsList.getCount();) {
- CustomButtonData *cbd = RButtonsList[i];
- if (cbd->m_opFlags & (BBSF_NTBSWAPED | BBSF_NTBDESTRUCT)) {
- cbd->m_opFlags ^= BBSF_NTBSWAPED;
-
- if (!(cbd->m_opFlags & BBSF_NTBDESTRUCT))
- LButtonsList.insert(cbd);
-
- RButtonsList.remove(i);
- }
- else i++;
- }
M.BroadcastMessage(DM_BBNEEDUPDATE, 0, 0);
M.BroadcastMessage(DM_LOADBUTTONBARICONS, 0, 0);
}
@@ -1015,7 +957,6 @@ void BB_InitDlgButtons(TWindowData *dat)
if (hdlg == 0)
return;
RECT rect;
- int lwidth = 0, rwidth = 0;
RECT rcSplitter;
POINT ptSplitter;
int splitterY;
@@ -1030,16 +971,22 @@ void BB_InitDlgButtons(TWindowData *dat)
splitterY = ptSplitter.y - DPISCALEY_S(1);
HWND hwndBtn = NULL;
+ dat->bbLSideWidth = dat->bbRSideWidth = 0;
- for (int i = 0; i < RButtonsList.getCount(); i++) {
- CustomButtonData *cbd = RButtonsList[i];
+ for (int i = 0; i < arButtonsList.getCount(); i++) {
+ CustomButtonData *cbd = arButtonsList[i];
if (((dat->bType == SESSIONTYPE_IM && cbd->m_bIMButton) || (dat->bType == SESSIONTYPE_CHAT && cbd->m_bChatButton))) {
- if (!cbd->m_bHidden)
- rwidth += cbd->m_iButtonWidth + gap;
+ if (!cbd->m_bHidden) {
+ if (cbd->m_bRSided)
+ dat->bbRSideWidth += cbd->m_iButtonWidth + gap;
+ else
+ dat->bbLSideWidth += cbd->m_iButtonWidth + gap;
+ }
if (!cbd->m_bHidden && !cbd->m_bCanBeHidden)
dat->iButtonBarReallyNeeds += cbd->m_iButtonWidth + gap;
if (!cbd->m_bSeparator && !GetDlgItem(hdlg, cbd->m_dwButtonCID)) {
- hwndBtn = CreateWindowEx(0, L"MButtonClass", L"", WS_CHILD | WS_VISIBLE | WS_TABSTOP, rect.right - rwidth + gap, splitterY, cbd->m_iButtonWidth, DPISCALEY_S(22), hdlg, (HMENU)cbd->m_dwButtonCID, g_hInst, NULL);
+ int x = cbd->m_bRSided ? rect.right - dat->bbRSideWidth + gap : 2 + dat->bbLSideWidth;
+ hwndBtn = CreateWindowEx(0, L"MButtonClass", L"", WS_CHILD | WS_VISIBLE | WS_TABSTOP, x, splitterY, cbd->m_iButtonWidth, DPISCALEY_S(22), hdlg, (HMENU)cbd->m_dwButtonCID, g_hInst, NULL);
CustomizeButton(hwndBtn);
}
if (!cbd->m_bSeparator && hwndBtn)
@@ -1054,48 +1001,12 @@ void BB_InitDlgButtons(TWindowData *dat)
ShowWindow(hwndBtn, SW_HIDE);
}
-
- hwndBtn = NULL;
-
- for (int i = 0; i < LButtonsList.getCount(); i++) {
- CustomButtonData *cbd = LButtonsList[i];
- if (((dat->bType == SESSIONTYPE_IM && cbd->m_bIMButton) || (dat->bType == SESSIONTYPE_CHAT && cbd->m_bChatButton))) {
- if (!cbd->m_bSeparator && !GetDlgItem(hdlg, cbd->m_dwButtonCID)) {
- hwndBtn = CreateWindowEx(0, L"MButtonClass", L"", WS_CHILD | WS_VISIBLE | WS_TABSTOP, 2 + lwidth, splitterY,
- cbd->m_iButtonWidth, DPISCALEY_S(22), hdlg, (HMENU)cbd->m_dwButtonCID, g_hInst, NULL);
- CustomizeButton(hwndBtn);
- }
- if (!cbd->m_bHidden)
- lwidth += cbd->m_iButtonWidth + gap;
- if (!cbd->m_bHidden && !cbd->m_bCanBeHidden)
- dat->iButtonBarReallyNeeds += cbd->m_iButtonWidth + gap;
- if (!cbd->m_bSeparator && hwndBtn)
- cbd->Accustom(hwndBtn, dat);
- }
- else if (GetDlgItem(hdlg, cbd->m_dwButtonCID))
- DestroyWindow(GetDlgItem(hdlg, cbd->m_dwButtonCID));
-
- if (cbd->m_bDisabled)
- EnableWindow(hwndBtn, 0);
- if (cbd->m_bHidden)
- ShowWindow(hwndBtn, SW_HIDE);
- }
-
- dat->bbLSideWidth = lwidth;
- dat->bbRSideWidth = rwidth;
}
void BB_RedrawButtons(TWindowData *dat)
{
- for (int i = 0; i < LButtonsList.getCount(); i++) {
- CustomButtonData *cbd = LButtonsList[i];
- HWND hwnd = GetDlgItem(dat->hwnd, cbd->m_dwButtonCID);
- if (hwnd)
- InvalidateRect(hwnd, 0, TRUE);
- }
-
- for (int i = 0; i < RButtonsList.getCount(); i++) {
- CustomButtonData *cbd = RButtonsList[i];
+ for (int i = 0; i < arButtonsList.getCount(); i++) {
+ CustomButtonData *cbd = arButtonsList[i];
HWND hwnd = GetDlgItem(dat->hwnd, cbd->m_dwButtonCID);
if (hwnd)
InvalidateRect(hwnd, 0, TRUE);
@@ -1108,42 +1019,22 @@ void BB_RedrawButtons(TWindowData *dat)
void BB_UpdateIcons(HWND hdlg)
{
- HWND hwndBtn = NULL;
-
- for (int i = 0; i < LButtonsList.getCount(); i++) {
- CustomButtonData *cbd = LButtonsList[i];
+ for (int i = 0; i < arButtonsList.getCount(); i++) {
+ CustomButtonData *cbd = arButtonsList[i];
if (cbd) {
- if (!cbd->m_bSeparator)
- hwndBtn = GetDlgItem(hdlg, cbd->m_dwButtonCID);
-
- if (hwndBtn && cbd->m_hIcon)
- SendMessage(hwndBtn, BM_SETIMAGE, IMAGE_ICON, (LPARAM)IcoLib_GetIconByHandle(cbd->m_hIcon));
- }
- }
-
- hwndBtn = NULL;
- for (int i = 0; i < RButtonsList.getCount(); i++) {
- CustomButtonData *cbd = RButtonsList[i];
- if (cbd) {
- if (!cbd->m_bSeparator)
- hwndBtn = GetDlgItem(hdlg, cbd->m_dwButtonCID);
-
- if (hwndBtn && cbd->m_hIcon)
- SendMessage(hwndBtn, BM_SETIMAGE, IMAGE_ICON, (LPARAM)IcoLib_GetIconByHandle(cbd->m_hIcon));
+ if (!cbd->m_bSeparator) {
+ HWND hwndBtn = GetDlgItem(hdlg, cbd->m_dwButtonCID);
+ if (hwndBtn && cbd->m_hIcon)
+ SendMessage(hwndBtn, BM_SETIMAGE, IMAGE_ICON, (LPARAM)IcoLib_GetIconByHandle(cbd->m_hIcon));
+ }
}
}
}
void BB_RefreshTheme(const TWindowData *dat)
{
- for (int i = 0; i < RButtonsList.getCount(); i++) {
- CustomButtonData *cbd = RButtonsList[i];
- SendDlgItemMessage(dat->hwnd, cbd->m_dwButtonCID, WM_THEMECHANGED, 0, 0);
- }
- for (int i = 0; i < LButtonsList.getCount(); i++) {
- CustomButtonData *cbd = LButtonsList[i];
- SendDlgItemMessage(dat->hwnd, cbd->m_dwButtonCID, WM_THEMECHANGED, 0, 0);
- }
+ for (int i = 0; i < arButtonsList.getCount(); i++)
+ SendDlgItemMessage(dat->hwnd, arButtonsList[i]->m_dwButtonCID, WM_THEMECHANGED, 0, 0);
}
BOOL BB_SetButtonsPos(TWindowData *dat)
@@ -1163,7 +1054,7 @@ BOOL BB_SetButtonsPos(TWindowData *dat)
HWND hwndToggleSideBar = GetDlgItem(hwnd, dat->bType == SESSIONTYPE_IM ? IDC_TOGGLESIDEBAR : IDC_CHAT_TOGGLESIDEBAR);
ShowWindow(hwndToggleSideBar, (showToolbar && dat->pContainer->SideBar->isActive()) ? SW_SHOW : SW_HIDE);
- HDWP hdwp = BeginDeferWindowPos(LButtonsList.getCount() + RButtonsList.getCount() + 1);
+ HDWP hdwp = BeginDeferWindowPos(arButtonsList.getCount() + 1);
mir_cslock lck(csToolBar);
@@ -1191,8 +1082,11 @@ BOOL BB_SetButtonsPos(TWindowData *dat)
tempL -= 10;
}
- for (i = 0; i < LButtonsList.getCount(); i++) {
- CustomButtonData *cbd = LButtonsList[i];
+ for (i = 0; i < arButtonsList.getCount(); i++) {
+ CustomButtonData *cbd = arButtonsList[i];
+ if (cbd->m_bRSided) // filter only left buttons
+ continue;
+
if (((dat->bType == SESSIONTYPE_IM) && cbd->m_bIMButton) || ((dat->bType == SESSIONTYPE_CHAT) && cbd->m_bChatButton)) {
hwndBtn = GetDlgItem(hwnd, cbd->m_dwButtonCID);
@@ -1239,8 +1133,11 @@ BOOL BB_SetButtonsPos(TWindowData *dat)
tempR -= 12;
}
- for (i = 0; i < RButtonsList.getCount(); i++) {
- CustomButtonData *cbd = RButtonsList[i];
+ for (i = 0; i < arButtonsList.getCount(); i++) {
+ CustomButtonData *cbd = arButtonsList[i];
+ if (!cbd->m_bRSided) // filter only right buttons
+ continue;
+
if (((dat->bType == SESSIONTYPE_IM) && cbd->m_bIMButton) || ((dat->bType == SESSIONTYPE_CHAT) && cbd->m_bChatButton)) {
hwndBtn = GetDlgItem(hwnd, cbd->m_dwButtonCID);
@@ -1295,8 +1192,8 @@ void BB_CustomButtonClick(TWindowData *dat, DWORD idFrom, HWND hwndFrom, BOOL co
cbcd.pt.x = rc.left;
cbcd.pt.y = rc.bottom;
- for (int i = 0; i < LButtonsList.getCount(); i++) {
- CustomButtonData *cbd = LButtonsList[i];
+ for (int i = 0; i < arButtonsList.getCount(); i++) {
+ CustomButtonData *cbd = arButtonsList[i];
if (cbd->m_dwButtonCID == idFrom) {
cbcd.pszModule = cbd->m_pszModuleName;
cbcd.dwButtonId = cbd->m_dwButtonOrigID;
@@ -1308,20 +1205,6 @@ void BB_CustomButtonClick(TWindowData *dat, DWORD idFrom, HWND hwndFrom, BOOL co
}
}
- if (!cbcd.pszModule)
- for (int i = 0; i < RButtonsList.getCount(); i++) {
- CustomButtonData *cbd = RButtonsList[i];
- if (cbd->m_dwButtonCID == idFrom) {
- cbcd.pszModule = cbd->m_pszModuleName;
- cbcd.dwButtonId = cbd->m_dwButtonOrigID;
- }
- else if (cbd->m_dwArrowCID == idFrom) {
- bFromArrow = true;
- cbcd.pszModule = cbd->m_pszModuleName;
- cbcd.dwButtonId = cbd->m_dwButtonOrigID;
- }
- }
-
cbcd.hwndFrom = dat->hwnd;
cbcd.hContact = dat->hContact;
cbcd.flags = (code ? BBCF_RIGHTBUTTON : 0) | (GetKeyState(VK_SHIFT) & 0x8000 ? BBCF_SHIFTPRESSED : 0) | (GetKeyState(VK_CONTROL) & 0x8000 ? BBCF_CONTROLPRESSED : 0) | (bFromArrow ? BBCF_ARROWCLICKED : 0);
@@ -1331,15 +1214,8 @@ void BB_CustomButtonClick(TWindowData *dat, DWORD idFrom, HWND hwndFrom, BOOL co
void CB_DestroyAllButtons(HWND hwndDlg)
{
- for (int i = 0; i < LButtonsList.getCount(); i++) {
- CustomButtonData *cbd = LButtonsList[i];
- HWND hwndBtn = GetDlgItem(hwndDlg, cbd->m_dwButtonCID);
- if (hwndBtn)
- DestroyWindow(hwndBtn);
- }
-
- for (int i = 0; i < RButtonsList.getCount(); i++) {
- CustomButtonData *cbd = RButtonsList[i];
+ for (int i = 0; i < arButtonsList.getCount(); i++) {
+ CustomButtonData *cbd = arButtonsList[i];
HWND hwndBtn = GetDlgItem(hwndDlg, cbd->m_dwButtonCID);
if (hwndBtn)
DestroyWindow(hwndBtn);
@@ -1396,8 +1272,7 @@ void CB_InitCustomButtons()
void CB_DeInitCustomButtons()
{
- wipeList(LButtonsList);
- wipeList(RButtonsList);
+ wipeList(arButtonsList);
DestroyHookableEvent(hHookToolBarLoadedEvt);
DestroyHookableEvent(hHookButtonPressedEvt);