From 929cf4f6f089cc4db4eea16898402120fc812e30 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Sun, 8 Jul 2012 18:45:11 +0000 Subject: default buttons from Clist Nicer+ & Modern git-svn-id: http://svn.miranda-ng.org/main/trunk@859 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/TopToolBar/toolbar.cpp | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) (limited to 'plugins/TopToolBar/toolbar.cpp') diff --git a/plugins/TopToolBar/toolbar.cpp b/plugins/TopToolBar/toolbar.cpp index 44d2e537b5..6d41d19aff 100644 --- a/plugins/TopToolBar/toolbar.cpp +++ b/plugins/TopToolBar/toolbar.cpp @@ -1,6 +1,8 @@ #include "common.h" +#define OLD_TBBUTTON_SIZE (offsetof(TTBButton, pszTooltipUp)) + pfnCustomProc g_CustomProc = NULL; LPARAM g_CustomProcParam = 0; @@ -14,6 +16,8 @@ int BUTTGAP; int nextButtonId = 200; +static HANDLE hTTBModuleLoaded, hTTBInitButtons; + //------------ options ------------- COLORREF bkColour; HBITMAP hBmpBackground, hBmpSeparator; @@ -281,6 +285,11 @@ TopButtonInt* CreateButton(TTBButton* but) sprintf(buf, "%s_dn", b->name); b->hIconDn = LoadIconFromLibrary(buf, b->hIconDn, b->hIconHandleDn); } + + if (but->cbSize > OLD_TBBUTTON_SIZE) { + b->szTooltipUp = but->pszTooltipUp; + b->szTooltipDn = but->pszTooltipDn; + } } return b; } @@ -301,7 +310,10 @@ INT_PTR TTBAddButton(WPARAM wParam, LPARAM lParam) mir_cslock lck(csButtonsHook); TTBButton *but = (TTBButton*)wParam; - if (but->cbSize != sizeof(TTBButton) || (!(but->dwFlags && TTBBF_ISLBUTTON) && nameexists(but->name))) + if (but->cbSize != sizeof(TTBButton) && but->cbSize != OLD_TBBUTTON_SIZE) + return -1; + + if ( !(but->dwFlags && TTBBF_ISLBUTTON) && nameexists(but->name)) return -1; b = CreateButton(but); @@ -754,11 +766,15 @@ static INT_PTR OnEventFire(WPARAM wParam, LPARAM lParam) { CallService(MS_SYSTEM_REMOVEWAIT, wParam, 0); StopArrange = FALSE; - NotifyEventHooks(hHookTTBModuleLoaded, 0, 0); + NotifyEventHooks(hTTBInitButtons, 0, 0); + NotifyEventHooks(hTTBModuleLoaded, 0, 0); if (g_CustomProc) { mir_cslock lck(csButtonsHook); + if (hwndTopToolBar) + g_CustomProc(TTB_WINDOW_HANDLE, hwndTopToolBar, g_CustomProcParam); + for (int i=0; i < Buttons.getCount(); i++) { TopButtonInt* p = Buttons[i]; g_CustomProc((HANDLE)p->id, p->hwnd, g_CustomProcParam); @@ -800,7 +816,6 @@ int OnModulesLoad(WPARAM wParam, LPARAM lParam) hwndContactList = (HWND)CallService(MS_CLUI_GETHWND, 0, 0); hFrameTopWindow = addTopToolBarWindow(hwndContactList); - LoadInternalButtons(( HWND )CallService(MS_CLUI_GETHWNDTREE, 0, 0)); LoadAllSeparators(); LoadAllLButs(); @@ -834,7 +849,11 @@ int LoadToolbarModule() HookEvent(ME_SKIN2_ICONSCHANGED, OnIconChange); HookEvent(ME_OPT_INITIALISE, TTBOptInit); - CreateServiceFunction(MS_TTB_ADDBUTTON, TTBAddButton); + hTTBModuleLoaded = CreateHookableEvent(ME_TTB_MODULELOADED); + hTTBInitButtons = CreateHookableEvent(ME_TTB_INITBUTTONS); + SetHookDefaultForHookableEvent(hTTBInitButtons, InitInternalButtons); + + CreateServiceFunction("TopToolBar/AddButton", TTBAddButton); CreateServiceFunction(MS_TTB_REMOVEBUTTON, TTBRemoveButton); CreateServiceFunction(MS_TTB_SETBUTTONSTATE, TTBSetState); @@ -858,6 +877,9 @@ int LoadToolbarModule() int UnloadToolbarModule() { + DestroyHookableEvent(hTTBModuleLoaded); + DestroyHookableEvent(hTTBInitButtons); + DeleteObject(hBmpSeparator); DeleteCriticalSection(&csButtonsHook); -- cgit v1.2.3