From bdbd65182c18e79bb5665772c30cdfc8717dcf78 Mon Sep 17 00:00:00 2001 From: ozone10 Date: Fri, 5 Jul 2024 13:40:26 +0200 Subject: [PATCH] Replace treeview bmp with ico - use recommended subclassing - fix missing icons in function list when searching ref #14959 Close #15405 --- PowerEditor/src/Notepad_plus.rc | 24 +++--- PowerEditor/src/NppBigSwitch.cpp | 2 +- .../WinControls/FileBrowser/fileBrowser.cpp | 3 +- .../FunctionList/functionListPanel.cpp | 37 +++++++--- .../WinControls/ProjectPanel/ProjectPanel.cpp | 3 +- .../src/WinControls/TreeView/TreeView.cpp | 69 ++++++++++-------- .../src/WinControls/TreeView/TreeView.h | 10 +-- .../standard/panels/tabbar/projectPanel.ico | Bin 675 -> 624 bytes .../panels/treeview/fb_root_close.bmp | Bin 822 -> 0 bytes .../panels/treeview/fb_root_close.ico | Bin 0 -> 1150 bytes .../standard/panels/treeview/fb_root_open.bmp | Bin 822 -> 0 bytes .../standard/panels/treeview/fb_root_open.ico | Bin 0 -> 1150 bytes .../panels/treeview/funcList_leaf.bmp | Bin 822 -> 0 bytes .../panels/treeview/funcList_leaf.ico | Bin 0 -> 1150 bytes .../panels/treeview/funcList_node.bmp | Bin 822 -> 0 bytes .../panels/treeview/funcList_node.ico | Bin 0 -> 1150 bytes .../standard/panels/treeview/project_file.bmp | Bin 822 -> 0 bytes .../standard/panels/treeview/project_file.ico | Bin 0 -> 1150 bytes .../panels/treeview/project_file_invalid.bmp | Bin 822 -> 0 bytes .../panels/treeview/project_file_invalid.ico | Bin 0 -> 1150 bytes .../panels/treeview/project_folder_close.bmp | Bin 822 -> 0 bytes .../panels/treeview/project_folder_close.ico | Bin 0 -> 1150 bytes .../panels/treeview/project_folder_open.bmp | Bin 822 -> 0 bytes .../panels/treeview/project_folder_open.ico | Bin 0 -> 1150 bytes .../standard/panels/treeview/project_root.bmp | Bin 822 -> 0 bytes .../standard/panels/treeview/project_root.ico | Bin 0 -> 1150 bytes .../panels/treeview/project_work_space.bmp | Bin 822 -> 0 bytes .../panels/treeview/project_work_space.ico | Bin 0 -> 1150 bytes .../treeview/project_work_space_dirty.bmp | Bin 822 -> 0 bytes .../treeview/project_work_space_dirty.ico | Bin 0 -> 1150 bytes 30 files changed, 82 insertions(+), 66 deletions(-) delete mode 100644 PowerEditor/src/icons/standard/panels/treeview/fb_root_close.bmp create mode 100644 PowerEditor/src/icons/standard/panels/treeview/fb_root_close.ico delete mode 100644 PowerEditor/src/icons/standard/panels/treeview/fb_root_open.bmp create mode 100644 PowerEditor/src/icons/standard/panels/treeview/fb_root_open.ico delete mode 100644 PowerEditor/src/icons/standard/panels/treeview/funcList_leaf.bmp create mode 100644 PowerEditor/src/icons/standard/panels/treeview/funcList_leaf.ico delete mode 100644 PowerEditor/src/icons/standard/panels/treeview/funcList_node.bmp create mode 100644 PowerEditor/src/icons/standard/panels/treeview/funcList_node.ico delete mode 100644 PowerEditor/src/icons/standard/panels/treeview/project_file.bmp create mode 100644 PowerEditor/src/icons/standard/panels/treeview/project_file.ico delete mode 100644 PowerEditor/src/icons/standard/panels/treeview/project_file_invalid.bmp create mode 100644 PowerEditor/src/icons/standard/panels/treeview/project_file_invalid.ico delete mode 100644 PowerEditor/src/icons/standard/panels/treeview/project_folder_close.bmp create mode 100644 PowerEditor/src/icons/standard/panels/treeview/project_folder_close.ico delete mode 100644 PowerEditor/src/icons/standard/panels/treeview/project_folder_open.bmp create mode 100644 PowerEditor/src/icons/standard/panels/treeview/project_folder_open.ico delete mode 100644 PowerEditor/src/icons/standard/panels/treeview/project_root.bmp create mode 100644 PowerEditor/src/icons/standard/panels/treeview/project_root.ico delete mode 100644 PowerEditor/src/icons/standard/panels/treeview/project_work_space.bmp create mode 100644 PowerEditor/src/icons/standard/panels/treeview/project_work_space.ico delete mode 100644 PowerEditor/src/icons/standard/panels/treeview/project_work_space_dirty.bmp create mode 100644 PowerEditor/src/icons/standard/panels/treeview/project_work_space_dirty.ico diff --git a/PowerEditor/src/Notepad_plus.rc b/PowerEditor/src/Notepad_plus.rc index 1acb037b8..8604fa7f9 100644 --- a/PowerEditor/src/Notepad_plus.rc +++ b/PowerEditor/src/Notepad_plus.rc @@ -360,15 +360,15 @@ IDR_FIND_RESULT_ICO2 ICON "icons/light/panels/tabbar/findResul IDR_FIND_RESULT_ICO_DM ICON "icons/dark/panels/tabbar/findResult.ico" -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_PROJECT_WORKSPACE ICON "icons/standard/panels/treeview/project_work_space.ico" +IDI_PROJECT_WORKSPACEDIRTY ICON "icons/standard/panels/treeview/project_work_space_dirty.ico" +IDI_PROJECT_PROJECT ICON "icons/standard/panels/treeview/project_root.ico" +IDI_PROJECT_FOLDEROPEN ICON "icons/standard/panels/treeview/project_folder_open.ico" +IDI_PROJECT_FOLDERCLOSE ICON "icons/standard/panels/treeview/project_folder_close.ico" +IDI_PROJECT_FILE ICON "icons/standard/panels/treeview/project_file.ico" +IDI_PROJECT_FILEINVALID ICON "icons/standard/panels/treeview/project_file_invalid.ico" +IDI_FB_ROOTOPEN ICON "icons/standard/panels/treeview/fb_root_open.ico" +IDI_FB_ROOTCLOSE ICON "icons/standard/panels/treeview/fb_root_close.ico" 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" @@ -377,9 +377,9 @@ IDI_FB_SELECTCURRENTFILE_DM ICON "icons/dark/panels/toolbar/fb_select 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/treeview/project_file.bmp" // same file as IDI_PROJECT_FILE -IDI_FUNCLIST_NODE BITMAP "icons/standard/panels/treeview/funcList_node.bmp" -IDI_FUNCLIST_LEAF BITMAP "icons/standard/panels/treeview/funcList_leaf.bmp" +//IDI_FUNCLIST_ROOT ICON "icons/standard/panels/treeview/project_file.ico" // same file as IDI_PROJECT_FILE +IDI_FUNCLIST_NODE ICON "icons/standard/panels/treeview/funcList_node.ico" +IDI_FUNCLIST_LEAF ICON "icons/standard/panels/treeview/funcList_leaf.ico" IDI_FUNCLIST_SORTBUTTON ICON "icons/standard/panels/toolbar/funclstSort.ico" IDI_FUNCLIST_RELOADBUTTON ICON "icons/standard/panels/toolbar/funclstReload.ico" diff --git a/PowerEditor/src/NppBigSwitch.cpp b/PowerEditor/src/NppBigSwitch.cpp index 5e0cdaee8..002fb0275 100644 --- a/PowerEditor/src/NppBigSwitch.cpp +++ b/PowerEditor/src/NppBigSwitch.cpp @@ -3670,7 +3670,7 @@ LRESULT Notepad_plus::process(HWND hwnd, UINT message, WPARAM wParam, LPARAM lPa _subDocTab.setFont(); _mainDocTab.resizeIconsDpi(); _subDocTab.resizeIconsDpi(); - _subDocTab.setCloseBtnImageList(); + _mainDocTab.setCloseBtnImageList(); _subDocTab.setCloseBtnImageList(); ::SendMessage(_pPublicInterface->getHSelf(), WM_COMMAND, IDM_VIEW_REDUCETABBAR, 0); diff --git a/PowerEditor/src/WinControls/FileBrowser/fileBrowser.cpp b/PowerEditor/src/WinControls/FileBrowser/fileBrowser.cpp index c2a5eae3f..da0974439 100644 --- a/PowerEditor/src/WinControls/FileBrowser/fileBrowser.cpp +++ b/PowerEditor/src/WinControls/FileBrowser/fileBrowser.cpp @@ -180,8 +180,9 @@ intptr_t CALLBACK FileBrowser::run_dlgProc(UINT message, WPARAM wParam, LPARAM l FileBrowser::initPopupMenus(); + std::vector imgIds{ IDI_FB_ROOTOPEN, IDI_FB_ROOTCLOSE, IDI_PROJECT_FOLDEROPEN, IDI_PROJECT_FOLDERCLOSE, IDI_PROJECT_FILE }; _treeView.init(_hInst, _hSelf, ID_FILEBROWSERTREEVIEW); - _treeView.setImageList(CX_BITMAP, CY_BITMAP, 5, IDI_FB_ROOTOPEN, IDI_FB_ROOTCLOSE, IDI_PROJECT_FOLDEROPEN, IDI_PROJECT_FOLDERCLOSE, IDI_PROJECT_FILE); + _treeView.setImageList(imgIds); _treeView.addCanNotDropInList(INDEX_OPEN_ROOT); _treeView.addCanNotDropInList(INDEX_CLOSE_ROOT); diff --git a/PowerEditor/src/WinControls/FunctionList/functionListPanel.cpp b/PowerEditor/src/WinControls/FunctionList/functionListPanel.cpp index 4df3c19b8..0332ff4e4 100644 --- a/PowerEditor/src/WinControls/FunctionList/functionListPanel.cpp +++ b/PowerEditor/src/WinControls/FunctionList/functionListPanel.cpp @@ -710,39 +710,49 @@ void FunctionListPanel::searchFuncAndSwitchView() _pTreeView->customSorting(_pTreeView->getRoot(), categorySortFunc, 0, true); } -static WNDPROC oldFunclstToolbarProc = NULL; -static LRESULT CALLBACK funclstToolbarProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) +static LRESULT CALLBACK funclstToolbarProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam, UINT_PTR uIdSubclass, DWORD_PTR /*dwRefData*/) { switch (message) { + case WM_NCDESTROY: + { + ::RemoveWindowSubclass(hwnd, funclstToolbarProc, uIdSubclass); + break; + } + case WM_CTLCOLOREDIT : { return ::SendMessage(::GetParent(hwnd), WM_CTLCOLOREDIT, wParam, lParam); } } - return oldFunclstToolbarProc(hwnd, message, wParam, lParam); + return ::DefSubclassProc(hwnd, message, wParam, lParam); } -static WNDPROC oldFunclstSearchEditProc = NULL; -static LRESULT CALLBACK funclstSearchEditProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) +static LRESULT CALLBACK funclstSearchEditProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam, UINT_PTR uIdSubclass, DWORD_PTR /*dwRefData*/) { switch (message) { + case WM_NCDESTROY: + { + ::RemoveWindowSubclass(hwnd, funclstSearchEditProc, uIdSubclass); + break; + } + case WM_CHAR: { if (wParam == VK_ESCAPE) { ::SendMessage(hwnd, WM_SETTEXT, 0, reinterpret_cast(L"")); - return FALSE; + return 0; } else if (wParam == VK_TAB) { ::SendMessage(GetParent(hwnd), WM_COMMAND, VK_TAB, 1); - return FALSE; + return 0; } } } - return oldFunclstSearchEditProc(hwnd, message, wParam, lParam); + return ::DefSubclassProc(hwnd, message, wParam, lParam); } bool FunctionListPanel::shouldSort() @@ -842,7 +852,8 @@ intptr_t CALLBACK FunctionListPanel::run_dlgProc(UINT message, WPARAM wParam, LP 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))); + constexpr UINT_PTR idSubclassFunclstToolbar = 2; + ::SetWindowSubclass(_hToolbarMenu, funclstToolbarProc, idSubclassFunclstToolbar, 0); const int iconSizeDyn = _dpiManager.scale(16); constexpr int nbIcons = 3; @@ -918,7 +929,8 @@ intptr_t CALLBACK FunctionListPanel::run_dlgProc(UINT message, WPARAM wParam, LP 2, 2, editWidth, editHeight, _hToolbarMenu, reinterpret_cast(IDC_SEARCHFIELD_FUNCLIST), _hInst, 0 ); - oldFunclstSearchEditProc = reinterpret_cast(::SetWindowLongPtr(_hSearchEdit, GWLP_WNDPROC, reinterpret_cast(funclstSearchEditProc))); + constexpr UINT_PTR idSubclassFunclstSearchEdit = 3; + ::SetWindowSubclass(_hSearchEdit, funclstSearchEditProc, idSubclassFunclstSearchEdit, 0); if (_hFontSearchEdit == nullptr) { @@ -931,10 +943,11 @@ intptr_t CALLBACK FunctionListPanel::run_dlgProc(UINT message, WPARAM wParam, LP ::SendMessage(_hSearchEdit, WM_SETFONT, reinterpret_cast(_hFontSearchEdit), MAKELPARAM(TRUE, 0)); } + std::vector imgIds{ IDI_FUNCLIST_ROOT, IDI_FUNCLIST_NODE, IDI_FUNCLIST_LEAF }; _treeView.init(_hInst, _hSelf, IDC_LIST_FUNCLIST); - _treeView.setImageList(CX_BITMAP, CY_BITMAP, 3, IDI_FUNCLIST_ROOT, IDI_FUNCLIST_NODE, IDI_FUNCLIST_LEAF); + _treeView.setImageList(imgIds); _treeViewSearchResult.init(_hInst, _hSelf, IDC_LIST_FUNCLIST_AUX); - _treeViewSearchResult.setImageList(CX_BITMAP, 3, CY_BITMAP, IDI_FUNCLIST_ROOT, IDI_FUNCLIST_NODE, IDI_FUNCLIST_LEAF); + _treeViewSearchResult.setImageList(imgIds); _treeView.makeLabelEditable(false); diff --git a/PowerEditor/src/WinControls/ProjectPanel/ProjectPanel.cpp b/PowerEditor/src/WinControls/ProjectPanel/ProjectPanel.cpp index 18946f0cd..4b71a6954 100644 --- a/PowerEditor/src/WinControls/ProjectPanel/ProjectPanel.cpp +++ b/PowerEditor/src/WinControls/ProjectPanel/ProjectPanel.cpp @@ -77,8 +77,9 @@ intptr_t CALLBACK ProjectPanel::run_dlgProc(UINT message, WPARAM wParam, LPARAM SendMessage(_hToolbarMenu, TB_AUTOSIZE, 0, 0); ShowWindow(_hToolbarMenu, SW_SHOW); + std::vector imgIds{ IDI_PROJECT_WORKSPACE, IDI_PROJECT_WORKSPACEDIRTY, IDI_PROJECT_PROJECT, IDI_PROJECT_FOLDEROPEN, IDI_PROJECT_FOLDERCLOSE, IDI_PROJECT_FILE, IDI_PROJECT_FILEINVALID }; _treeView.init(_hInst, _hSelf, ID_PROJECTTREEVIEW); - _treeView.setImageList(CX_BITMAP, CY_BITMAP, 7, IDI_PROJECT_WORKSPACE, IDI_PROJECT_WORKSPACEDIRTY, IDI_PROJECT_PROJECT, IDI_PROJECT_FOLDEROPEN, IDI_PROJECT_FOLDERCLOSE, IDI_PROJECT_FILE, IDI_PROJECT_FILEINVALID); + _treeView.setImageList(imgIds); _treeView.addCanNotDropInList(INDEX_LEAF); _treeView.addCanNotDropInList(INDEX_LEAF_INVALID); diff --git a/PowerEditor/src/WinControls/TreeView/TreeView.cpp b/PowerEditor/src/WinControls/TreeView/TreeView.cpp index 2c42f931f..d14774b42 100644 --- a/PowerEditor/src/WinControls/TreeView/TreeView.cpp +++ b/PowerEditor/src/WinControls/TreeView/TreeView.cpp @@ -21,7 +21,8 @@ using namespace std; -#define CY_ITEMHEIGHT 18 +constexpr int g_treeviewItemPadding = 1; +constexpr int g_treeviewIcoSize = 16; void TreeView::init(HINSTANCE hInst, HWND parent, int treeViewID) { @@ -47,11 +48,11 @@ void TreeView::init(HINSTANCE hInst, HWND parent, int treeViewID) NppDarkMode::setTreeViewStyle(_hSelf); - int itemHeight = NppParameters::getInstance()._dpiManager.scaleY(CY_ITEMHEIGHT); + const int itemHeight = DPIManagerV2::scale(g_treeviewIcoSize + g_treeviewItemPadding * 2, _hParent); TreeView_SetItemHeight(_hSelf, itemHeight); - ::SetWindowLongPtr(_hSelf, GWLP_USERDATA, reinterpret_cast(this)); - _defaultProc = reinterpret_cast(::SetWindowLongPtr(_hSelf, GWLP_WNDPROC, reinterpret_cast(staticProc))); + constexpr UINT_PTR idSubclassTreeview = 1; + ::SetWindowSubclass(_hSelf, staticProc, idSubclassTreeview, reinterpret_cast(this)); } @@ -95,7 +96,23 @@ LRESULT TreeView::runProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) } } } - return ::CallWindowProc(_defaultProc, hwnd, Message, wParam, lParam); + return ::DefSubclassProc(hwnd, Message, wParam, lParam); +} + +LRESULT TreeView::staticProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam, UINT_PTR uIdSubclass, DWORD_PTR dwRefData) +{ + switch (Message) + { + case WM_NCDESTROY: + { + ::RemoveWindowSubclass(hwnd, staticProc, uIdSubclass); + break; + } + + default: + break; + } + return reinterpret_cast(dwRefData)->runProc(hwnd, Message, wParam, lParam); } void TreeView::makeLabelEditable(bool toBeEnabled) @@ -264,43 +281,33 @@ HTREEITEM TreeView::searchSubItemByName(const wchar_t *itemName, HTREEITEM hPare return nullptr; } -BOOL TreeView::setImageList(int w, int h, int nbImage, int image_id, ...) +bool TreeView::setImageList(std::vector imageIds, int imgSize) { - HBITMAP hbmp; - COLORREF maskColour = RGB(192, 192, 192); + const int nbImage = static_cast(imageIds.size()); + if (imgSize <= 0) + imgSize = g_treeviewIcoSize; // Creation of image list - int bmDpiDynW = NppParameters::getInstance()._dpiManager.scaleX(w); - int bmDpiDynH = NppParameters::getInstance()._dpiManager.scaleY(h); - if ((_hImaLst = ImageList_Create(bmDpiDynW, bmDpiDynH, ILC_COLOR32 | ILC_MASK, nbImage, 0)) == NULL) - return FALSE; + int dpiImgSize = DPIManagerV2::scale(imgSize, _hParent); + if ((_hImaLst = ::ImageList_Create(dpiImgSize, dpiImgSize, ILC_COLOR32 | ILC_MASK, nbImage, 0)) == nullptr) + return false; - // Add the bmp in the list - va_list argLst; - va_start(argLst, image_id); - int imageID = image_id; - - for (int i = 0; i < nbImage; i++) + // Add the ico into the list + for (const int& id : imageIds) { - if (i > 0) - imageID = va_arg(argLst, int); + HICON hIcon = nullptr; + DPIManagerV2::loadIcon(_hInst, MAKEINTRESOURCE(id), dpiImgSize, dpiImgSize, &hIcon, LR_LOADMAP3DCOLORS | LR_LOADTRANSPARENT); + if (hIcon == nullptr) + return false; - hbmp = (HBITMAP)::LoadImage(_hInst, MAKEINTRESOURCE(imageID), IMAGE_BITMAP, bmDpiDynW, bmDpiDynH, 0); - if (hbmp == NULL) - { - va_end(argLst); - return FALSE; - } - ImageList_AddMasked(_hImaLst, hbmp, maskColour); - DeleteObject(hbmp); + ::ImageList_AddIcon(_hImaLst, hIcon); + ::DestroyIcon(hIcon); } - va_end(argLst); // Set image list to the tree view TreeView_SetImageList(_hSelf, _hImaLst, TVSIL_NORMAL); - //TreeView_SetImageList(_treeViewSearchResult.getHSelf(), _hTreeViewImaLst, TVSIL_NORMAL); - return TRUE; + return true; } void TreeView::cleanSubEntries(HTREEITEM hTreeItem) diff --git a/PowerEditor/src/WinControls/TreeView/TreeView.h b/PowerEditor/src/WinControls/TreeView/TreeView.h index 046312f5c..231a974f5 100644 --- a/PowerEditor/src/WinControls/TreeView/TreeView.h +++ b/PowerEditor/src/WinControls/TreeView/TreeView.h @@ -21,9 +21,6 @@ #include "Window.h" #include "Common.h" -#define CX_BITMAP 16 -#define CY_BITMAP 16 - struct TreeStateNode { std::wstring _label; std::wstring _extraData; @@ -119,16 +116,13 @@ public: bool searchLeafAndBuildTree(const TreeView & tree2Build, const std::wstring & text2Search, int index2Search); void sort(HTREEITEM hTreeItem, bool isRecusive); void customSorting(HTREEITEM hTreeItem, PFNTVCOMPARE sortingCallbackFunc, LPARAM lParam, bool isRecursive); - BOOL setImageList(int w, int h, int nbImage, int image_id, ...); + bool setImageList(std::vector imageIds, int imgSize = 0); protected: HIMAGELIST _hImaLst = nullptr; - WNDPROC _defaultProc = nullptr; LRESULT runProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam); - static LRESULT CALLBACK staticProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) { - return (((TreeView *)(::GetWindowLongPtr(hwnd, GWLP_USERDATA)))->runProc(hwnd, Message, wParam, lParam)); - }; + static LRESULT CALLBACK staticProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam, UINT_PTR uIdSubclass, DWORD_PTR dwRefData); void cleanSubEntries(HTREEITEM hTreeItem); void dupTree(HTREEITEM hTree2Dup, HTREEITEM hParentItem); diff --git a/PowerEditor/src/icons/standard/panels/tabbar/projectPanel.ico b/PowerEditor/src/icons/standard/panels/tabbar/projectPanel.ico index 1df3d18972a933c6c8ab550a93a8b6278649a72f..2e71fb4f7e63376473a9a2bf58cf1a0822d79474 100644 GIT binary patch delta 594 zcmV-Y0fgc6dXI3a;rGN zspW_eiqhJLQhIJBJ}RX@fyB)Ln!+zZY8;R-fxl2x7b-R901`1x3Ky=uaS7)h;_bY* z-o${F*t_f5dGlt+UNg>24#0=UyZkxJ4Hr1JF91&U)qfXvHRGY_Jqt^K98>P9D3}a} z3~qmO&bh}q33EPL-S0w>ncm(C-VXi{XOUC>D+&||e_u{av~eAg5IiBl`@I0kV1he0 z7fO1IcB~HVL{^00*Y8V2_ZJbpI;VmID%cOu`#izz8`p>?T+pRUm&6m@UJy71%}!>L zcEA=UlCXuUowfO-`8kHXL{?AzmDb2W0|h_53=+vm?D1-;|4itobC0G)PRMOOVE(P$6JL$861c g4s0r{ukyuS0aTF&J-pZrHvj+t07*qoM6N<$f{MEe6aWAK delta 645 zcmV;00($-M1fvBH000310RRvX00031AOMY#4=aCENklcU(AIyv$G)8FWR8XY&Ui^qnXOEJTYU%@7wb zM2DOMzugNC`8(8u0FXhqGI*cd#T4{HF`Z|C*0OR>0LQ)9@ax|SaG3}&7~hu}zK(yH ziAFNJ7W0A+s{|3kNKGH)bM)tsy+K|7gere2;Y0@XJSZ0lo}3d_VPUpJ`15Wd0KJR= ztH`<}gQB;-D>rD`2{VJDi4LaUVBhbM>6Fx^gcPN1a7Wm6M}zv_k^wz9RT=iRMU{~z zgCC{@Q}+qg&_d->UqO|^(F6XEqrqIK0Q)fHfATV#4Mc``}Cuw(SL*Z5s5>)?z$WXoeDQC#;0F)I~lIV{b6!Oa_<8pf5fm zZ61+l)XOKv&ae*!n(G#7yO9=sZL-L4#O=$p0f~Y{S-~?tIzb{Dd=q!ii)jkhk~8fh9E`vZ!$OmB$m}w22CjvN&=iV za2yaVI;DNrRN`5{WMer`4(!S}8|)F*a$ggmE@nv?rq9XHNGHl1aDF{(7>m$L1fJL- f!AN;0y+OeLnL|P}9f}6Y*>g53t?qtBNl9ghzJoOlt`#jluRe7 zBD4&HA;?U1MtbVXq>FC5=;Yj+n}5##pYPtATh%#r{8ZSlu`W;RjJi73Df};8kVOg< zb@%sQA~E)OUUa&eMpOM&YW2NV`{48S2#e9!m`;USZCNhQOC_#Y&Wr} zEsExI5kZXxU#Tn*gu8H@XtlP9-)^Uu%MTO*91IS+-HpwP7Dx0{iq0}`>51E%2(!{L)K WAL?{g#P9d_1Azg^6_NVC*uMZ?#8?mj diff --git a/PowerEditor/src/icons/standard/panels/treeview/fb_root_close.ico b/PowerEditor/src/icons/standard/panels/treeview/fb_root_close.ico new file mode 100644 index 0000000000000000000000000000000000000000..c3a218c723a59dcd4c30de20bf66df7829a2e0e7 GIT binary patch literal 1150 zcmeH^OK%c!6vfBH573osmwpUCh%vObNmUk&Ze-DP)5e$@*WEQ5YHDjp(?D7TF>P9l z^npBr7%PurVR)yM#{e_@yaNI&_b!~tnKN_$IrpA>Mp16aJu#uk^R_a3Q&DayigHIF zC8-SRLdsn^`xh^ZC4h;UnKPy=ejZE(n3Qi5W_`eZERzB5-#cb{`U{U|&lv79Hy1?B zw>UYea&%DQ@Sw>4ei5IqfY+z8>(1d8xSYQPITGhJ9z7iEt=1roW{>ajD?;Il^r>)k zRAO(hfXAI@$9c)tRu;$m4D0I`6xBLb>sbHvNr-y0OEOs}9=|3Mt`YpxV}GxR$0I#l zIkvYiaX3<_g$AbQp?{k#OsB0=P@AMPEfR@qV$mzUhRXy3We#MYPajqBV(yS7FS|ao zg+}^?g($kwqpRuC#}GEq+E6NKL?Sg#gBAS#az7I@k7BXS{Cs$%UtEk)sIXfTK*YC;@d^S{kvBDzBs5#B^$0RvcDx)y`=9Of$FH8Y^&DZO5TGCB>y|B{>Btr6e z&psxF@>{JXN0!IJQgV1%;1`S7;XUt*K8wX>I$yPTEQnYY@Hb&Bbc+RX5i-l=zI2`Z G)XoVBSyx~H diff --git a/PowerEditor/src/icons/standard/panels/treeview/fb_root_open.ico b/PowerEditor/src/icons/standard/panels/treeview/fb_root_open.ico new file mode 100644 index 0000000000000000000000000000000000000000..e8092430c2f53d1723beeb4129774b5e53c05ccd GIT binary patch literal 1150 zcmdr~y>8l27`>JH0GT>>>`0}mS^E$u&(OzclLd##>QeClog%Up1?mOJQsV^(hE}p2 zsfmcO2_k7})tsJVV@lMnU3$^sn(KRhzVE}B2mI{p7=AxCFCQB7$Qbj4;1N&qb8hAZ z-~EeaSp!(s87hQTA+!tC_0F@(_WAm5kwu&&{(&S}AxT$A`5XmHO#C?}lLdT#fu5Vf z^K$67b$Et?e@Oo{ULlBX5QIyN{cH4xbKXzjI9K@KOwl;GK;u2p_=27{L!~;{@Rc>D zcNi@Z&{y!O;q_A9%{^PvXk6fgeB}_Q@K@c+9g-)AA2Q2$bPZRz-5Bo2lv$=(9_1IO z;7cn>e%GIy3 zI+tkjS-mNh?2WfFXg+s$K>g@E^Y&CHXV>Y*Xt%j{;!R&Q-_p}J_xOdzQC<8MT+PfS zuN`L^8K1MY?GX-M4Y2$C-5-2u6#lBeK>mODn&r0bF`n)Ioh$w^{p??7tqM STs|ebDDQQ#N9f-Fw0;4&YB*;A literal 0 HcmV?d00001 diff --git a/PowerEditor/src/icons/standard/panels/treeview/funcList_leaf.bmp b/PowerEditor/src/icons/standard/panels/treeview/funcList_leaf.bmp deleted file mode 100644 index 0ff2ba6b7fe7286f5dfb119b2d9610ee93f7af54..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 822 zcmZ?rHDhJ~12Z700mK4O%*Y@C7H0s;3v)v-M1XorOF1;yIDSUS388NPYd*kiO zfE5h}^`+{iuP?sFujR$X7pnqRo=HDlr&l-4VrsQ^)rYGeAX-*`_`dql(>3SLtlhnJ z-SRm=!6&Dl08PG}ed$Wx<$8m<`8M)2`=#%G&;Rv)?z`zh(`xi^ zn!h|?8C3D?U%zMk`aSd4^BK=3`b~hl2WSh>igjDotee>d6g=N?{?YnJzgL45&-nFf z!b_mYmuFw#>d_bwC1nI>zvMU*E(EOk|h`p&@Fk?*XPp6%<+y`31HU-{ z7oA1ZaWtDRmLTM^5bkavN+M!stjrh!kTRJE~@g&={o%Yx8 mB=x8y%BaU0sCwU^Y$?CiHhr}@3PPbL?YD>Ab#7Dpm-`pKVAbgW literal 0 HcmV?d00001 diff --git a/PowerEditor/src/icons/standard/panels/treeview/funcList_node.bmp b/PowerEditor/src/icons/standard/panels/treeview/funcList_node.bmp deleted file mode 100644 index c35f6e4d862de5ce489bf29f5c99c2e2afcf1c06..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 822 zcmZ?rHDhJ~12Z700mK4O%*Y@C7H0s;3v)v-M1X-D5&Z5b{99GmROD)B;qt zHQDsW>}Y~orZ?mR5m4p-vol|AsUfHZs2J!bp!q~Etrb=D(1npz|}vz{;*fK2dD*Z6p#T_22?Dw?HybTL_JXPW}8iS3T^|n0ND^N z5XJtdKbjnPufOj-Pf{aLF$CSrx$$f5uirC%A!`v?^|1Bf*X-+G0zg_m$ZmZH)B?Dva51?9r4wJ>u0#^+81=yA^ j+1Ef06Q6Mc;v|SHnqp)vK);|VhR9+iA$~zN8B-YmudXXS diff --git a/PowerEditor/src/icons/standard/panels/treeview/funcList_node.ico b/PowerEditor/src/icons/standard/panels/treeview/funcList_node.ico new file mode 100644 index 0000000000000000000000000000000000000000..2d9bee1dd768430125795f3ffc22dbcdf69b9706 GIT binary patch literal 1150 zcmc(bze_?<6vuDTsO6x!R5Uge4P{e9&>xVrx@A(JX3)~$U`4iMV?Gs{!-$~NF>DLP zC?!*C=(RPN&wheI-_CueyoU(t(!Jb!dFOk+pL5P*tc$iz$LJnr%RP+sGsZ^fP>3Sc zI6Z8JwEtYf1Vg9wqgE4gAqxU+F!ntz_&rV($oG>9;5p_-A!tFUMTURVRqvPA#uYIl z?!P{|>sqs!{2qrYM`ol1B-dtD@#cPKLmp=|%kNu1P-%XeUzzJ0-Bo=nwO;ZL#Y)g9 z7)t-y^eG-z@8KJ3WbnFk$ucJ6MU0=9pk3IK|2y~dlXv7$Ij-Pas1PHsVi>|Aw#5(F z@7`gS84?B~FVGM}*>vOD literal 0 HcmV?d00001 diff --git a/PowerEditor/src/icons/standard/panels/treeview/project_file.bmp b/PowerEditor/src/icons/standard/panels/treeview/project_file.bmp deleted file mode 100644 index 17ff75e0cf767f53d7ad8141c663ca6dbc0f1c49..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 822 zcmaiy%WA?<6h%`yFCF$1`UQSK=lx74B8uQ3glL0lw2hApQk5Vfpr9xb<6CP7UF6ze zlhkgwcW~}HJNq1cdd}QRp)%Z$ocr^+ksiXj#QW==IHDj)nx+kh!)CMjepRhj3k(^1?s5`3hsAzxYn4W11$0x~{)yTBTA^RaH@x-EQ}b{A4m= eT@g$Re)PY@laG)(0+zkX;m#buaA7aGPt- z@l<0IFuuv8ri-3Fb*fHPJI)h62L}${&z)CK9p{Vz(67Ryn2U=qrhm<56OBd# zwR#=LC#R^@j!~&rv0Sd%l57v}xyoo~Vz6gaz-XbVg=iq0>-7r3Y=PN)Zn%8T$u@ub zg5?XXRtxnr^43mJtyEF|_yOgrias57P%zr_7VZEBaP*i6fSBMntRSio8L9 z>EjglH+T4XeQkOqGiUMQi}o^ur)PD1`dmS|Tt@Lt39kn1J>HSwh<7O(!~ zABG_{P7$s`tim;d`2zFV3^#Xo#Aq`&Ry&z9i0XoUi`E3Vt&AVfra~xaRKi{?eDZmf9q~ O*l2XM$1B+X{rv{JL?aXc literal 0 HcmV?d00001 diff --git a/PowerEditor/src/icons/standard/panels/treeview/project_file_invalid.bmp b/PowerEditor/src/icons/standard/panels/treeview/project_file_invalid.bmp deleted file mode 100644 index a6377ffd184be538a52fe9f90a991ee2a7cbf437..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 822 zcmaKqF-QVo7=};8#;DC83ZX$-+T4Pu*_LQ1TB3-crUtFa&B1Wdp{X@$&`k&_IL|Cn zYiMYbONA5fv{UcSJ1x9k@2^8V^M(H(UZ3ydxgS@(9y?{kgWHWW^?PiT)95Mu{xC@n zDJY7j=~Ahb%jKR&#UFi~-Ap>x?q)WUrx&k)5x|{J=i8F=8`gc0b@@5R8E@M!OswAr zuL|I?*uwUUxh;C{Qg#M(%BNAjPy1mJ%}D;s2sGj^J^e4vfQZJ*6S&*$F6=PjMB5wD zr~SGssIPKD0_R4ffz2Q>E6Z{wlVMrb{9ZVqgfIzApk1w2!B;AkbUJOq f7|G}JcnZ^h&;dQeFoQ7oa=DC=QGe%tHw6Cx^>T=a diff --git a/PowerEditor/src/icons/standard/panels/treeview/project_file_invalid.ico b/PowerEditor/src/icons/standard/panels/treeview/project_file_invalid.ico new file mode 100644 index 0000000000000000000000000000000000000000..8c884a2b950afe3f4fb5d2f5d2cacd64df263c08 GIT binary patch literal 1150 zcmb_bOKTHR7`;;Kx^6^4ss)iE_!ESJdtHbN9|&D2MO?W^>B?OZr66SC%B?79R|?__ z+f65}xNzg9ZJJa9Ng5}a%q@67qm^b}zQ^Rnk2rDV1D2kCL(xl~ z(Xqy0Fc?;nBp4*w{_)EyX75;-DgDIcQVZ(#HjZ5SgyrWurbmTbX^u@~O;h$EK0lkj z@dfkGTpWJ@Oq3$1(l1Ob)G&Q*-QX?q%d>y>NXQ*WG2%EjnpeN3KmvZug}rQ^f6n;n zuh5zp-jq1aiV#H+&fZ$b%G&^!%fQh^U}hPZd(_66n;F0OFSHsBDY?m8RC%?A3#IQ^ zc@yB>j}-S`_&9%W6XjR6TtE49uW2IQC4 z>h35%Y7wul>ryW(kkvD~ZQDk(*#y%y92vGc#1``tud$AYI!AfRTv)m0o$5GN@cZ?B b<41anm+ZaG-e#Xu*h3sRUD{s4Z;; zd#F8Bd#HG*HHS9UW^JPRG21n5nwkxEw>vvKyV;$c?XLJ4dwqfJrw(xOh9J!S`xr~BvFXkB1UUAj`1kBDhMtz${Y7{@OBnPSM-ReU(e|Cb-QB_a6bG3Xbv4!8i}giw`N6U++8xy zH~sL^b{e`2<9yp|03GlBmh(nw3~t)-bt@+09$;R`qtiJf{2d-$*1t0T zWz&BgU_uulnbq9MKhCRKqrYO^E#ruUuN2L*KhdeIAsQq+*5oGu^?lp(vFDq_HwZ0Y zl4OG_R_qtP2F%L^lt(1|HsC|=Kn=Ueoc4HGz4cjHR4^ozonm#HP|c;POPOKYRKOpf zl61#Q%H}f(_5FZ1(p!k{?dH8>&tp~ Ss>1VXs&alVu;Re~Tz3G7zD(i( diff --git a/PowerEditor/src/icons/standard/panels/treeview/project_folder_close.ico b/PowerEditor/src/icons/standard/panels/treeview/project_folder_close.ico new file mode 100644 index 0000000000000000000000000000000000000000..2a445b83f56cb88ed337108f3c5e410df11598b7 GIT binary patch literal 1150 zcmeH@&r1|x7{@2*5Af8vLx)ZsLM7WUp*nQxQsf~BlfX!_B#NRU!HUY#Nc0d1MNokx z2p)nCA{N%Nwz-nCJKO5IDr>F#V`gV|XLfczJzMQc|3Qb|m+w6DKF|C8zTf9jlr6IB z>J<5IS30&T$~Hw&b_ygVncsN{N{iI~#ntd2Onsk9^FV}p`LCQC`y|(|(eSWR)BZrE z{$Ax=L4;~AjdCZdJG}m8F``)vX<7PIgWC%RH|BM>DBU%hDM%I1|V*^`l6GXjb`q zhr^^Dk7w&Pk5-HH#7(+m7VVKdM;G!O3gy@n)Y%m<*x}dtlr7;K+T`zh8pd#3##1F; ztd|&GD{?1paY-~zYbM7<dYE8z9*afrsrWS*JDO^d7H5rO*xDti`-u> za7}bNqXkZi&XM^%2Sp=jxcG!q_3wM7;>mX0G6mPg^uQ23)p8k>etHvmE-zYiL<*cx z3w+JHG`-w>-#4a_%-amkZ*X@u!-dHtGwT*P(J;y$y2Pv?V|%~mR0f*I)Y|(kZ(`&e z7+N%W9L>|SpmWxrrqiF~Rw%>GxeQl>DK37_&>cwe!z|J~9;@*WOhm=ENB^3`K+I%h z$z)XePTMY4*_B=(=Xq?{kS=+Y#6au2r5b<#ghpBFl~oBYWtj$iFO=w-S)t3nM%Tv` w&IzsuR_XmBzUGoOe(Tf{ZBxs%zfaIUouF+x&Z!Rxj!njEcdE1gAOD`fPgu(482|tP literal 0 HcmV?d00001 diff --git a/PowerEditor/src/icons/standard/panels/treeview/project_folder_open.bmp b/PowerEditor/src/icons/standard/panels/treeview/project_folder_open.bmp deleted file mode 100644 index 5aae97e6b820afd68cb554bdc55ad1af40d95041..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 822 zcmcJLu}T9$5QbOm#nMOc1q{|=Yn3jwZxCO=QqaoO+E@vqA}CnID-IMpC5YMtjcDYE z5zQshGdVxcPt=YAnCEa7OuH?1R75&!@I diff --git a/PowerEditor/src/icons/standard/panels/treeview/project_folder_open.ico b/PowerEditor/src/icons/standard/panels/treeview/project_folder_open.ico new file mode 100644 index 0000000000000000000000000000000000000000..584cbc013fcae159b19084d72feb42d7c871ed4a GIT binary patch literal 1150 zcmds!KX21e6vZDBAD|O6BOibOVqyrLfh>rbfti#Kzy_kNR5dV?r9y}TO&ZjoN>GFx zQgtd-Qqe3`>Y&(8ZMTj8C605r_qk3yu(I%?lj}U^ciz3{32}iwGc$s|FN;SPg}5Yy zxI&^W+KKn6h+FjTU##qA57|u}+0SvkR??AK@8N1GR;FaovxW@)mMU}Ak@Rw#xccb; z^|KH^`XTD(0E!u)`r9Kpvc7Hi@veP>)%F=Sx}Nk&cs{#M+?o}ThFH;uc-`@_eB@%G zVPn2&V~%Pf_TZipK36la=RvZ}f0Q19$V3J*uAy;*ec#qEU zEtv!N%6WvYCHd2>MHKS)|H?9N9DIdJGq4VnBAS)wD8I_1{4$SHfhvjr_dl&a%Ktzb literal 0 HcmV?d00001 diff --git a/PowerEditor/src/icons/standard/panels/treeview/project_root.bmp b/PowerEditor/src/icons/standard/panels/treeview/project_root.bmp deleted file mode 100644 index f47dbc553007e320ca526514c26a18569ea19c8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 822 zcmbu7uWrLI5XLi&PlJ1eJwYF!u+qq2Y2aXCX<=btXkcMrq)Ag~prN6u;lb?p`O>V~ zrjc28Q2Xfky%JFO zq$#_bLFh)Fp1LGcD6MO%d-VLglXX`U>fFqwaN!nc?Ya-MDo4u1M>`5|l7imrh@9ypH+xIN%3E!O^i{Izg+ozWG%(AQ(TnsUi z$GKU%JbTO|I%No_h{xn??*{cfs9^*1^D2VI%YViQ>{pN%?~us}mg34_EQlkzuMr&Y z{t-tw1?JU|i4n4B3>BP1U3U=oDv;EW5F>Jr5jKm|b8rtw_KuLwJfupP{KRMOiM8wfGNw)&gIy4xw<{_|<_<5I`iA$ux1@npV-GLmCpZU>%ix~5M6)`cR zVIBU*J%p!4K>a|r@R7!2ELnFdhEU_K(GU&ZQv)${9Y#luyVhajhQ4m|mnx)Z0hWQw z^EwjGh8i`I=ygf|oU-vj4yrt_KzU8$gN}pRQ#pc~_UYSK!=ol=z$OEbQOB9luO?m0 zdsWj@HEQMg)UU3;;Fi8Dyf$vhr)MUAHu<(*W9F2w7@g$)(F@tHV9GuuUV~=^VmQ3J z#D;tk^^0y9Q+uBr`{uW<2}mg?V@+*@_Wikz*_XgRFg1mzZ`gYWE7rfJCiU%;@lVf@Xr76{}+0WE|UNN literal 0 HcmV?d00001 diff --git a/PowerEditor/src/icons/standard/panels/treeview/project_work_space.bmp b/PowerEditor/src/icons/standard/panels/treeview/project_work_space.bmp deleted file mode 100644 index 13d5eacc9b0441f81a334711b428c69d6539dfed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 822 zcmZ?rHDhJ~12Z700mK4O%*Y@C7H0s;3v)v-M1X~ZRp;bkUiDGyDEdXl?QGq z3*1-|u(rs5RiXcie81&+zRU7_mw-vA*$tupi2y)d5cP+eB7n-*r|Yau(FP(QJ8X4q z;IeR^g+cCfd|YODI!ti|3NFw0gQ!2!76nm%c76#&z4!cpf|J!ilz*Zs?|6mXWM`m) z6@~r~^+(&Hq3RcuLe%>$4kAqMX zmmt_v7Yb2-WgVoRZa_b-n-9ChdfaU-d9Bhezs6RIu zs{ZYfIbejvBB1(XJ&DNbfgfVE>@{Ti_8?#H9iS`U6Y7pkb&dI?3;#ZP9Xr2D zmgP#=_c!Be?7HR@Vjc!|&eAr{U+=F7Zmdeg%j6dDyt=n!66{}gb$`IucT>gt;GAy+ XJsn_f-%$>l@5|a>7w^pV|3CE)zrkkR literal 0 HcmV?d00001 diff --git a/PowerEditor/src/icons/standard/panels/treeview/project_work_space_dirty.bmp b/PowerEditor/src/icons/standard/panels/treeview/project_work_space_dirty.bmp deleted file mode 100644 index 7685aba0c7fb70754c2b1420d05bfa90df72d0d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 822 zcmb7>O-lk%6ow~Swh7v_cfLUp1r^bSA&O|CxDiDZ*KS;k{u1#o6cI!bQ4B;94I(s7 zAEQ##%AJe0y>rhnM2Ob#-pje~JolV?&pkK{ZFB4kVU{s=ow3F3GoQo%y&W24aNPC( zzgWzSM$JgX42LIyfZ_KWUhku-j#YJ}C=ZHq&osnLx#RJtrS-K@E}ux)yda$M{3(Q( z<=18TRur$8e+(0~D1S2fOnkFBCti}YYIO!xD${a#>hT-_P*t7yRO&acD8qVvR;xK% zc>aX(W8%~47c3>|rqy~A#S6qJ-Du3+ErM_k)8{jY&tz;K<=X9coSDTVz%GwlzzhZ_ z#AmZMkA9+)NP<`tFIhiz^hB2La2=TFHu1UKE0!CDHzGctxA}g5u|@#!OvD!oHa{3F zG;O(3$O8b+M0~Mm5sxj<$|?YG?4LZG_3Cs!TplGzI2#GeQprM$+ad1tKD%9qr(J)X FzX3E!{mTFV diff --git a/PowerEditor/src/icons/standard/panels/treeview/project_work_space_dirty.ico b/PowerEditor/src/icons/standard/panels/treeview/project_work_space_dirty.ico new file mode 100644 index 0000000000000000000000000000000000000000..83a2aff6ea10e2521b62be8c75350222d43c47ae GIT binary patch literal 1150 zcmc&zOHKko5N#6=z{)i;Ks*FPdl81Mi#gJOClEI1+Q=m!@-eP~gc*Tl`Cfl!8gXlc zJgU07tKRFXMyV@&Yc+-6x_Y=)>P9Jb2Oxxqjl-yW?ES?jj_1;Gpik&7te%N>aUH*# zGhMeI$20L-;?7)(Mi9KZSNeH( z-oxaxcL3{D{TpHL>x^HQ^Rx5WV@^3{$r*5_Ikd1|h)}=ATi|Sm*+#N#8-Qz%o%6S5 zHhgcse|$@<&9l>Kae-IH-Yg!oojDu!pIVC5K?Wt)Mg{}NJ9HLn?hmmh7vFKkZ|AoU o?pXSK!@)bYJvf}rKh|^f)Bac33xb*m>hykTc^*CY{Qqgc0q;FD=Kufz literal 0 HcmV?d00001