Add DarkMode Tooltips

Fix #9962, close #9963
This commit is contained in:
ozone10 2021-06-07 19:47:24 +02:00 committed by Don Ho
parent 2f51902e9c
commit 467870d66e
10 changed files with 66 additions and 2 deletions

View File

@ -997,6 +997,8 @@ HWND CreateToolTip(int toolID, HWND hDlg, HINSTANCE hInst, const PTSTR pszText)
return NULL;
}
NppDarkMode::setDarkTooltips(hwndTip, NppDarkMode::ToolTipsType::tooltip);
// Associate the tooltip with the tool.
TOOLINFO toolInfo = { 0 };
toolInfo.cbSize = sizeof(toolInfo);

View File

@ -1038,5 +1038,40 @@ namespace NppDarkMode
{
autoSubclassAndThemeChildControls(hwndParent, false, true);
}
}
void setDarkTooltips(HWND hwnd, ToolTipsType type)
{
if (NppDarkMode::isEnabled())
{
int msg = NULL;
switch (type)
{
case NppDarkMode::ToolTipsType::toolbar:
msg = TB_GETTOOLTIPS;
break;
case NppDarkMode::ToolTipsType::listview:
msg = LVM_GETTOOLTIPS;
break;
case NppDarkMode::ToolTipsType::treeview:
msg = TVM_GETTOOLTIPS;
break;
default:
msg = NULL;
break;
}
if (!msg)
{
SetWindowTheme(hwnd, L"DarkMode_Explorer", NULL);
}
else
{
auto hTips = reinterpret_cast<HWND>(SendMessage(hwnd, msg, NULL, NULL));
if (hTips != nullptr)
{
SetWindowTheme(hTips, L"DarkMode_Explorer", NULL);
}
}
}
}
}

View File

@ -20,6 +20,14 @@ namespace NppDarkMode
bool enableMenubar = false;
bool enableScrollbarHack = false;
};
enum class ToolTipsType
{
tooltip,
toolbar,
listview,
treeview
};
void initDarkMode(); // pulls options from NppParameters
void refreshDarkMode(HWND hwnd, bool forceRefresh = false); // attempts to apply new options from NppParameters, sends NPPM_INTERNAL_REFRESHDARKMODE to hwnd's top level parent
@ -73,5 +81,6 @@ namespace NppDarkMode
void autoSubclassAndThemeChildControls(HWND hwndParent, bool subclass = true, bool theme = true);
void autoThemeChildControls(HWND hwndParent);
}
void setDarkTooltips(HWND hwnd, ToolTipsType type);
}

View File

@ -105,6 +105,9 @@ INT_PTR CALLBACK FileBrowser::run_dlgProc(UINT message, WPARAM wParam, LPARAM lP
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;
_hToolbarMenu = CreateWindowEx(WS_EX_LAYOUTRTL, TOOLBARCLASSNAME, NULL, style, 0, 0, 0, 0, _hSelf, nullptr, _hInst, NULL);
NppDarkMode::setDarkTooltips(_hToolbarMenu, NppDarkMode::ToolTipsType::toolbar);
TBBUTTON tbButtons[3];
// Add the bmap image into toolbar's imagelist
TBADDBITMAP addbmp = { _hInst, 0 };

View File

@ -771,6 +771,8 @@ INT_PTR CALLBACK FunctionListPanel::run_dlgProc(UINT message, WPARAM wParam, LPA
_hToolbarMenu = CreateWindowEx(0,TOOLBARCLASSNAME,NULL, style,
0,0,0,0,_hSelf,nullptr, _hInst, NULL);
NppDarkMode::setDarkTooltips(_hToolbarMenu, NppDarkMode::ToolTipsType::toolbar);
oldFunclstToolbarProc = reinterpret_cast<WNDPROC>(::SetWindowLongPtr(_hToolbarMenu, GWLP_WNDPROC, reinterpret_cast<LONG_PTR>(funclstToolbarProc)));
TBBUTTON tbButtons[3];

View File

@ -303,6 +303,9 @@ void TabBarPlus::init(HINSTANCE hInst, HWND parent, bool isVertical, bool isMult
{
throw std::runtime_error("TabBarPlus::init : tooltip CreateWindowEx() function return null");
}
NppDarkMode::setDarkTooltips(_tooltips, NppDarkMode::ToolTipsType::tooltip);
::SendMessage(_hSelf, TCM_SETTOOLTIPS, reinterpret_cast<WPARAM>(_tooltips), 0);
if (!_hwndArray[_nbCtrl])

View File

@ -284,6 +284,9 @@ void ToolBar::reset(bool create)
NULL,
_hInst,
0);
NppDarkMode::setDarkTooltips(_hSelf, NppDarkMode::ToolTipsType::toolbar);
// Send the TB_BUTTONSTRUCTSIZE message, which is required for
// backward compatibility.
::SendMessage(_hSelf, TB_BUTTONSTRUCTSIZE, sizeof(TBBUTTON), 0);

View File

@ -18,6 +18,7 @@
#include <iostream>
#include <stdexcept>
#include "ToolTip.h"
#include "NppDarkMode.h"
void ToolTip::init(HINSTANCE hInst, HWND hParent)
{
@ -32,6 +33,8 @@ void ToolTip::init(HINSTANCE hInst, HWND hParent)
throw std::runtime_error("ToolTip::init : CreateWindowEx() function return null");
}
NppDarkMode::setDarkTooltips(_hSelf, NppDarkMode::ToolTipsType::tooltip);
::SetWindowLongPtr(_hSelf, GWLP_USERDATA, reinterpret_cast<LONG_PTR>(this));
_defaultProc = reinterpret_cast<WNDPROC>(::SetWindowLongPtr(_hSelf, GWLP_WNDPROC, reinterpret_cast<LONG_PTR>(staticWinProc)));
}

View File

@ -37,6 +37,8 @@ void TreeView::init(HINSTANCE hInst, HWND parent, int treeViewID)
_hInst,
(LPVOID)0);
NppDarkMode::setDarkTooltips(_hSelf, NppDarkMode::ToolTipsType::treeview);
int itemHeight = NppParameters::getInstance()._dpiManager.scaleY(CY_ITEMHEIGHT);
TreeView_SetItemHeight(_hSelf, itemHeight);

View File

@ -55,6 +55,8 @@ void VerticalFileSwitcherListView::init(HINSTANCE hInst, HWND parent, HIMAGELIST
throw std::runtime_error("VerticalFileSwitcherListView::init : CreateWindowEx() function return null");
}
NppDarkMode::setDarkTooltips(_hSelf, NppDarkMode::ToolTipsType::listview);
::SetWindowLongPtr(_hSelf, GWLP_USERDATA, reinterpret_cast<LONG_PTR>(this));
_defaultProc = reinterpret_cast<WNDPROC>(::SetWindowLongPtr(_hSelf, GWLP_WNDPROC, reinterpret_cast<LONG_PTR>(staticProc)));