mirror of
https://github.com/chibicitiberiu/rainmeter-studio.git
synced 2024-02-24 04:33:31 +00:00
Added MattKing's code to enable the standard "hand pointer" mouse cursor when you hover over a meter with any "MouseAction" on it or a button.
This behavior is ON by default. If you do not want the cursor change on a meter or button, set MouseActionCursor=0 on the Meter or button. Example of disabling mouse cursor change: [Meter] Meter=Image W=100 H=100 SolidColor=0,0,0,255 LeftMouseUpAction=!Execute ["http://rainmeter.net"] MouseActionCursor=0 Note: If you have a button with a meter (either image or text) on TOP of it, you will need to set MouseActionCursor=0 on the image/text meter even if it doesn't have a mouse action, or the button will not change cursors.
This commit is contained in:
parent
4771fafe87
commit
5560d6e72a
@ -64,6 +64,8 @@ CMeter::CMeter(CMeterWindow* meterWindow)
|
|||||||
m_AntiAlias = false;
|
m_AntiAlias = false;
|
||||||
m_DynamicVariables = false;
|
m_DynamicVariables = false;
|
||||||
m_Initialized = false;
|
m_Initialized = false;
|
||||||
|
m_HasMouseAction = false;
|
||||||
|
m_MouseActionCursor = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -271,6 +273,15 @@ void CMeter::ReadConfig(const WCHAR* section)
|
|||||||
m_MouseOverAction = parser.ReadString(section, L"MouseOverAction", L"");
|
m_MouseOverAction = parser.ReadString(section, L"MouseOverAction", L"");
|
||||||
m_MouseLeaveAction = parser.ReadString(section, L"MouseLeaveAction", L"");
|
m_MouseLeaveAction = parser.ReadString(section, L"MouseLeaveAction", L"");
|
||||||
|
|
||||||
|
m_MouseActionCursor = 0!= parser.ReadInt(section, L"MouseActionCursor", 1);
|
||||||
|
|
||||||
|
if(!m_MiddleMouseUpAction.empty() || !m_MiddleMouseDownAction.empty()
|
||||||
|
|| !m_LeftMouseUpAction.empty() || !m_LeftMouseDownAction.empty()
|
||||||
|
|| !m_RightMouseUpAction.empty() || !m_RightMouseDownAction.empty() )
|
||||||
|
{
|
||||||
|
m_HasMouseAction = true;
|
||||||
|
}
|
||||||
|
|
||||||
m_MeasureName = parser.ReadString(section, L"MeasureName", L"");
|
m_MeasureName = parser.ReadString(section, L"MeasureName", L"");
|
||||||
|
|
||||||
m_UpdateDivider = parser.ReadInt(section, L"UpdateDivider", 1);
|
m_UpdateDivider = parser.ReadInt(section, L"UpdateDivider", 1);
|
||||||
|
@ -59,6 +59,9 @@ public:
|
|||||||
std::wstring& GetMouseOverAction() { return m_MouseOverAction; };
|
std::wstring& GetMouseOverAction() { return m_MouseOverAction; };
|
||||||
std::wstring& GetMouseLeaveAction() { return m_MouseLeaveAction; };
|
std::wstring& GetMouseLeaveAction() { return m_MouseLeaveAction; };
|
||||||
|
|
||||||
|
bool HasMouseAction() { return m_HasMouseAction; };
|
||||||
|
bool HasMouseActionCursor() { return m_MouseActionCursor; };
|
||||||
|
|
||||||
void Hide() { m_Hidden = true; };
|
void Hide() { m_Hidden = true; };
|
||||||
void Show() { m_Hidden = false; };
|
void Show() { m_Hidden = false; };
|
||||||
bool IsHidden() { return m_Hidden; };
|
bool IsHidden() { return m_Hidden; };
|
||||||
@ -117,6 +120,9 @@ protected:
|
|||||||
std::wstring m_MouseOverAction;
|
std::wstring m_MouseOverAction;
|
||||||
std::wstring m_MouseLeaveAction;
|
std::wstring m_MouseLeaveAction;
|
||||||
|
|
||||||
|
bool m_HasMouseAction;
|
||||||
|
bool m_MouseActionCursor;
|
||||||
|
|
||||||
bool m_MouseOver;
|
bool m_MouseOver;
|
||||||
METER_POSITION m_RelativeX;
|
METER_POSITION m_RelativeX;
|
||||||
METER_POSITION m_RelativeY;
|
METER_POSITION m_RelativeY;
|
||||||
|
@ -2430,6 +2430,7 @@ LRESULT CMeterWindow::OnMouseMove(WPARAM wParam, LPARAM lParam)
|
|||||||
|
|
||||||
// Handle buttons
|
// Handle buttons
|
||||||
bool redraw = false;
|
bool redraw = false;
|
||||||
|
bool drawCursor = false;
|
||||||
std::list<CMeter*>::iterator j = m_Meters.begin();
|
std::list<CMeter*>::iterator j = m_Meters.begin();
|
||||||
for( ; j != m_Meters.end(); j++)
|
for( ; j != m_Meters.end(); j++)
|
||||||
{
|
{
|
||||||
@ -2441,7 +2442,18 @@ LRESULT CMeterWindow::OnMouseMove(WPARAM wParam, LPARAM lParam)
|
|||||||
{
|
{
|
||||||
redraw |= button->MouseMove(pos);
|
redraw |= button->MouseMove(pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if((*j)->HitTest(pos.x, pos.y) && (*j)->HasMouseActionCursor())
|
||||||
|
{
|
||||||
|
drawCursor = ((*j)->HasMouseAction() || button);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(drawCursor)
|
||||||
|
SetCursor(LoadCursor(NULL, IDC_HAND));
|
||||||
|
else
|
||||||
|
SetCursor(LoadCursor(NULL, IDC_ARROW));
|
||||||
|
|
||||||
if (redraw)
|
if (redraw)
|
||||||
{
|
{
|
||||||
Redraw();
|
Redraw();
|
||||||
@ -2856,6 +2868,7 @@ LRESULT CMeterWindow::OnLeftButtonDown(WPARAM wParam, LPARAM lParam)
|
|||||||
{
|
{
|
||||||
redraw |= button->MouseDown(pos);
|
redraw |= button->MouseDown(pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
if (redraw)
|
if (redraw)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user