//
-#include "precomp.h"
+#include <precomp.h>
#include "../resource.h"
#define SHELLPATH_NET_CONNECTIONS TEXT("::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\::{21EC2020-3AEA-1069-A2DD-08002B30309D}\\::{7007ACC7-3202-11D1-AAD2-00805FC1270E}")
-StartMenu::StartMenu(HWND hwnd)
- : super(hwnd)
+StartMenu::StartMenu(HWND hwnd, bool large_icons)
+ : super(hwnd),
+ _large_icons(large_icons)
{
_next_id = IDC_FIRST_MENU;
_submenu_id = 0;
#endif
}
-StartMenu::StartMenu(HWND hwnd, const StartMenuCreateInfo& create_info)
+StartMenu::StartMenu(HWND hwnd, const StartMenuCreateInfo& create_info, bool large_icons)
: super(hwnd),
- _create_info(create_info)
+ _create_info(create_info),
+ _large_icons(large_icons)
{
for(StartMenuFolders::const_iterator it=create_info._folders.begin(); it!=create_info._folders.end(); ++it)
if (*it)
Window::CREATORFUNC_INFO StartMenu::s_def_creator = STARTMENU_CREATOR(StartMenu);
-HWND StartMenu::Create(int x, int y, const StartMenuFolders& folders, HWND hwndParent, LPCTSTR title, CREATORFUNC_INFO creator, void* info, const String& filter)
+HWND StartMenu::Create(int x, int y, const StartMenuFolders& folders, HWND hwndParent, LPCTSTR title,
+ CREATORFUNC_INFO creator, void* info, const String& filter)
{
UINT style, ex_style;
int top_height;
top_height = 0;
}
+ bool large_icons = false;
RECT rect = {x, y-STARTMENU_LINE_HEIGHT-top_height, x+STARTMENU_WIDTH_MIN, y};
#ifndef _LIGHT_STARTMENU
WaitCursor wait;
#ifdef _LAZY_ICONEXTRACT
- dir.smart_scan(SORT_NAME, SCAN_FILESYSTEM); // lazy icon extraction, try to read directly from filesystem
+ dir.smart_scan(SORT_NAME, SCAN_DONT_EXTRACT_ICONS); // lazy icon extraction, try to read directly from filesystem
#else
- dir.smart_scan(SORT_NAME, SCAN_EXTRACT_ICONS|SCAN_FILESYSTEM);
+ dir.smart_scan(SORT_NAME);
#endif
}
TCHAR dir_path[MAX_PATH];
if (!ignore.empty()) {
- _tsplitpath(ignore, ignore_path, ignore_dir, ignore_name, ignore_ext);
+ _tsplitpath_s(ignore, ignore_path, COUNTOF(ignore_path), ignore_dir, COUNTOF(ignore_dir), ignore_name, COUNTOF(ignore_name), ignore_ext, COUNTOF(ignore_ext));
_tcscat(ignore_path, ignore_dir);
_tcscat(ignore_name, ignore_ext);
- dir.get_path(dir_path);
+ dir.get_path(dir_path, COUNTOF(dir_path));
if (_tcsicmp(trim_path_slash(dir_path), trim_path_slash(ignore_path)))
*ignore_name = '\0';
*ignore_name = '\0';
String lwr_filter = _create_info._filter;
-#ifndef __WINE__ ///@todo _tcslwr() for Wine
- _tcslwr((LPTSTR)lwr_filter.c_str());
-#endif
+ lwr_filter.toLower();
int cnt = 0;
for(Entry*entry=dir._down; entry; entry=entry->_next) {
String lwr_name = entry->_data.cFileName;
String lwr_disp = entry->_display_name;
-#ifndef __WINE__ ///@todo _tcslwr() for Wine
- _tcslwr((LPTSTR)lwr_name.c_str());
- _tcslwr((LPTSTR)lwr_disp.c_str());
-#endif
+ lwr_name.toLower();
+ lwr_disp.toLower();
if (!_tcsstr(lwr_name,lwr_filter) && !_tcsstr(lwr_disp,lwr_filter))
continue;
break;
case WM_MOVE: {
- POINTS& pos = MAKEPOINTS(lparam);
+ const POINTS& pos = MAKEPOINTS(lparam);
// move open submenus of floating menus
if (_submenu) {
if (_arrow_btns) {
RECT rect_up, rect_down;
- GetArrowButtonRects(&rect_up, &rect_down);
+ GetArrowButtonRects(&rect_up, &rect_down, _large_icons);
SCROLL_MODE scroll_mode = SCROLL_NOT;
int StartMenu::ButtonHitTest(POINT pt)
{
ClientRect clnt(_hwnd);
+ const bool large_icons = _large_icons;
RECT rect = {_border_left, _border_top, clnt.right, STARTMENU_LINE_HEIGHT};
if (pt.x<rect.left || pt.x>rect.right)
return;
ClientRect clnt(_hwnd);
+ const bool large_icons = _large_icons;
RECT rect = {_border_left, _border_top, clnt.right, STARTMENU_LINE_HEIGHT};
for(SMBtnVector::const_iterator it=_buttons.begin()+_scroll_pos; it!=_buttons.end(); ++it) {
{
#ifdef _LIGHT_STARTMENU
ClientRect clnt(_hwnd);
+ const bool large_icons = _large_icons;
RECT rect = {_border_left, _border_top, clnt.right, STARTMENU_LINE_HEIGHT};
for(SMBtnVector::const_iterator it=_buttons.begin()+_scroll_pos; it!=_buttons.end(); ++it) {
}
-void StartMenu::DrawArrows(HDC hdc)
+void StartMenu::DrawArrows(HDC hdc, bool large_icons)
{
- static ResIconEx arrowUpIcon(IDI_ARROW_UP, 8, 4);
- static ResIconEx arrowDownIcon(IDI_ARROW_DOWN, 8, 4);
+ int cx = large_icons? 16: 8;
+ int cy = large_icons? 8: 4;
+
+ ResIconEx arrowUpIcon(IDI_ARROW_UP, cx, cy);
+ ResIconEx arrowDownIcon(IDI_ARROW_DOWN, cx, cy);
ClientRect clnt(_hwnd);
- DrawIconEx(hdc, clnt.right/2-4, _floating_btn?3:1, arrowUpIcon, 8, 4, 0, 0, DI_NORMAL);
- DrawIconEx(hdc, clnt.right/2-4, clnt.bottom-5, arrowDownIcon, 8, 4, 0, 0, DI_NORMAL);
+ DrawIconEx(hdc, clnt.right/2-cx/2, _floating_btn?3:1, arrowUpIcon, cx, cy, 0, 0, DI_NORMAL);
+ DrawIconEx(hdc, clnt.right/2-cx/2, clnt.bottom-cy-1, arrowDownIcon, cx, cy, 0, 0, DI_NORMAL);
}
-void StartMenu::GetArrowButtonRects(LPRECT prect_up, LPRECT prect_down)
+void StartMenu::GetArrowButtonRects(LPRECT prect_up, LPRECT prect_down, bool large_icons)
{
+ int cx = large_icons? 16: 8;
+ int cy = large_icons? 8: 4;
+
GetClientRect(_hwnd, prect_up);
*prect_down = *prect_up;
-// prect_up->left = prect_up->right/2 - 4;
-// prect_up->right = prect_up->left + 8;
- prect_up->right -= 8;
- prect_up->top = _floating_btn? 3: 1;
- prect_up->bottom = prect_up->top + 4;
+// prect_up->left = prect_up->right/2 - cx/2;
+// prect_up->right = prect_up->left + cy;
+ prect_up->right -= cx;
+ prect_up->top = _floating_btn? cy-1: 1;
+ prect_up->bottom = prect_up->top + cy;
-// prect_down->left = prect_down->right/2 - 4;
-// prect_down->right = prect_down->left + 8;
- prect_down->right -= 8;
- prect_down->top = prect_down->bottom - 5;
+// prect_down->left = prect_down->right/2 - cx/2;
+// prect_down->right = prect_down->left + cy;
+ prect_down->right -= cx;
+ prect_down->top = prect_down->bottom - cy - 1;
}
#ifdef _LIGHT_STARTMENU
if (_arrow_btns)
- DrawArrows(canvas);
+ DrawArrows(canvas, _large_icons);
ClientRect clnt(_hwnd);
+ const bool large_icons = _large_icons;
RECT rect = {_border_left, _border_top, clnt.right, STARTMENU_LINE_HEIGHT};
int sep_width = rect.right-rect.left - 4;
break;
if (rect.top >= canvas.rcPaint.top)
- DrawStartMenuButton(canvas, rect, btn._title, btn, btn._id==_selected_id, false);
+ DrawStartMenuButton(canvas, rect, btn._title, btn, btn._id==_selected_id, false, _large_icons);
}
rect.top = rect.bottom;
Entry* entry = *it;
if (entry->_icon_id == ICID_UNKNOWN)
- try {
- entry->extract_icon();
- } catch(COMException&) {
- // ignore unexpected exceptions while extracting icons
- }
+ entry->_icon_id = entry->safe_extract_icon(_large_icons? ICF_LARGE: ICF_NORMAL);
if (entry->_icon_id > ICID_NONE) {
btn._icon_id = (ICON_ID)/*@@*/ entry->_icon_id;
break;
WindowCanvas canvas(_hwnd);
- DrawStartMenuButton(canvas, rect, NULL, btn, btn._id==_selected_id, false);
+ DrawStartMenuButton(canvas, rect, NULL, btn, btn._id==_selected_id, false, _large_icons);
//InvalidateRect(_hwnd, &rect, FALSE);
//UpdateWindow(_hwnd);
FontSelection font(canvas, GetStockFont(DEFAULT_GUI_FONT));
// widen window, if it is too small
- int text_width = GetStartMenuBtnTextWidth(canvas, title, _hwnd) + 16/*icon*/ + 10/*placeholder*/ + 16/*arrow*/;
+ int text_width = GetStartMenuBtnTextWidth(canvas, title, _hwnd) + ICON_SIZE_X + 10/*placeholder*/ + 16/*arrow*/;
int cx = clnt.right - _border_left;
if (text_width > cx)
ClientToScreen(_hwnd, &rect);
x = rect.right; // Submenus should overlap their parent a bit.
+ const bool large_icons = _large_icons;
y = rect.top+STARTMENU_LINE_HEIGHT +_border_top/*own border*/ -STARTMENU_TOP_BTN_SPACE/*border of new submenu*/;
} else {
WindowRect pos(_hwnd);
else {
TCHAR path[MAX_PATH];
- if (entry->get_path(path))
+ if (entry->get_path(path, COUNTOF(path)))
new_folders.push_back(path);
}
}
#ifdef _LIGHT_STARTMENU
-void DrawStartMenuButton(HDC hdc, const RECT& rect, LPCTSTR title, const SMBtnInfo& btn, bool has_focus, bool pushed)
+void DrawStartMenuButton(HDC hdc, const RECT& rect, LPCTSTR title, const SMBtnInfo& btn, bool has_focus, bool pushed, bool large_icons)
#else
void DrawStartMenuButton(HDC hdc, const RECT& rect, LPCTSTR title, HICON hIcon,
- bool hasSubmenu, bool enabled, bool has_focus, bool pushed);
+ bool hasSubmenu, bool enabled, bool has_focus, bool pushed, bool large_icons);
#endif
{
UINT style = DFCS_BUTTONPUSH;
if (!btn._enabled)
style |= DFCS_INACTIVE;
- POINT iconPos = {rect.left+2, (rect.top+rect.bottom-16)/2};
- RECT textRect = {rect.left+16+4, rect.top+2, rect.right-4, rect.bottom-4};
+ POINT iconPos = {rect.left+2, (rect.top+rect.bottom-ICON_SIZE_Y)/2};
+ RECT textRect = {rect.left+ICON_SIZE_X+4, rect.top+2, rect.right-4, rect.bottom-4};
if (pushed) {
style |= DFCS_PUSHED;
FillRect(hdc, &rect, bk_brush);
if (btn._icon_id > ICID_NONE)
- g_Globals._icon_cache.get_icon(btn._icon_id).draw(hdc, iconPos.x, iconPos.y, 16, 16, bk_color, bk_brush);
+ g_Globals._icon_cache.get_icon(btn._icon_id).draw(hdc, iconPos.x, iconPos.y, ICON_SIZE_X, ICON_SIZE_Y, bk_color, bk_brush/*, large_icons*/);
// draw submenu arrow at the right
if (btn._hasSubmenu) {
- static SmallIcon arrowIcon(IDI_ARROW);
- static SmallIcon selArrowIcon(IDI_ARROW_SELECTED);
+ ResIconEx arrowIcon(IDI_ARROW, ICON_SIZE_X, ICON_SIZE_Y);
+ ResIconEx selArrowIcon(IDI_ARROW_SELECTED, ICON_SIZE_X, ICON_SIZE_Y);
- DrawIconEx(hdc, rect.right-16, iconPos.y,
+ DrawIconEx(hdc, rect.right-ICON_SIZE_X, iconPos.y,
has_focus? selArrowIcon: arrowIcon,
- 16, 16, 0, bk_brush, DI_NORMAL);
+ ICON_SIZE_X, ICON_SIZE_Y, 0, bk_brush, DI_NORMAL);
}
if (title) {
WindowCanvas canvas(_hwnd);
FontSelection font(canvas, GetStockFont(DEFAULT_GUI_FONT));
+ const bool large_icons = _large_icons;
+
int max_width = STARTMENU_WIDTH_MIN;
int height = 0;
}
// calculate new window size
- int text_width = max_width + 16/*icon*/ + 10/*placeholder*/ + 16/*arrow*/;
+ int text_width = max_width + ICON_SIZE_X + 10/*placeholder*/ + 16/*arrow*/;
RECT rt_hgt = {rect.left, rect.bottom-_border_top-height, rect.left+_border_left+text_width, rect.bottom};
AdjustWindowRectEx(&rt_hgt, GetWindowStyle(_hwnd), FALSE, GetWindowExStyle(_hwnd));
StartMenuRoot::StartMenuRoot(HWND hwnd)
- : super(hwnd)
+ : super(hwnd, false) ///@todo big icons in start menu root
{
#ifndef __MINGW32__ // SHRestricted() missing in MinGW (as of 29.10.2003)
if (!g_Globals._SHRestricted || !SHRestricted(REST_NOCOMMONGROUPS))
try {
// insert directory "<user name>\Start Menu"
-
ShellDirectory usr_startmenu(GetDesktopFolder(), SpecialFolderPath(CSIDL_STARTMENU, _hwnd), _hwnd);
_dirs.push_back(StartMenuDirectory(usr_startmenu, (LPCTSTR)SpecialFolderFSPath(CSIDL_PROGRAMS, _hwnd)));
} catch(COMException&) {
// ignore exception and don't show additional shortcuts
}
+ ReadLogoSize();
+}
+
+void StartMenuRoot::ReadLogoSize()
+{
// read size of logo bitmap
BITMAP bmp_hdr;
- GetObject(ResBitmap(IDB_LOGOV), sizeof(BITMAP), &bmp_hdr);
+ GetObject(ResBitmap(GetLogoResId()), sizeof(BITMAP), &bmp_hdr);
_logo_size.cx = bmp_hdr.bmWidth;
_logo_size.cy = bmp_hdr.bmHeight;
+ // cache logo width
_border_left = _logo_size.cx + 1;
}
-static void CalculateStartPos(HWND hwndOwner, RECT& rect)
+static void CalculateStartPos(HWND hwndOwner, RECT& rect, bool large_icons)
{
WindowRect pos(hwndOwner);
AdjustWindowRectEx(&rect, WS_POPUP|WS_THICKFRAME|WS_CLIPCHILDREN|WS_VISIBLE, FALSE, 0);
}
-HWND StartMenuRoot::Create(HWND hwndOwner)
+HWND StartMenuRoot::Create(HWND hwndOwner, bool large_icons)
{
RECT rect;
- CalculateStartPos(hwndOwner, rect);
+ CalculateStartPos(hwndOwner, rect, large_icons);
return Window::Create(WINDOW_CREATOR(StartMenuRoot), 0, GetWndClasss(), TITLE_STARTMENU,
WS_POPUP|WS_THICKFRAME|WS_CLIPCHILDREN,
// recalculate start menu root position
RECT rect;
- CalculateStartPos(GetParent(hwnd), rect);
+ CalculateStartPos(GetParent(hwnd), rect, _large_icons);
SetWindowPos(hwnd, 0, rect.left, rect.top, rect.right-rect.left, rect.bottom-rect.top, 0);
ShowWindow(hwnd, SW_SHOW);
SetForegroundWindow(hwnd);
- while(IsWindow(hwnd)) {
+ while(IsWindow(hwnd) && IsWindowVisible(hwnd)) {
if (!GetMessage(&msg, 0, 0, 0)) {
PostQuitMessage(msg.wParam);
break;
}
- // Check for a mouse click on any window, which is not part of the start menu
+ // Check for a mouse click on any window, that is not part of the start menu
if (msg.message==WM_LBUTTONDOWN || msg.message==WM_MBUTTONDOWN || msg.message==WM_RBUTTONDOWN) {
StartMenu* menu_wnd = NULL;
#else
if (IS_VALUE_ZERO(hkey, _T("NoRecentDocsMenu")))
#endif
- AddButton(ResString(IDS_RECENT), ICID_DOCUMENTS, true, IDC_RECENT);
+ AddButton(ResString(IDS_RECENT), ICID_RECENT, true, IDC_RECENT);
AddButton(ResString(IDS_FAVORITES), ICID_FAVORITES, true, IDC_FAVORITES);
#else
if (IS_VALUE_ZERO(hkey, _T("NoClose")))
#endif
- AddButton(ResString(IDS_SHUTDOWN), ICID_LOGOFF, false, IDC_SHUTDOWN);
+ AddButton(ResString(IDS_SHUTDOWN), ICID_SHUTDOWN, false, IDC_SHUTDOWN);
+#ifndef _ROS_
AddButton(ResString(IDS_TERMINATE), ICID_LOGOFF, false, IDC_TERMINATE);
+#endif
#ifdef __MINGW32__
Paint(canvas);
break;}
+ case WM_DISPLAYCHANGE:
+ // re-evaluate logo size using the correct color depth
+ ReadLogoSize();
+ break;
+
default:
return super::WndProc(nmsg, wparam, lparam);
}
void StartMenuRoot::Paint(PaintCanvas& canvas)
{
- int clr_bits;
- {WindowCanvas dc(_hwnd); clr_bits=GetDeviceCaps(dc, BITSPIXEL);}
-
MemCanvas mem_dc;
- ResBitmap bmp(clr_bits<=8? clr_bits<=4? IDB_LOGOV16: IDB_LOGOV256: IDB_LOGOV);
+ ResBitmap bmp(GetLogoResId());
BitmapSelection sel(mem_dc, bmp);
ClientRect clnt(_hwnd);
int h = min(_logo_size.cy, clnt.bottom);
- RECT rect = {0, clnt.bottom-h, _logo_size.cx, clnt.bottom};
+ RECT rect = {0, 0, _logo_size.cx, clnt.bottom-h};
HBRUSH hbr = CreateSolidBrush(GetPixel(mem_dc, 0, 0));
FillRect(canvas, &rect, hbr);
DeleteObject(hbr);
PatBlt(canvas, _logo_size.cx, 0, 1, clnt.bottom, WHITENESS);
- BitBlt(canvas, 0, clnt.bottom, _logo_size.cx, h, mem_dc, 0, clnt.bottom-h, SRCCOPY);
+ BitBlt(canvas, 0, clnt.bottom-h, _logo_size.cx, h, mem_dc, 0, ( h<_logo_size.cy ? _logo_size.cy-h : 0) , SRCCOPY);
super::Paint(canvas);
}
+UINT StartMenuRoot::GetLogoResId()
+{
+ WindowCanvas dc(_hwnd);
+
+ int clr_bits = GetDeviceCaps(dc, BITSPIXEL);
+
+ if (clr_bits > 8)
+ return IDB_LOGOV;
+ else if (clr_bits > 4)
+ return IDB_LOGOV256;
+ else
+ return IDB_LOGOV16;
+}
+
void StartMenuRoot::CloseStartMenu(int id)
{
ShowLogoffDialog(g_Globals._hwndDesktopBar);
break;
+#ifndef _ROS_
case IDC_TERMINATE:
DestroyWindow(GetParent(_hwnd));
break;
+#endif
case IDC_SHUTDOWN:
CloseStartMenu(id);
#endif
break;}
+#if 0 ///@todo use printer start menu folder per default and allow opening "printers" cabinet window using the context menu
case IDC_PRINTERS_MENU:
CreateSubmenu(id, CSIDL_PRINTERS, CSIDL_PRINTHOOD, ResString(IDS_PRINTERS));
/* StartMenuFolders new_folders;
CreateSubmenu(id, new_folders, ResString(IDS_PRINTERS));*/
break;
+#endif
case IDC_ADMIN:
#ifndef ROSSHELL
// browse menu
case IDC_NETWORK:
-#ifdef _ROS_ // to be removed when network will be implemented
+#ifdef _ROS_ ///@todo to be removed when network browsing will be implemented in shell namespace
MessageBox(0, TEXT("network not yet implemented"), ResString(IDS_TITLE), MB_OK);
#else
CreateSubmenu(id, CSIDL_NETWORK, ResString(IDS_NETWORK));
void StartMenuHandler::ShowSearchDialog()
{
+#ifndef _ROS_ ///@todo to be removed when SHFindFiles() will be implemented in shell32.dll
static DynamicFct<SHFINDFILES> SHFindFiles(TEXT("SHELL32"), 90);
if (SHFindFiles)
(*SHFindFiles)(NULL, NULL);
else
+#endif
MessageBox(0, TEXT("SHFindFiles() not yet implemented in SHELL32"), ResString(IDS_TITLE), MB_OK);
}
void StartMenuHandler::ShowSearchComputer()
{
+#ifndef _ROS_ ///@todo to be removed when SHFindComputer() will be implemented in shell32.dll
static DynamicFct<SHFINDCOMPUTER> SHFindComputer(TEXT("SHELL32"), 91);
if (SHFindComputer)
(*SHFindComputer)(NULL, NULL);
else
+#endif
MessageBox(0, TEXT("SHFindComputer() not yet implemented in SHELL32"), ResString(IDS_TITLE), MB_OK);
}
super::AddEntries();
#if defined(ROSSHELL) || defined(_ROS_) // _ROS_ to be removed when printer/network will be implemented
- AddButton(ResString(IDS_PRINTERS), ICID_PRINTER, false, IDC_PRINTERS_MENU);
+//TODO AddButton(ResString(IDS_PRINTERS), ICID_PRINTER, false, IDC_PRINTERS_MENU);
AddButton(ResString(IDS_CONNECTIONS), ICID_NETWORK, false, IDC_CONNECTIONS);
#else
- AddButton(ResString(IDS_PRINTERS), ICID_PRINTER, true, IDC_PRINTERS_MENU);
- AddButton(ResString(IDS_CONNECTIONS), ICID_NETWORK, true, IDC_CONNECTIONS);
+//TODO AddButton(ResString(IDS_PRINTERS), ICID_PRINTER, true, IDC_PRINTERS_MENU);
+ AddButton(ResString(IDS_CONNECTIONS), ICID_NETCONNS, false, IDC_CONNECTIONS);
#endif
- AddButton(ResString(IDS_ADMIN), ICID_CONFIG, true, IDC_ADMIN);
+ AddButton(ResString(IDS_ADMIN), ICID_ADMINISTRATION, true, IDC_ADMIN);
#ifndef __MINGW32__ // SHRestricted() missing in MinGW (as of 29.10.2003)
if (!g_Globals._SHRestricted || !SHRestricted(REST_NOCONTROLPANEL))
#endif
- AddButton(ResString(IDS_SETTINGS_MENU), ICID_CONFIG, true, IDC_SETTINGS_MENU);
+ AddButton(ResString(IDS_SETTINGS_MENU), ICID_CONFIG, true, IDC_SETTINGS_MENU);
- AddButton(ResString(IDS_DESKTOPBAR_SETTINGS), ICID_CONFIG, false, ID_DESKTOPBAR_SETTINGS);
+ AddButton(ResString(IDS_DESKTOPBAR_SETTINGS), ICID_DESKSETTING, false, ID_DESKTOPBAR_SETTINGS);
AddButton(ResString(IDS_PRINTERS), ICID_PRINTER, false, IDC_PRINTERS);
#ifndef __MINGW32__ // SHRestricted() missing in MinGW (as of 29.10.2003)
if (!g_Globals._SHRestricted || !SHRestricted(REST_NOCONTROLPANEL))
#endif
- AddButton(ResString(IDS_CONTROL_PANEL), ICID_CONFIG, false, IDC_CONTROL_PANEL);
+ AddButton(ResString(IDS_CONTROL_PANEL), ICID_CONTROLPAN, false, IDC_CONTROL_PANEL);
}
void BrowseMenu::AddEntries()
WaitCursor wait;
#ifdef _LAZY_ICONEXTRACT
- dir.smart_scan(SORT_NAME, SCAN_FILESYSTEM);
+ dir.smart_scan(SORT_NAME, SCAN_DONT_EXTRACT_ICONS);
#else
- dir.smart_scan(SORT_NAME, SCAN_EXTRACT_ICONS|SCAN_FILESYSTEM);
+ dir.smart_scan(SORT_NAME);
#endif
}
super::AddEntries();
String lwr_filter = _create_info._filter;
-#ifndef __WINE__ ///@todo _tcslwr() for Wine
- _tcslwr((LPTSTR)lwr_filter.c_str());
-#endif
+ lwr_filter.toLower();
for(BookmarkList::iterator it=_bookmarks.begin(); it!=_bookmarks.end(); ++it) {
BookmarkNode& node = *it;
String lwr_desc = bookmark._description;
String lwr_url = bookmark._url;
-#ifndef __WINE__ ///@todo _tcslwr() for Wine
- _tcslwr((LPTSTR)lwr_name.c_str());
- _tcslwr((LPTSTR)lwr_desc.c_str());
- _tcslwr((LPTSTR)lwr_url.c_str());
-#endif
+ lwr_name.toLower();
+ lwr_desc.toLower();
+ lwr_url.toLower();
if (!_tcsstr(lwr_name,lwr_filter) && !_tcsstr(lwr_desc,lwr_filter) && !_tcsstr(lwr_url,lwr_filter))
continue;