From c89033bd8a4bb4505f26377d6a4deae36a505ac0 Mon Sep 17 00:00:00 2001 From: ozone10 Date: Mon, 27 May 2024 17:51:17 +0200 Subject: [PATCH] Replace bmp with ico for panels with toolbar - use correct styles for toolbar - change panel toolbar icons if dark/light mode has changed - align panel toolbar icons - add initialization ref #14959 Close #15204 --- PowerEditor/src/Notepad_plus.rc | 90 ++++++++-------- .../WinControls/FileBrowser/fileBrowser.cpp | 97 ++++++++++++------ .../src/WinControls/FileBrowser/fileBrowser.h | 3 +- .../FunctionList/functionListPanel.cpp | 77 +++++++++----- .../FunctionList/functionListPanel.h | 1 + .../src/icons/dark/panels/fb_expand_all.bmp | Bin 1334 -> 0 bytes .../src/icons/dark/panels/fb_fold_all.bmp | Bin 1334 -> 0 bytes .../dark/panels/fb_select_current_file.bmp | Bin 1334 -> 0 bytes .../icons/dark/panels/funclstPreferences.bmp | Bin 246 -> 0 bytes .../src/icons/dark/panels/funclstReload.bmp | Bin 1334 -> 0 bytes .../src/icons/dark/panels/funclstSort.bmp | Bin 1334 -> 0 bytes .../dark/panels/{ => tabbar}/asciiPanel.ico | Bin .../panels/{ => tabbar}/clipboardPanel.ico | Bin .../dark/panels/{ => tabbar}/docList.ico | Bin .../icons/dark/panels/{ => tabbar}/docMap.ico | Bin .../dark/panels/{ => tabbar}/fileBrowser.ico | Bin .../dark/panels/{ => tabbar}/functionList.ico | Bin .../dark/panels/{ => tabbar}/projectPanel.ico | Bin .../dark/panels/toolbar/fb_expand_all.ico | Bin 0 -> 523 bytes .../icons/dark/panels/toolbar/fb_fold_all.ico | Bin 0 -> 521 bytes .../panels/toolbar/fb_select_current_file.ico | Bin 0 -> 586 bytes .../panels/toolbar/funclstPreferences.ico | Bin 0 -> 356 bytes .../dark/panels/toolbar/funclstReload.ico | Bin 0 -> 434 bytes .../icons/dark/panels/toolbar/funclstSort.ico | Bin 0 -> 486 bytes .../light/panels/{ => tabbar}/asciiPanel.ico | Bin .../panels/{ => tabbar}/clipboardPanel.ico | Bin .../light/panels/{ => tabbar}/docList.ico | Bin .../light/panels/{ => tabbar}/docMap.ico | Bin .../light/panels/{ => tabbar}/fileBrowser.ico | Bin .../panels/{ => tabbar}/functionList.ico | Bin .../panels/{ => tabbar}/projectPanel.ico | Bin .../icons/standard/panels/fb_expand_all.bmp | Bin 1334 -> 0 bytes .../src/icons/standard/panels/fb_fold_all.bmp | Bin 1334 -> 0 bytes .../panels/fb_select_current_file.bmp | Bin 1334 -> 0 bytes .../standard/panels/funclstPreferences.bmp | Bin 246 -> 0 bytes .../icons/standard/panels/funclstReload.bmp | Bin 1334 -> 0 bytes .../src/icons/standard/panels/funclstSort.bmp | Bin 1334 -> 0 bytes .../standard/panels/toolbar/fb_expand_all.ico | Bin 0 -> 511 bytes .../standard/panels/toolbar/fb_fold_all.ico | Bin 0 -> 509 bytes .../panels/toolbar/fb_select_current_file.ico | Bin 0 -> 664 bytes .../panels/toolbar/funclstPreferences.ico | Bin 0 -> 350 bytes .../standard/panels/toolbar/funclstReload.ico | Bin 0 -> 419 bytes .../standard/panels/toolbar/funclstSort.ico | Bin 0 -> 455 bytes .../panels/{ => treeview}/fb_root_close.bmp | Bin .../panels/{ => treeview}/fb_root_open.bmp | Bin .../panels/{ => treeview}/funcList_leaf.bmp | Bin .../panels/{ => treeview}/funcList_node.bmp | Bin .../panels/{ => treeview}/project_file.bmp | Bin .../{ => treeview}/project_file_invalid.bmp | Bin .../{ => treeview}/project_folder_close.bmp | Bin .../{ => treeview}/project_folder_open.bmp | Bin .../panels/{ => treeview}/project_root.bmp | Bin .../{ => treeview}/project_work_space.bmp | Bin .../project_work_space_dirty.bmp | Bin 54 files changed, 163 insertions(+), 105 deletions(-) delete mode 100644 PowerEditor/src/icons/dark/panels/fb_expand_all.bmp delete mode 100644 PowerEditor/src/icons/dark/panels/fb_fold_all.bmp delete mode 100644 PowerEditor/src/icons/dark/panels/fb_select_current_file.bmp delete mode 100644 PowerEditor/src/icons/dark/panels/funclstPreferences.bmp delete mode 100644 PowerEditor/src/icons/dark/panels/funclstReload.bmp delete mode 100644 PowerEditor/src/icons/dark/panels/funclstSort.bmp rename PowerEditor/src/icons/dark/panels/{ => tabbar}/asciiPanel.ico (100%) rename PowerEditor/src/icons/dark/panels/{ => tabbar}/clipboardPanel.ico (100%) rename PowerEditor/src/icons/dark/panels/{ => tabbar}/docList.ico (100%) rename PowerEditor/src/icons/dark/panels/{ => tabbar}/docMap.ico (100%) rename PowerEditor/src/icons/dark/panels/{ => tabbar}/fileBrowser.ico (100%) rename PowerEditor/src/icons/dark/panels/{ => tabbar}/functionList.ico (100%) rename PowerEditor/src/icons/dark/panels/{ => tabbar}/projectPanel.ico (100%) create mode 100644 PowerEditor/src/icons/dark/panels/toolbar/fb_expand_all.ico create mode 100644 PowerEditor/src/icons/dark/panels/toolbar/fb_fold_all.ico create mode 100644 PowerEditor/src/icons/dark/panels/toolbar/fb_select_current_file.ico create mode 100644 PowerEditor/src/icons/dark/panels/toolbar/funclstPreferences.ico create mode 100644 PowerEditor/src/icons/dark/panels/toolbar/funclstReload.ico create mode 100644 PowerEditor/src/icons/dark/panels/toolbar/funclstSort.ico rename PowerEditor/src/icons/light/panels/{ => tabbar}/asciiPanel.ico (100%) rename PowerEditor/src/icons/light/panels/{ => tabbar}/clipboardPanel.ico (100%) rename PowerEditor/src/icons/light/panels/{ => tabbar}/docList.ico (100%) rename PowerEditor/src/icons/light/panels/{ => tabbar}/docMap.ico (100%) rename PowerEditor/src/icons/light/panels/{ => tabbar}/fileBrowser.ico (100%) rename PowerEditor/src/icons/light/panels/{ => tabbar}/functionList.ico (100%) rename PowerEditor/src/icons/light/panels/{ => tabbar}/projectPanel.ico (100%) delete mode 100644 PowerEditor/src/icons/standard/panels/fb_expand_all.bmp delete mode 100644 PowerEditor/src/icons/standard/panels/fb_fold_all.bmp delete mode 100644 PowerEditor/src/icons/standard/panels/fb_select_current_file.bmp delete mode 100644 PowerEditor/src/icons/standard/panels/funclstPreferences.bmp delete mode 100644 PowerEditor/src/icons/standard/panels/funclstReload.bmp delete mode 100644 PowerEditor/src/icons/standard/panels/funclstSort.bmp create mode 100644 PowerEditor/src/icons/standard/panels/toolbar/fb_expand_all.ico create mode 100644 PowerEditor/src/icons/standard/panels/toolbar/fb_fold_all.ico create mode 100644 PowerEditor/src/icons/standard/panels/toolbar/fb_select_current_file.ico create mode 100644 PowerEditor/src/icons/standard/panels/toolbar/funclstPreferences.ico create mode 100644 PowerEditor/src/icons/standard/panels/toolbar/funclstReload.ico create mode 100644 PowerEditor/src/icons/standard/panels/toolbar/funclstSort.ico rename PowerEditor/src/icons/standard/panels/{ => treeview}/fb_root_close.bmp (100%) rename PowerEditor/src/icons/standard/panels/{ => treeview}/fb_root_open.bmp (100%) rename PowerEditor/src/icons/standard/panels/{ => treeview}/funcList_leaf.bmp (100%) rename PowerEditor/src/icons/standard/panels/{ => treeview}/funcList_node.bmp (100%) rename PowerEditor/src/icons/standard/panels/{ => treeview}/project_file.bmp (100%) rename PowerEditor/src/icons/standard/panels/{ => treeview}/project_file_invalid.bmp (100%) rename PowerEditor/src/icons/standard/panels/{ => treeview}/project_folder_close.bmp (100%) rename PowerEditor/src/icons/standard/panels/{ => treeview}/project_folder_open.bmp (100%) rename PowerEditor/src/icons/standard/panels/{ => treeview}/project_root.bmp (100%) rename PowerEditor/src/icons/standard/panels/{ => treeview}/project_work_space.bmp (100%) rename PowerEditor/src/icons/standard/panels/{ => treeview}/project_work_space_dirty.bmp (100%) diff --git a/PowerEditor/src/Notepad_plus.rc b/PowerEditor/src/Notepad_plus.rc index 6a235307a..8af039be2 100644 --- a/PowerEditor/src/Notepad_plus.rc +++ b/PowerEditor/src/Notepad_plus.rc @@ -330,56 +330,56 @@ IDR_CLOSETAB_INACT_DM BITMAP "icons/dark/tabbar/closeTabButton_inac IDR_CLOSETAB_HOVER_DM BITMAP "icons/dark/tabbar/closeTabButton_hover.bmp" IDR_CLOSETAB_PUSH_DM BITMAP "icons/dark/tabbar/closeTabButton_push.bmp" -IDR_DOCMAP_ICO ICON "icons/standard/panels/tabbar/docMap.ico" -IDR_DOCMAP_ICO2 ICON "icons/light/panels/docMap.ico" -IDR_DOCMAP_ICO_DM ICON "icons/dark/panels/docMap.ico" -IDR_DOCLIST_ICO ICON "icons/standard/panels/tabbar/docList.ico" -IDR_DOCLIST_ICO2 ICON "icons/light/panels/docList.ico" -IDR_DOCLIST_ICO_DM ICON "icons/dark/panels/docList.ico" -IDR_FUNC_LIST_ICO ICON "icons/standard/panels/tabbar/functionList.ico" -IDR_FUNC_LIST_ICO2 ICON "icons/light/panels/functionList.ico" -IDR_FUNC_LIST_ICO_DM ICON "icons/dark/panels/functionList.ico" -IDR_PROJECTPANEL_ICO ICON "icons/standard/panels/tabbar/projectPanel.ico" -IDR_PROJECTPANEL_ICO2 ICON "icons/light/panels/projectPanel.ico" -IDR_PROJECTPANEL_ICO_DM ICON "icons/dark/panels/projectPanel.ico" -IDR_FILEBROWSER_ICO ICON "icons/standard/panels/tabbar/fileBrowser.ico" -IDR_FILEBROWSER_ICO2 ICON "icons/light/panels/fileBrowser.ico" -IDR_FILEBROWSER_ICO_DM ICON "icons/dark/panels/fileBrowser.ico" -IDR_CLIPBOARDPANEL_ICO ICON "icons/standard/panels/tabbar/clipboardPanel.ico" -IDR_CLIPBOARDPANEL_ICO2 ICON "icons/light/panels/clipboardPanel.ico" -IDR_CLIPBOARDPANEL_ICO_DM ICON "icons/dark/panels/clipboardPanel.ico" -IDR_ASCIIPANEL_ICO ICON "icons/standard/panels/tabbar/asciiPanel.ico" -IDR_ASCIIPANEL_ICO2 ICON "icons/light/panels/asciiPanel.ico" -IDR_ASCIIPANEL_ICO_DM ICON "icons/dark/panels/asciiPanel.ico" +IDR_DOCMAP_ICO ICON "icons/standard/panels/tabbar/docMap.ico" +IDR_DOCMAP_ICO2 ICON "icons/light/panels/tabbar/docMap.ico" +IDR_DOCMAP_ICO_DM ICON "icons/dark/panels/tabbar/docMap.ico" +IDR_DOCLIST_ICO ICON "icons/standard/panels/tabbar/docList.ico" +IDR_DOCLIST_ICO2 ICON "icons/light/panels/tabbar/docList.ico" +IDR_DOCLIST_ICO_DM ICON "icons/dark/panels/tabbar/docList.ico" +IDR_FUNC_LIST_ICO ICON "icons/standard/panels/tabbar/functionList.ico" +IDR_FUNC_LIST_ICO2 ICON "icons/light/panels/tabbar/functionList.ico" +IDR_FUNC_LIST_ICO_DM ICON "icons/dark/panels/tabbar/functionList.ico" +IDR_PROJECTPANEL_ICO ICON "icons/standard/panels/tabbar/projectPanel.ico" +IDR_PROJECTPANEL_ICO2 ICON "icons/light/panels/tabbar/projectPanel.ico" +IDR_PROJECTPANEL_ICO_DM ICON "icons/dark/panels/tabbar/projectPanel.ico" +IDR_FILEBROWSER_ICO ICON "icons/standard/panels/tabbar/fileBrowser.ico" +IDR_FILEBROWSER_ICO2 ICON "icons/light/panels/tabbar/fileBrowser.ico" +IDR_FILEBROWSER_ICO_DM ICON "icons/dark/panels/tabbar/fileBrowser.ico" +IDR_CLIPBOARDPANEL_ICO ICON "icons/standard/panels/tabbar/clipboardPanel.ico" +IDR_CLIPBOARDPANEL_ICO2 ICON "icons/light/panels/tabbar/clipboardPanel.ico" +IDR_CLIPBOARDPANEL_ICO_DM ICON "icons/dark/panels/tabbar/clipboardPanel.ico" +IDR_ASCIIPANEL_ICO ICON "icons/standard/panels/tabbar/asciiPanel.ico" +IDR_ASCIIPANEL_ICO2 ICON "icons/light/panels/tabbar/asciiPanel.ico" +IDR_ASCIIPANEL_ICO_DM ICON "icons/dark/panels/tabbar/asciiPanel.ico" -IDI_PROJECT_WORKSPACE BITMAP "icons/standard/panels/project_work_space.bmp" -IDI_PROJECT_WORKSPACEDIRTY BITMAP "icons/standard/panels/project_work_space_dirty.bmp" -IDI_PROJECT_PROJECT BITMAP "icons/standard/panels/project_root.bmp" -IDI_PROJECT_FOLDEROPEN BITMAP "icons/standard/panels/project_folder_open.bmp" -IDI_PROJECT_FOLDERCLOSE BITMAP "icons/standard/panels/project_folder_close.bmp" -IDI_PROJECT_FILE BITMAP "icons/standard/panels/project_file.bmp" -IDI_PROJECT_FILEINVALID BITMAP "icons/standard/panels/project_file_invalid.bmp" -IDI_FB_ROOTOPEN BITMAP "icons/standard/panels/fb_root_open.bmp" -IDI_FB_ROOTCLOSE BITMAP "icons/standard/panels/fb_root_close.bmp" +IDI_PROJECT_WORKSPACE BITMAP "icons/standard/panels/treeview/project_work_space.bmp" +IDI_PROJECT_WORKSPACEDIRTY BITMAP "icons/standard/panels/treeview/project_work_space_dirty.bmp" +IDI_PROJECT_PROJECT BITMAP "icons/standard/panels/treeview/project_root.bmp" +IDI_PROJECT_FOLDEROPEN BITMAP "icons/standard/panels/treeview/project_folder_open.bmp" +IDI_PROJECT_FOLDERCLOSE BITMAP "icons/standard/panels/treeview/project_folder_close.bmp" +IDI_PROJECT_FILE BITMAP "icons/standard/panels/treeview/project_file.bmp" +IDI_PROJECT_FILEINVALID BITMAP "icons/standard/panels/treeview/project_file_invalid.bmp" +IDI_FB_ROOTOPEN BITMAP "icons/standard/panels/treeview/fb_root_open.bmp" +IDI_FB_ROOTCLOSE BITMAP "icons/standard/panels/treeview/fb_root_close.bmp" -IDI_FB_SELECTCURRENTFILE BITMAP "icons/standard/panels/fb_select_current_file.bmp" -IDI_FB_FOLDALL BITMAP "icons/standard/panels/fb_fold_all.bmp" -IDI_FB_EXPANDALL BITMAP "icons/standard/panels/fb_expand_all.bmp" -IDI_FB_SELECTCURRENTFILE_DM BITMAP "icons/dark/panels/fb_select_current_file.bmp" -IDI_FB_FOLDALL_DM BITMAP "icons/dark/panels/fb_fold_all.bmp" -IDI_FB_EXPANDALL_DM BITMAP "icons/dark/panels/fb_expand_all.bmp" +IDI_FB_SELECTCURRENTFILE ICON "icons/standard/panels/toolbar/fb_select_current_file.ico" +IDI_FB_FOLDALL ICON "icons/standard/panels/toolbar/fb_fold_all.ico" +IDI_FB_EXPANDALL ICON "icons/standard/panels/toolbar/fb_expand_all.ico" +IDI_FB_SELECTCURRENTFILE_DM ICON "icons/dark/panels/toolbar/fb_select_current_file.ico" +IDI_FB_FOLDALL_DM ICON "icons/dark/panels/toolbar/fb_fold_all.ico" +IDI_FB_EXPANDALL_DM ICON "icons/dark/panels/toolbar/fb_expand_all.ico" -IDI_FUNCLIST_ROOT BITMAP "icons/standard/panels/project_file.bmp" -IDI_FUNCLIST_NODE BITMAP "icons/standard/panels/funcList_node.bmp" -IDI_FUNCLIST_LEAF BITMAP "icons/standard/panels/funcList_leaf.bmp" +IDI_FUNCLIST_ROOT BITMAP "icons/standard/panels/treeview/project_file.bmp" +IDI_FUNCLIST_NODE BITMAP "icons/standard/panels/treeview/funcList_node.bmp" +IDI_FUNCLIST_LEAF BITMAP "icons/standard/panels/treeview/funcList_leaf.bmp" -IDI_FUNCLIST_SORTBUTTON BITMAP "icons/standard/panels/funclstSort.bmp" -IDI_FUNCLIST_RELOADBUTTON BITMAP "icons/standard/panels/funclstReload.bmp" -IDI_FUNCLIST_PREFERENCEBUTTON BITMAP "icons/standard/panels/funclstPreferences.bmp" -IDI_FUNCLIST_SORTBUTTON_DM BITMAP "icons/dark/panels/funclstSort.bmp" -IDI_FUNCLIST_RELOADBUTTON_DM BITMAP "icons/dark/panels/funclstReload.bmp" -IDI_FUNCLIST_PREFERENCEBUTTON_DM BITMAP "icons/dark/panels/funclstPreferences.bmp" +IDI_FUNCLIST_SORTBUTTON ICON "icons/standard/panels/toolbar/funclstSort.ico" +IDI_FUNCLIST_RELOADBUTTON ICON "icons/standard/panels/toolbar/funclstReload.ico" +IDI_FUNCLIST_PREFERENCEBUTTON ICON "icons/standard/panels/toolbar/funclstPreferences.ico" +IDI_FUNCLIST_SORTBUTTON_DM ICON "icons/dark/panels/toolbar/funclstSort.ico" +IDI_FUNCLIST_RELOADBUTTON_DM ICON "icons/dark/panels/toolbar/funclstReload.ico" +IDI_FUNCLIST_PREFERENCEBUTTON_DM ICON "icons/dark/panels/toolbar/funclstPreferences.ico" IDI_GET_INFO_FROM_TOOLTIP ICON "icons/moreOnTooltip.ico" diff --git a/PowerEditor/src/WinControls/FileBrowser/fileBrowser.cpp b/PowerEditor/src/WinControls/FileBrowser/fileBrowser.cpp index bb0d01a1f..fc863b12b 100644 --- a/PowerEditor/src/WinControls/FileBrowser/fileBrowser.cpp +++ b/PowerEditor/src/WinControls/FileBrowser/fileBrowser.cpp @@ -54,6 +54,15 @@ FileBrowser::~FileBrowser() { delete cd; } + + for (auto hImgList : _iconListVector) + { + if (hImgList != nullptr) + { + ::ImageList_Destroy(hImgList); + } + } + _iconListVector.clear(); } vector split(const generic_string & string2split, TCHAR sep) @@ -96,44 +105,65 @@ intptr_t CALLBACK FileBrowser::run_dlgProc(UINT message, WPARAM wParam, LPARAM l { switch (message) { - case WM_INITDIALOG : + case WM_INITDIALOG: { NppParameters& nppParam = NppParameters::getInstance(); - int style = WS_CHILD | WS_VISIBLE | CCS_ADJUSTABLE | TBSTYLE_AUTOSIZE | TBSTYLE_FLAT | TBSTYLE_LIST | TBSTYLE_TRANSPARENT | BTNS_AUTOSIZE | BTNS_SEP | TBSTYLE_TOOLTIPS | TBSTYLE_CUSTOMERASE; + + constexpr DWORD style = WS_CHILD | WS_VISIBLE | TBSTYLE_FLAT | TBSTYLE_LIST | TBSTYLE_TRANSPARENT | TBSTYLE_TOOLTIPS | TBSTYLE_CUSTOMERASE; _hToolbarMenu = CreateWindowEx(WS_EX_LAYOUTRTL, TOOLBARCLASSNAME, NULL, style, 0, 0, 0, 0, _hSelf, nullptr, _hInst, NULL); - // Add the bmap image into toolbar's imagelist - int iconSizeDyn = nppParam._dpiManager.scaleX(16); - ::SendMessage(_hToolbarMenu, TB_SETBITMAPSIZE, 0, MAKELPARAM(iconSizeDyn, iconSizeDyn)); + const DWORD tbExStyle = static_cast(::SendMessage(_hToolbarMenu, TB_GETEXTENDEDSTYLE, 0, 0)); + ::SendMessage(_hToolbarMenu, TB_SETEXTENDEDSTYLE, 0, tbExStyle | TBSTYLE_EX_DOUBLEBUFFER); - TBADDBITMAP addbmp = { 0, 0 }; - const int nbIcons = 3; + setDpi(); + const int iconSizeDyn = _dpiManager.scale(16); + constexpr int nbIcons = 3; int iconIDs[nbIcons] = { IDI_FB_SELECTCURRENTFILE, IDI_FB_FOLDALL, IDI_FB_EXPANDALL}; int iconDarkModeIDs[nbIcons] = { IDI_FB_SELECTCURRENTFILE_DM, IDI_FB_FOLDALL_DM, IDI_FB_EXPANDALL_DM}; + + // Create an image lists for the toolbar icons + HIMAGELIST hImageList = ImageList_Create(iconSizeDyn, iconSizeDyn, ILC_COLOR32 | ILC_MASK, nbIcons, 0); + HIMAGELIST hImageListDm = ImageList_Create(iconSizeDyn, iconSizeDyn, ILC_COLOR32 | ILC_MASK, nbIcons, 0); + _iconListVector.push_back(hImageList); + _iconListVector.push_back(hImageListDm); + for (size_t i = 0; i < nbIcons; ++i) { - int icoID = NppDarkMode::isEnabled() ? iconDarkModeIDs[i] : iconIDs[i]; - HBITMAP hBmp = static_cast(::LoadImage(_hInst, MAKEINTRESOURCE(icoID), IMAGE_BITMAP, iconSizeDyn, iconSizeDyn, LR_LOADMAP3DCOLORS | LR_LOADTRANSPARENT)); - addbmp.nID = reinterpret_cast(hBmp); - ::SendMessage(_hToolbarMenu, TB_ADDBITMAP, 1, reinterpret_cast(&addbmp)); + int icoID = iconIDs[i]; + HICON hIcon = nullptr; + DPIManagerV2::loadIcon(_hInst, MAKEINTRESOURCE(icoID), iconSizeDyn, iconSizeDyn, &hIcon, LR_LOADMAP3DCOLORS | LR_LOADTRANSPARENT); + ImageList_AddIcon(_iconListVector.at(0), hIcon); + ::DestroyIcon(hIcon); + hIcon = nullptr; + + icoID = iconDarkModeIDs[i]; + DPIManagerV2::loadIcon(_hInst, MAKEINTRESOURCE(icoID), iconSizeDyn, iconSizeDyn, &hIcon, LR_LOADMAP3DCOLORS | LR_LOADTRANSPARENT); + ImageList_AddIcon(_iconListVector.at(1), hIcon); + ::DestroyIcon(hIcon); // Clean up the loaded icon } - TBBUTTON tbButtons[nbIcons]; + // Attach the image list to the toolbar + ::SendMessage(_hToolbarMenu, TB_SETIMAGELIST, 0, reinterpret_cast(_iconListVector.at(NppDarkMode::isEnabled() ? 1 : 0))); + + TBBUTTON tbButtons[nbIcons]{}; + tbButtons[0].idCommand = FB_CMD_AIMFILE; tbButtons[0].iBitmap = 0; tbButtons[0].fsState = TBSTATE_ENABLED; - tbButtons[0].fsStyle = BTNS_BUTTON | BTNS_AUTOSIZE; - tbButtons[0].iString = reinterpret_cast(TEXT("")); + tbButtons[0].fsStyle = BTNS_BUTTON; + tbButtons[0].iString = 0; + tbButtons[1].idCommand = FB_CMD_FOLDALL; tbButtons[1].iBitmap = 1; tbButtons[1].fsState = TBSTATE_ENABLED; - tbButtons[1].fsStyle = BTNS_BUTTON | BTNS_AUTOSIZE; - tbButtons[1].iString = reinterpret_cast(TEXT("")); + tbButtons[1].fsStyle = BTNS_BUTTON; + tbButtons[1].iString = 0; + tbButtons[2].idCommand = FB_CMD_EXPANDALL; tbButtons[2].iBitmap = 2; tbButtons[2].fsState = TBSTATE_ENABLED; - tbButtons[2].fsStyle = BTNS_BUTTON | BTNS_AUTOSIZE; - tbButtons[2].iString = reinterpret_cast(TEXT("")); + tbButtons[2].fsStyle = BTNS_BUTTON; + tbButtons[2].iString = 0; // tips text for toolbar buttons NativeLangSpeaker *pNativeSpeaker = nppParam.getNativeLangSpeaker(); @@ -142,12 +172,10 @@ intptr_t CALLBACK FileBrowser::run_dlgProc(UINT message, WPARAM wParam, LPARAM l _locateCurrentFile = pNativeSpeaker->getAttrNameStr(_locateCurrentFile.c_str(), FOLDERASWORKSPACE_NODE, "LocateCurrentFileTip"); ::SendMessage(_hToolbarMenu, TB_BUTTONSTRUCTSIZE, sizeof(TBBUTTON), 0); - ::SendMessage(_hToolbarMenu, TB_SETBUTTONSIZE, 0, MAKELONG(nppParam._dpiManager.scaleX(20), nppParam._dpiManager.scaleY(20))); - ::SendMessage(_hToolbarMenu, TB_SETPADDING, 0, MAKELONG(nppParam._dpiManager.scaleX(10), 0)); + ::SendMessage(_hToolbarMenu, TB_SETBUTTONSIZE, 0, MAKELONG(iconSizeDyn, iconSizeDyn)); ::SendMessage(_hToolbarMenu, TB_ADDBUTTONS, sizeof(tbButtons) / sizeof(TBBUTTON), reinterpret_cast(&tbButtons)); ::SendMessage(_hToolbarMenu, TB_AUTOSIZE, 0, 0); - ::SendMessage(_hToolbarMenu, TB_GETIMAGELIST, 0, 0); ShowWindow(_hToolbarMenu, SW_SHOW); FileBrowser::initPopupMenus(); @@ -181,6 +209,7 @@ intptr_t CALLBACK FileBrowser::run_dlgProc(UINT message, WPARAM wParam, LPARAM l if (static_cast(lParam) != TRUE) { NppDarkMode::autoThemeChildControls(_hSelf); + ::SendMessage(_hToolbarMenu, TB_SETIMAGELIST, 0, reinterpret_cast(_iconListVector.at(NppDarkMode::isEnabled() ? 1 : 0))); } NppDarkMode::setTreeViewStyle(_treeView.getHSelf()); return TRUE; @@ -208,7 +237,7 @@ intptr_t CALLBACK FileBrowser::run_dlgProc(UINT message, WPARAM wParam, LPARAM l { int width = LOWORD(lParam); int height = HIWORD(lParam); - int extraValue = NppParameters::getInstance()._dpiManager.scaleX(4); + int extraValue = _dpiManager.scale(4); RECT toolbarMenuRect; ::GetClientRect(_hToolbarMenu, &toolbarMenuRect); @@ -511,7 +540,7 @@ void FileBrowser::notified(LPNMHDR notification) else if (notification->hwndFrom == _treeView.getHSelf()) { TCHAR textBuffer[MAX_PATH] = { '\0' }; - TVITEM tvItem; + TVITEM tvItem{}; tvItem.mask = TVIF_TEXT | TVIF_PARAM; tvItem.pszText = textBuffer; tvItem.cchTextMax = MAX_PATH; @@ -676,7 +705,7 @@ void FileBrowser::notified(LPNMHDR notification) BrowserNodeType FileBrowser::getNodeType(HTREEITEM hItem) { - TVITEM tvItem; + TVITEM tvItem{}; tvItem.hItem = hItem; tvItem.mask = TVIF_IMAGE | TVIF_PARAM; SendMessage(_treeView.getHSelf(), TVM_GETITEM, 0, reinterpret_cast(&tvItem)); @@ -1038,7 +1067,7 @@ HTREEITEM FileBrowser::getRootFromFullPath(const generic_string & rootPath) cons hItemNode != nullptr && node == nullptr; hItemNode = _treeView.getNextSibling(hItemNode)) { - TVITEM tvItem; + TVITEM tvItem{}; tvItem.mask = TVIF_PARAM; tvItem.cchTextMax = MAX_PATH; tvItem.hItem = hItemNode; @@ -1057,7 +1086,7 @@ HTREEITEM FileBrowser::findChildNodeFromName(HTREEITEM parent, const generic_str hItemNode = _treeView.getNextSibling(hItemNode)) { TCHAR textBuffer[MAX_PATH] = { '\0' }; - TVITEM tvItem; + TVITEM tvItem{}; tvItem.mask = TVIF_TEXT; tvItem.pszText = textBuffer; tvItem.cchTextMax = MAX_PATH; @@ -1080,7 +1109,7 @@ vector FileBrowser::getRoots() const hItemNode != nullptr; hItemNode = _treeView.getNextSibling(hItemNode)) { - TVITEM tvItem; + TVITEM tvItem{}; tvItem.mask = TVIF_PARAM; tvItem.cchTextMax = MAX_PATH; tvItem.hItem = hItemNode; @@ -1217,7 +1246,7 @@ bool FileBrowser::addToTree(FilesToChange & group, HTREEITEM node) hItemNode = _treeView.getNextSibling(hItemNode)) { TCHAR textBuffer[MAX_PATH] = { '\0' }; - TVITEM tvItem; + TVITEM tvItem{}; tvItem.mask = TVIF_TEXT; tvItem.pszText = textBuffer; tvItem.cchTextMax = MAX_PATH; @@ -1278,7 +1307,7 @@ HTREEITEM FileBrowser::findInTree(const generic_string& rootPath, HTREEITEM node hItemNode = _treeView.getNextSibling(hItemNode)) { TCHAR textBuffer[MAX_PATH] = { '\0' }; - TVITEM tvItem; + TVITEM tvItem{}; tvItem.mask = TVIF_TEXT; tvItem.pszText = textBuffer; tvItem.cchTextMax = MAX_PATH; @@ -1319,7 +1348,7 @@ std::vector FileBrowser::findInTree(FilesToChange & group, HTREEITEM hItemNode = _treeView.getNextSibling(hItemNode)) { TCHAR textBuffer[MAX_PATH] = {'\0'}; - TVITEM tvItem; + TVITEM tvItem{}; tvItem.mask = TVIF_TEXT; tvItem.pszText = textBuffer; tvItem.cchTextMax = MAX_PATH; @@ -1346,8 +1375,8 @@ std::vector FileBrowser::findChildNodesFromNames(HTREEITEM parent, st hItemNode = _treeView.getNextSibling(hItemNode) ) { - TCHAR textBuffer[MAX_PATH]; - TVITEM tvItem; + TCHAR textBuffer[MAX_PATH]{}; + TVITEM tvItem{}; tvItem.mask = TVIF_TEXT; tvItem.pszText = textBuffer; tvItem.cchTextMax = MAX_PATH; @@ -1372,8 +1401,8 @@ void FileBrowser::removeNamesAlreadyInNode(HTREEITEM parent, std::vector _iconListVector; TreeView _treeView; HIMAGELIST _hImaLst = nullptr; @@ -207,7 +208,7 @@ protected: void removeNamesAlreadyInNode(HTREEITEM parent, std::vector & labels) const; - virtual intptr_t CALLBACK run_dlgProc(UINT message, WPARAM wParam, LPARAM lParam); + intptr_t CALLBACK run_dlgProc(UINT message, WPARAM wParam, LPARAM lParam) override; void notified(LPNMHDR notification); void showContextMenu(int x, int y); void openSelectFile(); diff --git a/PowerEditor/src/WinControls/FunctionList/functionListPanel.cpp b/PowerEditor/src/WinControls/FunctionList/functionListPanel.cpp index 35daeb19b..5c4d273bc 100644 --- a/PowerEditor/src/WinControls/FunctionList/functionListPanel.cpp +++ b/PowerEditor/src/WinControls/FunctionList/functionListPanel.cpp @@ -41,6 +41,15 @@ FunctionListPanel::~FunctionListPanel() ::DeleteObject(_hFontSearchEdit); _hFontSearchEdit = nullptr; } + + for (auto hImgList : _iconListVector) + { + if (hImgList != nullptr) + { + ::ImageList_Destroy(hImgList); + } + } + _iconListVector.clear(); } void FunctionListPanel::addEntry(const TCHAR *nodeName, const TCHAR *displayText, size_t pos) @@ -814,39 +823,56 @@ intptr_t CALLBACK FunctionListPanel::run_dlgProc(UINT message, WPARAM wParam, LP return reinterpret_cast(hBrushBackground); } - case WM_INITDIALOG : + case WM_INITDIALOG: { FunctionListPanel::initPreferencesMenu(); NppParameters& nppParams = NppParameters::getInstance(); - int editWidth = nppParams._dpiManager.scaleX(100); - int editWidthSep = nppParams._dpiManager.scaleX(105); //editWidth + 5 - int editHeight = nppParams._dpiManager.scaleY(20); + setDpi(); + const int editWidth = _dpiManager.scale(100); + const int editWidthSep = _dpiManager.scale(105); //editWidth + 5 + const int editHeight = _dpiManager.scale(20); // Create toolbar menu - int style = WS_CHILD | WS_VISIBLE | CCS_ADJUSTABLE | TBSTYLE_AUTOSIZE | TBSTYLE_FLAT | TBSTYLE_LIST | TBSTYLE_TRANSPARENT | BTNS_AUTOSIZE | BTNS_SEP | TBSTYLE_TOOLTIPS; + constexpr DWORD style = WS_CHILD | WS_VISIBLE | TBSTYLE_FLAT | TBSTYLE_LIST | TBSTYLE_TRANSPARENT | TBSTYLE_TOOLTIPS; _hToolbarMenu = CreateWindowEx(0,TOOLBARCLASSNAME,NULL, style, 0,0,0,0,_hSelf,nullptr, _hInst, NULL); + const DWORD tbExStyle = static_cast(::SendMessage(_hToolbarMenu, TB_GETEXTENDEDSTYLE, 0, 0)); + ::SendMessage(_hToolbarMenu, TB_SETEXTENDEDSTYLE, 0, tbExStyle | TBSTYLE_EX_DOUBLEBUFFER); + oldFunclstToolbarProc = reinterpret_cast(::SetWindowLongPtr(_hToolbarMenu, GWLP_WNDPROC, reinterpret_cast(funclstToolbarProc))); - // Add the bmap image into toolbar's imagelist - int iconSizeDyn = nppParams._dpiManager.scaleX(16); - ::SendMessage(_hToolbarMenu, TB_SETBITMAPSIZE, 0, MAKELPARAM(iconSizeDyn, iconSizeDyn)); - - TBADDBITMAP addbmp = { 0, 0 }; - const int nbIcons = 3; + const int iconSizeDyn = _dpiManager.scale(16); + constexpr int nbIcons = 3; int iconIDs[nbIcons] = { IDI_FUNCLIST_SORTBUTTON, IDI_FUNCLIST_RELOADBUTTON, IDI_FUNCLIST_PREFERENCEBUTTON }; int iconDarkModeIDs[nbIcons] = { IDI_FUNCLIST_SORTBUTTON_DM, IDI_FUNCLIST_RELOADBUTTON_DM, IDI_FUNCLIST_PREFERENCEBUTTON_DM }; + + // Create an image lists for the toolbar icons + HIMAGELIST hImageList = ImageList_Create(iconSizeDyn, iconSizeDyn, ILC_COLOR32 | ILC_MASK, nbIcons, 0); + HIMAGELIST hImageListDm = ImageList_Create(iconSizeDyn, iconSizeDyn, ILC_COLOR32 | ILC_MASK, nbIcons, 0); + _iconListVector.push_back(hImageList); + _iconListVector.push_back(hImageListDm); + for (size_t i = 0; i < nbIcons; ++i) { - int icoID = NppDarkMode::isEnabled() ? iconDarkModeIDs[i] : iconIDs[i]; - HBITMAP hBmp = static_cast(::LoadImage(_hInst, MAKEINTRESOURCE(icoID), IMAGE_BITMAP, iconSizeDyn, iconSizeDyn, LR_LOADMAP3DCOLORS | LR_LOADTRANSPARENT)); - addbmp.nID = reinterpret_cast(hBmp); - ::SendMessage(_hToolbarMenu, TB_ADDBITMAP, 1, reinterpret_cast(&addbmp)); + int icoID = iconIDs[i]; + HICON hIcon = nullptr; + DPIManagerV2::loadIcon(_hInst, MAKEINTRESOURCE(icoID), iconSizeDyn, iconSizeDyn, &hIcon, LR_LOADMAP3DCOLORS | LR_LOADTRANSPARENT); + ImageList_AddIcon(_iconListVector.at(0), hIcon); + ::DestroyIcon(hIcon); + hIcon = nullptr; + + icoID = iconDarkModeIDs[i]; + DPIManagerV2::loadIcon(_hInst, MAKEINTRESOURCE(icoID), iconSizeDyn, iconSizeDyn, &hIcon, LR_LOADMAP3DCOLORS | LR_LOADTRANSPARENT); + ImageList_AddIcon(_iconListVector.at(1), hIcon); + ::DestroyIcon(hIcon); // Clean up the loaded icon } + // Attach the image list to the toolbar + ::SendMessage(_hToolbarMenu, TB_SETIMAGELIST, 0, reinterpret_cast(_iconListVector.at(NppDarkMode::isEnabled() ? 1 : 0))); + // Place holder of search text field TBBUTTON tbButtons[1 + nbIcons]{}; @@ -859,23 +885,23 @@ intptr_t CALLBACK FunctionListPanel::run_dlgProc(UINT message, WPARAM wParam, LP tbButtons[1].idCommand = IDC_SORTBUTTON_FUNCLIST; tbButtons[1].iBitmap = 0; tbButtons[1].fsState = TBSTATE_ENABLED; - tbButtons[1].fsStyle = BTNS_CHECK | BTNS_AUTOSIZE; - tbButtons[1].iString = reinterpret_cast(TEXT("")); + tbButtons[1].fsStyle = BTNS_CHECK; + tbButtons[1].iString = 0; tbButtons[2].idCommand = IDC_RELOADBUTTON_FUNCLIST; tbButtons[2].iBitmap = 1; tbButtons[2].fsState = TBSTATE_ENABLED; - tbButtons[2].fsStyle = BTNS_BUTTON | BTNS_AUTOSIZE; - tbButtons[2].iString = reinterpret_cast(TEXT("")); + tbButtons[2].fsStyle = BTNS_BUTTON; + tbButtons[2].iString = 0; tbButtons[3].idCommand = IDC_PREFERENCEBUTTON_FUNCLIST; tbButtons[3].iBitmap = 2; tbButtons[3].fsState = TBSTATE_ENABLED; - tbButtons[3].fsStyle = BTNS_BUTTON | BTNS_AUTOSIZE; - tbButtons[3].iString = reinterpret_cast(TEXT("")); + tbButtons[3].fsStyle = BTNS_BUTTON; + tbButtons[3].iString = 0; ::SendMessage(_hToolbarMenu, TB_BUTTONSTRUCTSIZE, sizeof(TBBUTTON), 0); - ::SendMessage(_hToolbarMenu, TB_SETBUTTONSIZE, 0, MAKELONG(nppParams._dpiManager.scaleX(16), nppParams._dpiManager.scaleY(16))); + ::SendMessage(_hToolbarMenu, TB_SETBUTTONSIZE, 0, MAKELONG(iconSizeDyn, iconSizeDyn)); ::SendMessage(_hToolbarMenu, TB_ADDBUTTONS, sizeof(tbButtons) / sizeof(TBBUTTON), reinterpret_cast(&tbButtons)); ::SendMessage(_hToolbarMenu, TB_AUTOSIZE, 0, 0); @@ -887,7 +913,7 @@ intptr_t CALLBACK FunctionListPanel::run_dlgProc(UINT message, WPARAM wParam, LP _reloadTipStr = pNativeSpeaker->getAttrNameStr(_reloadTipStr.c_str(), FL_FUCTIONLISTROOTNODE, FL_RELOADLOCALNODENAME); _preferenceTipStr = pNativeSpeaker->getAttrNameStr(_preferenceTipStr.c_str(), FL_FUCTIONLISTROOTNODE, FL_PREFERENCESLOCALNODENAME); - _hSearchEdit = CreateWindowEx(WS_EX_CLIENTEDGE, L"Edit", NULL, + _hSearchEdit = CreateWindowEx(WS_EX_CLIENTEDGE, WC_EDIT, NULL, WS_CHILD | WS_VISIBLE | ES_AUTOVSCROLL, 2, 2, editWidth, editHeight, _hToolbarMenu, reinterpret_cast(IDC_SEARCHFIELD_FUNCLIST), _hInst, 0 ); @@ -896,7 +922,7 @@ intptr_t CALLBACK FunctionListPanel::run_dlgProc(UINT message, WPARAM wParam, LP if (_hFontSearchEdit == nullptr) { - LOGFONT lf{ DPIManagerV2::getDefaultGUIFontForDpi(_hParent) }; + LOGFONT lf{ _dpiManager.getDefaultGUIFontForDpi() }; _hFontSearchEdit = ::CreateFontIndirect(&lf); } @@ -925,6 +951,7 @@ intptr_t CALLBACK FunctionListPanel::run_dlgProc(UINT message, WPARAM wParam, LP if (static_cast(lParam) != TRUE) { NppDarkMode::autoThemeChildControls(_hSelf); + ::SendMessage(_hToolbarMenu, TB_SETIMAGELIST, 0, reinterpret_cast(_iconListVector.at(NppDarkMode::isEnabled() ? 1 : 0))); } NppDarkMode::setTreeViewStyle(_treeView.getHSelf()); return TRUE; @@ -1000,7 +1027,7 @@ intptr_t CALLBACK FunctionListPanel::run_dlgProc(UINT message, WPARAM wParam, LP { int width = LOWORD(lParam); int height = HIWORD(lParam); - int extraValue = NppParameters::getInstance()._dpiManager.scaleX(4); + int extraValue = _dpiManager.scale(4); RECT toolbarMenuRect; ::GetClientRect(_hToolbarMenu, &toolbarMenuRect); diff --git a/PowerEditor/src/WinControls/FunctionList/functionListPanel.h b/PowerEditor/src/WinControls/FunctionList/functionListPanel.h index 775526864..7722e926d 100644 --- a/PowerEditor/src/WinControls/FunctionList/functionListPanel.h +++ b/PowerEditor/src/WinControls/FunctionList/functionListPanel.h @@ -111,6 +111,7 @@ private: HWND _hToolbarMenu = nullptr; HWND _hSearchEdit = nullptr; HFONT _hFontSearchEdit = nullptr; + std::vector _iconListVector; TreeView *_pTreeView = nullptr; TreeView _treeView; diff --git a/PowerEditor/src/icons/dark/panels/fb_expand_all.bmp b/PowerEditor/src/icons/dark/panels/fb_expand_all.bmp deleted file mode 100644 index d8a551225e2b074effd5eea5c9ea4071ce06fa40..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1334 zcmeH{v2}w$42FMVCxkf0i4(|`bhv`f1s(1vSO5l~pIF19?b>Vp)eBVb9 z1PH?rQ4}GLV-{9u4^<+gSKtabshS?$1n^S#}U&s-DkqSB&bflx;0`>vi(D()%!I$6y+<{>j3Rh5amS`88 zNp6q=%}D#+)2?=;LSNbL7HzvVd95^12g}(0@hJkS$fBs&; zGJ$0R|9k?5?K)VFr_8ay-mYMxB7iFtomD}g>PNw+sWHvpJa2RNuJiH)){mB`D0sQ-~#3X$9GXgWP1bmr-FSFDHgi1E3ge6Bl$8pa0 z@cUET;H?nAi=xNw3~IZe^OpJv(k6{=v zjw7aN!aUDdmgVSq1(yPs0)MT5lxO;J{DZl?JC{hlry`>TV?vwAC%DlQ;pLj!|@g9AfSQW8T=O%220!-pCA z`}?uzz#+s86<0R^GnfmLAp&M%P=Q3afUz-1iaAkG5adDzLqS17FfD2Vp@kU~!F&-0 TCJ@air~slE7zBkNG%^VQuuT(y diff --git a/PowerEditor/src/icons/dark/panels/funclstReload.bmp b/PowerEditor/src/icons/dark/panels/funclstReload.bmp deleted file mode 100644 index f88f567cc01c5d1c956212b104bd2704c9f8e23b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1334 zcmeHH&29lv6#gVSrP`{}=#RAXXF4;qWzs<`yCTv^JcK1O3qoRN;~hvO79IeJ2#LfC zSYUy8md@NUv+v$X&dK-P@0@e*J&W`6o45e6gcA^Tba!$GT&AE$zsGbqbfP;=(_k0| zEX#u9IPg4=a5xM>5Fm;oBuRoS%ZSJ0P*oMlWD==V3h8tjnM?-RY!7d)~qSx!8-|u5E7+^RY zVl*0IJRV~*nP57dVm6y$KA&T;SYWwaVzpXfyTHba~>Q2IoSQY>P diff --git a/PowerEditor/src/icons/dark/panels/funclstSort.bmp b/PowerEditor/src/icons/dark/panels/funclstSort.bmp deleted file mode 100644 index bae0cfd1628dd518d54a0047301f6cad3499b438..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1334 zcmeH{y=r1n5P-jXO*Yvi8*WUp`6Iht|09atRq_B41chj$orPEk_F^Gg`36=#fTfMt z2o?&0g}=Ru&$8!UliZ}s12`~q=9`%_oHNC|ygnad$nybsg{Qo!#PKd6?B(fBkpu{} z*=(q)irsF<;c(z|I&ryNxZQ3%9uI*)08P_~L?T3^QDU(e@pzm>B0(~lB$Y~$PN&Ia zGGwz^a=9G&e4av~K(Sb)R4P#}m#I`LRI62LwHoz$okpWUv)QE8YSC`D>2x}DyIp#{ z9{qlw!C=5}IAk;$F&>YZOeRdHQ)aUn^ZA^`V!?8`WVKqcUa#3~Hf*=skALo+{RH+C z_|^nuS=N`qyWE5|%_l$!T8+>T_m$Wbvf>K|FO0yM|3qYcigxbXRotr*E`^Zg+@lxB zhmKoGbPQRH^52^FPw)56=sA-m?@u^>GV^~PEb`r7lTXEa!oN($era`@_u*Q#-F)T) RfAHut^YEx6UfDRln*XKfSReoZ diff --git a/PowerEditor/src/icons/dark/panels/asciiPanel.ico b/PowerEditor/src/icons/dark/panels/tabbar/asciiPanel.ico similarity index 100% rename from PowerEditor/src/icons/dark/panels/asciiPanel.ico rename to PowerEditor/src/icons/dark/panels/tabbar/asciiPanel.ico diff --git a/PowerEditor/src/icons/dark/panels/clipboardPanel.ico b/PowerEditor/src/icons/dark/panels/tabbar/clipboardPanel.ico similarity index 100% rename from PowerEditor/src/icons/dark/panels/clipboardPanel.ico rename to PowerEditor/src/icons/dark/panels/tabbar/clipboardPanel.ico diff --git a/PowerEditor/src/icons/dark/panels/docList.ico b/PowerEditor/src/icons/dark/panels/tabbar/docList.ico similarity index 100% rename from PowerEditor/src/icons/dark/panels/docList.ico rename to PowerEditor/src/icons/dark/panels/tabbar/docList.ico diff --git a/PowerEditor/src/icons/dark/panels/docMap.ico b/PowerEditor/src/icons/dark/panels/tabbar/docMap.ico similarity index 100% rename from PowerEditor/src/icons/dark/panels/docMap.ico rename to PowerEditor/src/icons/dark/panels/tabbar/docMap.ico diff --git a/PowerEditor/src/icons/dark/panels/fileBrowser.ico b/PowerEditor/src/icons/dark/panels/tabbar/fileBrowser.ico similarity index 100% rename from PowerEditor/src/icons/dark/panels/fileBrowser.ico rename to PowerEditor/src/icons/dark/panels/tabbar/fileBrowser.ico diff --git a/PowerEditor/src/icons/dark/panels/functionList.ico b/PowerEditor/src/icons/dark/panels/tabbar/functionList.ico similarity index 100% rename from PowerEditor/src/icons/dark/panels/functionList.ico rename to PowerEditor/src/icons/dark/panels/tabbar/functionList.ico diff --git a/PowerEditor/src/icons/dark/panels/projectPanel.ico b/PowerEditor/src/icons/dark/panels/tabbar/projectPanel.ico similarity index 100% rename from PowerEditor/src/icons/dark/panels/projectPanel.ico rename to PowerEditor/src/icons/dark/panels/tabbar/projectPanel.ico diff --git a/PowerEditor/src/icons/dark/panels/toolbar/fb_expand_all.ico b/PowerEditor/src/icons/dark/panels/toolbar/fb_expand_all.ico new file mode 100644 index 0000000000000000000000000000000000000000..47f4d6ac7b8a1361d1c9ebfab6ade1d3fa8de834 GIT binary patch literal 523 zcmV+m0`&a=0096201yxW0096X0QCU?02TlM0EtjeM-2)Z3IG5A4M|8uQUCw|5C8xG z5C{eU001BJ|6u?C0lY~>K~y+TrIWi(0znjp|5+Mi1ESb3(x5gAHfl|4thF{&#@e%CRHMOQ*u6IlAhc;3(miqr|6bnUa z+&5s`won4kbICLlLOPPH)L@XCn+he9(;85#c@&SE>f4cJN_|-W%}H0&2hb3QA*o-( z@%T`a57kNf#`@{WDb3E!{s;*YYo#p>_|F&^u#(Nv#^wgNlBn13Fh4){Sw=@nj=4Yk z>-IYB=6BV`vMg~gL?MI^p9CsbRV*$p=n!sQk0uhj3f*yec0nWKV+ip?E|GH0w8Z=TR!t_ci}ghtxQsvb$~$F5!4anNN@f56 N002ovPDHLkV1m^yN$(2>Dg?;~;yxJ9v=I0AKG$xie}cKSZbG3@ z!j;u!=zjG;OxWwJ$_fSo0qC1m5F=-W_u;Mm0ir05{!D+F{c!9zqa3{v7ec9i00000 LNkvXXu0mjfylKLbfz}$oyIk^5}2lZbbf*a#YUqg;7p3!0aZd3%1jy~b=a2RB{V?6u z&dx#NjAM8tM58Z3G&OnR_F=74qLS?Tu3YgH89BgSrRd$FABgU5$7L15;E=7Yry^%m&-PO zI3N+N|3vH*xvqN=EOzv*k^3$pQPDh;t%9~--JH{5+Z6^oPO6%?)0p zE(zxh)z|}2rf8LE559bD(lhqJD*9vpdv5%ha=9EC;6XnB>UKXRWLY8FfJ`#wM03B!dCyO4)h@LpBK0)QEyEH_w+Rflm3 zw9-V3U>aakzG5XrFYgpoT2Z^jB<7u5E(9%4GPl4s2+<(s$vG!7K@azj;J5Mdol~Hc zqBgKzzaW3kkJ-vf0}wd>Y2`ixt;yI1gb*Rwu}xdtSS;b520JO~CW=mL*rRB#pcbwX2ktf4$v3)=Citp9kft;5N7fM(MM3lV z9qRhi!qY);N05n(Mpq*&o)&{)?==qj(f+mCZ^CbxXJiqpCv2nu0000x$R09eM3jUj#n=(X4Mq_AB zOH2P>UQy2Q_wQc@hQI$Ae*OK;prfsgYQWa5+x~lddyyQda1B?lUHz}E1u>NnNKZ@o zKXcX`R2N*idi6idS%eI@ee2eLRW&tqFKh*R!J8--?A^QXzq7LwS|An||2HtuV@QaN z$7{&kIdlKtxqFYHy}cDP8utKA-o0xZLuY3XRzpBB6&M)AU~g{+m&Z`JZ||P}Pk<>e zE+Gy@Zr+?Z|CLl!85|t!QN*#@R9;f{-`U-TK|x*)9G;IKKVjIrdmlqv2WA2zD$wx7 c3dIHh0J@Ha5h$i(@c;k-07*qoM6N<$f^Pw`T>t<8 literal 0 HcmV?d00001 diff --git a/PowerEditor/src/icons/dark/panels/toolbar/funclstSort.ico b/PowerEditor/src/icons/dark/panels/toolbar/funclstSort.ico new file mode 100644 index 0000000000000000000000000000000000000000..4a5280f230567f03c09159a0a66ee36a1b3a15be GIT binary patch literal 486 zcmVI2t9x}(`;w3NhDDr(oMMW5z>&B zsS8mzxe8Zqd-@@BHp}?l}bfGYEZs zGLb;j<`$$<$+;X~)n1=TRe6y!5CgCt2@O(ba28n^qG)-8R1>3gaI1XIbh39$j zeIG#(APhr9QG_^-kt7MyG)0zW$nzXUQJ^eKR8@t#uF*6N+O|d4b?EyZ!!TeR$2Irv z>=oE6@K_a~|HDvag*0V)rJ@n3#~aa%fI=iQ()tH>g@EAGtTZtddFruhSSz1;EQig^8H1D4PgePIUNp-7JHl)hxJeUD)na6X?gjw7aN!aUDdmgREx zCbkM}6}YVm(EsL`x3`!O><*z>Q!!{H?57W2c*8hC%(WxaHN6=f(j0FEGQ`W z6;2c<{)XVdxvznKLhp;xenYcipS9Q8>kQ5soL@1Q0cyEU0INI^y^nCFE#&jVd#!OK z6S+B#gT-P2&+`xj0XCZrcDo&-D8k`z!0B{Ck|cP&Uif@I`2Bta0s#brL4-mfgu`J( zA`wKRQN&^~#N%-!5(y-eNu*LKq|<3+G8tsES>$p#K8%8sW?h9RQ1)wF-!BTL+^?)?qY`GQ>l diff --git a/PowerEditor/src/icons/standard/panels/funclstPreferences.bmp b/PowerEditor/src/icons/standard/panels/funclstPreferences.bmp deleted file mode 100644 index f0e7103db61dce96022d1b717815fbd92aef317e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 246 zcmZ?r{l)+RWk5;;hy|dSk%0vwfrb3=;R8cnULHezeLaJ!sw%_&{ref_&YjE9+}z9% z8ym|oZQ3*}y08ertk7@(OR_YJKomI|LIs3j0_H9*ASsq&V`Bpl!`ax_5KNo7LTD2P YMKIr#feA!28!Lb)1_nVP2#rhv00r$B3IG5A diff --git a/PowerEditor/src/icons/standard/panels/funclstReload.bmp b/PowerEditor/src/icons/standard/panels/funclstReload.bmp deleted file mode 100644 index 0e3bb0be8f2da94f79c6e8ca0b2c7e8ddb5ed2fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1334 zcmeHH&29lv6#h_JKbcU`Kc$`NOk-v=Q!%j=X^2FW7qF06@DNsZ79C+D8U{rZlWK_YSm1Qg^vr2#jZp`32JmM|zpNt&j? zFbr6h1;=sVc^-lwKomttl7wh9idZa$cs!0oB7tNwiBu|ubUKYpCWCA?i(D>;d_Ipt zp@3qsh*GJ9a=DC3rGjd;idwCPdcBTDqk(3#iB_wHcDs#Er-N>{i(apXe!q{wV1VIp zh|y?-@pz2MWP<5*irH+2`FxJWVu9syiPdU_^?HrXW`pf^i`{OA{eF+b;eg}ucz){z zTsCmo!2cVN|Bi6zmo9l7CX?;)<0SDm_nQ>rJk|gaKJ8x3@L5U4^R0f>^Q0n*(K%;V zky-B}OQx{GEkWIvUsXiW8drWF)t3D(!e5L=gIS$Qq8^AKzgt136et%h2HCr7pHZ7y V@;faS$9+IPajjfAN&hn=;0MChgcJY( diff --git a/PowerEditor/src/icons/standard/panels/funclstSort.bmp b/PowerEditor/src/icons/standard/panels/funclstSort.bmp deleted file mode 100644 index c32262bcabc89fb758cb8ad7f1c6739f6eff8620..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1334 zcmeH`Ic~yG5Qcx2C~?R_AbZGSuoJT4<>7(?2^SPd5u&2x0(2aK4rq`#01^eFp@Rwv zD3CY;5)BoI{RnwBCXgm4;7Rk(d^4lBjP%rRWe@sNtbmtBcEe0KSQV%`Z7YL`0yUOp z;dZ;haU6J_hbW4WBnh%CgAfA0-w#Dm5C{Yi3h(GrjRu;{ zCR(i)+U+(voesL)E_%Hl`u#ozg8_!aAx5JS#^W(2lL@BNDQ2@7=JPogiv^a;$B&x#Feb*WCtjFW4LuglNZdFia^fKt zAAh9nA$-~Iv_^|hZ@)LM_FJ=lj3!3i_D0D2Ax#*3aU}@1=bO5h-UrVcCTCCVDaCa^ Yd2l#g+w9x7erz+jzSNM|MBV+BAGOwjnE(I) diff --git a/PowerEditor/src/icons/standard/panels/toolbar/fb_expand_all.ico b/PowerEditor/src/icons/standard/panels/toolbar/fb_expand_all.ico new file mode 100644 index 0000000000000000000000000000000000000000..e5fd6ad1ba7cf7fe46e1affe5f6addf9a38de94a GIT binary patch literal 511 zcmV zD8YiDy<$oH0frhI!#^O}kfTx>?yghf2Zx2xf*a><56wjk61LcEW_I4ZxAT_4h>JP( zOOY_Xe|!SEU^_As-k6CAkcYyY7(}RNjN(#xH)$V$r6fU5Nck*AX2;A zJ2*2x3+IIba{&}Ngu2mWYD`6~&btm;;b;UKclR7XA_k^ma=QNnkrWwC-RJ=*1fYL+ zb~N|&|HVX>6f{ho1N19c-`K?4o9dr()D>z{(>TB=YbXGj-b$bm&n+%MwaVGKTZ}Z< z`;4$yyuft&(B}n2as#trS&c!te8nX=$c8tCo}5HHfv@dn=u+S~cLJ%@9*eK8;mcEt zx-ziIRwj*}11KRh^rlaaED>EwcO83DX8#}s`CR^&WH%6whRGBSKY%Q|&PM7)Fm!N? zOd;=FgV(ak%E=wh!7us(Yzwfai-XI79*mf60(fKR&pD|`KM_8#`!$cqe zTCK((mt5KD@K0nD17XajVgzwI2tCUWHO78^`2v2MvJv6okput$002ovPDHLkV1fn1 B(%t|7 literal 0 HcmV?d00001 diff --git a/PowerEditor/src/icons/standard/panels/toolbar/fb_fold_all.ico b/PowerEditor/src/icons/standard/panels/toolbar/fb_fold_all.ico new file mode 100644 index 0000000000000000000000000000000000000000..8f25fb876eb9a0cd59186d7f642618a351ea8f33 GIT binary patch literal 509 zcmV!yV-Sgk;r`(sUR!O)=OuBTMNOM{--@E3X_`Lh9$qSyFqud| ztKBB#!Qm=FMlM825nvh&5dQS_4eB3;A0QliB{C_PolxKu*eMK@m{U2fmTNF)rxo}B zIcnHyy9Th`u1E+Fjz+;SjKBhiN>2v-b-HH(lvE0tZA0?%3I@BeI{>ccsQcq1Sf|s$ zYPGuC1r;|di=riZrVW`)270}oJB6T;Y3dYz6wCX z&1;-7b-?Yu!4ygb{a9KCL?Te02f^p=UGLV&N95@JOvDoM<2P8hc zhe@>@Hw+7VwclN!BD86 zA@s+!@D2Kk_U5K$GG8#m?yy$^3QmniL)mN=i9}-CZ&WIkv}fO5L|?wz`i-Sjj&Vpj zoyJj>3JOIlesLiZv+od#$02EyAo?O&y^u6L|l^|xbmDbnS;P>CH3iu7e(e8}`T%h~_0000Ra{9|Ge6c%J?Y-~i) zgVz96Rn`A67e+)yFf=zdW2nb(fV%4c|3D)u%PSa?lat|UYin!&H#b8J!*75Z&;>vP zZr{F*&|F{t|Kt1j43j2JBEkTm7eIc9kBegf+6va74it0u^d!~*b)W(N7#Lw80cJ2V zczOX1m`K0{v9YoLPnlZ!g2G z+qW?d@bU5aZ)0oAP*Glv(`yb+&i^0Yf5346{#{f9X3m`X|M20%7&gPgNCoI@kazz5 z`NP1$$;NQ)>J3x_K(=q$vW4V8g=^5(*8YF>>Q(X$(9qWUf8**kq6|<~RsDY(JrI3- z{r+#+yoo3STwPuM@7}!!H4LUtoBIFcsnZM#7A(MPNM>fne>G(_hQg8}%xH9Rb^Y(_ z!~O&N;PMy>U0mG$%gahL%$+|UMJ_WdS5RW`_Vi>ZEH1=QPgJ1c%WxDM0012ydJ%?yiN62< N002ovPDHLkV1lq>z7qfd literal 0 HcmV?d00001 diff --git a/PowerEditor/src/icons/standard/panels/toolbar/funclstSort.ico b/PowerEditor/src/icons/standard/panels/toolbar/funclstSort.ico new file mode 100644 index 0000000000000000000000000000000000000000..995576f2bbdc03dfc64aa372e5e383758c1eed39 GIT binary patch literal 455 zcmV;&0XY5u0096201yxW0096X0I>l802TlM0EtjeM-2)Z3IG5A4M|8uQUCw|5C8xG z5C{eU001BJ|6u?C0eDG7K~y+TrISHR0znkV->PM|QUvQ}xuaiTbwe~rv%rgX@LNr=)QMH&-4>n?dOx|g)R)`ik>b19nB@aF%1?>~QLIQZw{X8TW1 zj`8h%2-$2_cNPkUu+eNVb)Cp32>78W(Cv10XN32lB=?O0$z&3jtX8-z7WDu^P?Dti zfc-=QuPPNy5R1jITCFl-LUMKkx