/*
- * Copyright 2003 Martin Fuchs
+ * Copyright 2003, 2004, 2005 Martin Fuchs
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
//
-#include "../utility/utility.h"
+#include <precomp.h>
-#include "../explorer.h"
-#include "../globals.h"
-#include "../externals.h"
-#include "../explorer_intres.h"
+#include "../resource.h"
#include "quicklaunch.h"
ClientRect clnt(hwndParent);
HWND hwnd = CreateToolbarEx(hwndParent,
- WS_CHILD|WS_VISIBLE|CCS_NODIVIDER|CCS_NORESIZE|
+ WS_CHILD|WS_VISIBLE|WS_CLIPSIBLINGS|WS_CLIPCHILDREN|
+ CCS_TOP|CCS_NODIVIDER|CCS_NOPARENTALIGN|CCS_NORESIZE|
TBSTYLE_TOOLTIPS|TBSTYLE_WRAPABLE|TBSTYLE_FLAT,
IDW_QUICKLAUNCHBAR, 0, 0, 0, NULL, 0, 0, 0, 16, 16, sizeof(TBBUTTON));
RecursiveCreateDirectory(path);
_dir = new ShellDirectory(GetDesktopFolder(), path, _hwnd);
- _dir->smart_scan(SCAN_EXTRACT_ICONS|SCAN_FILESYSTEM);
+ _dir->smart_scan(SORT_NAME, /*SCAN_EXTRACT_ICONS|*/SCAN_FILESYSTEM);
+
+ // immediatelly extract the shortcut icons
+ for(Entry*entry=_dir->_down; entry; entry=entry->_next)
+ entry->_icon_id = entry->safe_extract_icon(ICF_NORMAL);
} catch(COMException&) {
return;
}
COLORREF bk_color = GetSysColor(COLOR_BTNFACE);
HBRUSH bk_brush = GetSysColorBrush(COLOR_BTNFACE);
- AddButton(ID_MINIMIZE_ALL, g_Globals._icon_cache.get_icon(ICID_LOGOFF/*@@*/).create_bitmap(bk_color, bk_brush, canvas), ResString(IDS_MINIMIZE_ALL), NULL);
+ AddButton(ID_MINIMIZE_ALL, g_Globals._icon_cache.get_icon(ICID_MINIMIZE/*@@*/).create_bitmap(bk_color, bk_brush, canvas), ResString(IDS_MINIMIZE_ALL), NULL);
AddButton(ID_EXPLORE, g_Globals._icon_cache.get_icon(ICID_EXPLORER).create_bitmap(bk_color, bk_brush, canvas), ResString(IDS_TITLE), NULL);
TBBUTTON sep = {0, -1, TBSTATE_ENABLED, BTNS_SEP, {0, 0}, 0, 0};
int cy = HIWORD(size);
RECT rect = {0, 0, cx, cy};
RECT textRect = {0, 0, cx-7, cy-7};
+
for(int i=0; i<DESKTOP_COUNT; ++i) {
HBITMAP hbmp = CreateCompatibleBitmap(canvas, cx, cy);
HBITMAP hbmp_old = SelectBitmap(hdc, hbmp);
UpdateDesktopButtons(wparam);
break;
- default:
+ case WM_CONTEXTMENU: {
+ TBBUTTON btn;
+ QuickLaunchMap::iterator it;
+ Point screen_pt(lparam), clnt_pt=screen_pt;
+ ScreenToClient(_hwnd, &clnt_pt);
+
+ Entry* entry = NULL;
+ int idx = SendMessage(_hwnd, TB_HITTEST, 0, (LPARAM)&clnt_pt);
+
+ if (idx>=0 &&
+ SendMessage(_hwnd, TB_GETBUTTON, idx, (LPARAM)&btn)!=-1 &&
+ (it=_entries.find(btn.idCommand))!=_entries.end()) {
+ entry = it->second._entry;
+ }
+
+ if (entry) // entry is NULL for desktop switch buttons
+ CHECKERROR(entry->do_context_menu(_hwnd, screen_pt, _cm_ifs));
+ else
+ goto def;
+ break;}
+
+ default: def:
return super::WndProc(nmsg, wparam, lparam);
}
}
}
- return 1;
+ return 0; // Don't return 1 to avoid recursion with DesktopBar::Command()
}
int QuickLaunchBar::Notify(int id, NMHDR* pnmh)
NMTTDISPINFO* ttdi = (NMTTDISPINFO*) pnmh;
int id = ttdi->hdr.idFrom;
- ttdi->lpszText = (LPTSTR)_entries[id]._title.c_str();
+ ttdi->lpszText = _entries[id]._title.str();
#ifdef TTF_DI_SETITEM
ttdi->uFlags |= TTF_DI_SETITEM;
#endif
+
+ // enable multiline tooltips (break at CR/LF and for very long one-line strings)
+ SendMessage(pnmh->hwndFrom, TTM_SETMAXTIPWIDTH, 0, 400);
+
break;}
return super::Notify(id, pnmh);