diff --git a/example.c b/example.c index ac125a7..fb8a0e3 100644 --- a/example.c +++ b/example.c @@ -1,5 +1,5 @@ -#include #include +#include #include "tray.h" diff --git a/tray.h b/tray.h index 6fbbfd5..d5f0b53 100644 --- a/tray.h +++ b/tray.h @@ -146,8 +146,8 @@ static void tray_update(struct tray *tray) { static void tray_exit() { [NSApp terminate:NSApp]; } #elif defined(TRAY_WINAPI) -#include #include +#include #define WM_TRAY_CALLBACK_MESSAGE (WM_USER + 1) #define WC_TRAY_CLASS_NAME "TRAY" @@ -158,47 +158,47 @@ static NOTIFYICONDATA nid; static HWND hwnd; static HMENU hmenu; -static LRESULT CALLBACK _tray_wnd_proc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) { +static LRESULT CALLBACK _tray_wnd_proc(HWND hwnd, UINT msg, WPARAM wparam, + LPARAM lparam) { switch (msg) { - case WM_CLOSE: - DestroyWindow(hwnd); + case WM_CLOSE: + DestroyWindow(hwnd); + return 0; + case WM_DESTROY: + PostQuitMessage(0); + return 0; + case WM_TRAY_CALLBACK_MESSAGE: + if (lparam == WM_LBUTTONUP || lparam == WM_RBUTTONUP) { + POINT p; + GetCursorPos(&p); + WORD cmd = TrackPopupMenu(hmenu, TPM_LEFTALIGN | TPM_RIGHTBUTTON | + TPM_RETURNCMD | TPM_NONOTIFY, + p.x, p.y, 0, hwnd, NULL); + SendMessage(hwnd, WM_COMMAND, cmd, 0); return 0; - case WM_DESTROY: - PostQuitMessage(0); + } + break; + case WM_COMMAND: + if (wparam >= ID_TRAY_FIRST) { + MENUITEMINFO item = { + .cbSize = sizeof(MENUITEMINFO), .fMask = MIIM_ID | MIIM_DATA, + }; + if (GetMenuItemInfo(hmenu, wparam, FALSE, &item)) { + struct tray_menu *menu = (struct tray_menu *)item.dwItemData; + menu->cb(menu->context); + } return 0; - case WM_TRAY_CALLBACK_MESSAGE: - if (lparam == WM_LBUTTONUP || lparam == WM_RBUTTONUP) { - POINT p; - GetCursorPos(&p); - WORD cmd = TrackPopupMenu(hmenu, - TPM_LEFTALIGN | TPM_RIGHTBUTTON | TPM_RETURNCMD | TPM_NONOTIFY, - p.x, p.y, 0, hwnd, NULL); - SendMessage(hwnd, WM_COMMAND, cmd, 0); - return 0; - } - break; - case WM_COMMAND: - if (wparam >= ID_TRAY_FIRST) { - MENUITEMINFO item = { - .cbSize = sizeof(MENUITEMINFO), - .fMask = MIIM_ID | MIIM_DATA, - }; - if (GetMenuItemInfo(hmenu, wparam, FALSE, &item)) { - struct tray_menu *menu = (struct tray_menu *) item.dwItemData; - menu->cb(menu->context); - } - return 0; - } - break; + } + break; } return DefWindowProc(hwnd, msg, wparam, lparam); } static int tray_init(struct tray *tray) { memset(&wc, 0, sizeof(wc)); - wc.cbSize = sizeof(WNDCLASSEX); - wc.lpfnWndProc = _tray_wnd_proc; - wc.hInstance = GetModuleHandle(NULL); + wc.cbSize = sizeof(WNDCLASSEX); + wc.lpfnWndProc = _tray_wnd_proc; + wc.hInstance = GetModuleHandle(NULL); wc.lpszClassName = WC_TRAY_CLASS_NAME; if (!RegisterClassEx(&wc)) { return -1; @@ -211,10 +211,10 @@ static int tray_init(struct tray *tray) { UpdateWindow(hwnd); memset(&nid, 0, sizeof(nid)); - nid.cbSize = sizeof(NOTIFYICONDATA); - nid.hWnd = hwnd; - nid.uID = 0; - nid.uFlags = NIF_ICON | NIF_MESSAGE; + nid.cbSize = sizeof(NOTIFYICONDATA); + nid.hWnd = hwnd; + nid.uID = 0; + nid.uFlags = NIF_ICON | NIF_MESSAGE; nid.uCallbackMessage = WM_TRAY_CALLBACK_MESSAGE; Shell_NotifyIcon(NIM_ADD, &nid); @@ -235,14 +235,14 @@ static void tray_update(struct tray *tray) { int i = 0; hmenu = CreatePopupMenu(); for (struct tray_menu *m = tray->menu; m != NULL && m->text != NULL; m++) { - MENUITEMINFO *item = (MENUITEMINFO *) malloc(sizeof(MENUITEMINFO)); + MENUITEMINFO *item = (MENUITEMINFO *)malloc(sizeof(MENUITEMINFO)); item->cbSize = sizeof(MENUITEMINFO); item->fMask = MIIM_ID | MIIM_TYPE | MIIM_STATE | MIIM_DATA; item->fType = 0; item->fState = 0; item->wID = i + ID_TRAY_FIRST; item->dwTypeData = m->text; - item->dwItemData = (ULONG_PTR) m; + item->dwItemData = (ULONG_PTR)m; InsertMenuItem(hmenu, i, TRUE, item); i++;