mirror of
https://github.com/chibicitiberiu/rainmeter-studio.git
synced 2024-02-24 04:33:31 +00:00
1) Added MattKing's code for supporting the middle mouse button in [Rainmeter] and [MeasureName].
MiddleMouseUpAction | MiddleMouseDownAction 2) Updated the manual entries for the middle mouse functionality 3) Added spx268's code to fix a problem with BUTTON and dynamic variables addressed in: http://code.google.com/p/rainmeter/issues/detail?id=108
This commit is contained in:
@ -1401,8 +1401,10 @@ void CMeterWindow::ReadSkin()
|
||||
|
||||
m_RightMouseDownAction = m_Parser.ReadString(L"Rainmeter", L"RightMouseDownAction", L"");
|
||||
m_LeftMouseDownAction = m_Parser.ReadString(L"Rainmeter", L"LeftMouseDownAction", L"");
|
||||
m_MiddleMouseDownAction = m_Parser.ReadString(L"Rainmeter", L"MiddleMouseDownAction", L"");
|
||||
m_RightMouseUpAction = m_Parser.ReadString(L"Rainmeter", L"RightMouseUpAction", L"");
|
||||
m_LeftMouseUpAction = m_Parser.ReadString(L"Rainmeter", L"LeftMouseUpAction", L"");
|
||||
m_MiddleMouseUpAction = m_Parser.ReadString(L"Rainmeter", L"MiddleMouseUpAction", L"");
|
||||
m_MouseOverAction = m_Parser.ReadString(L"Rainmeter", L"MouseOverAction", L"");
|
||||
m_MouseLeaveAction = m_Parser.ReadString(L"Rainmeter", L"MouseLeaveAction", L"");
|
||||
m_OnRefreshAction = m_Parser.ReadString(L"Rainmeter", L"OnRefreshAction", L"");
|
||||
@ -2931,6 +2933,56 @@ LRESULT CMeterWindow::OnRightButtonUp(WPARAM wParam, LPARAM lParam)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
** OnMiddleButtonDown
|
||||
**
|
||||
** Runs the action when middle mouse button is down
|
||||
**
|
||||
*/
|
||||
LRESULT CMeterWindow::OnMiddleButtonDown(WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
POINT pos;
|
||||
pos.x = (SHORT)LOWORD(lParam);
|
||||
pos.y = (SHORT)HIWORD(lParam);
|
||||
if (m_Message == WM_NCMBUTTONDOWN)
|
||||
{
|
||||
// Transform the point to client rect
|
||||
RECT rect;
|
||||
GetWindowRect(m_Window, &rect);
|
||||
pos.x = pos.x - rect.left;
|
||||
pos.y = pos.y - rect.top;
|
||||
}
|
||||
|
||||
DoAction(pos.x, pos.y, MOUSE_MMB_DOWN, false);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
** OnMiddleButtonUp
|
||||
**
|
||||
** Runs the action when middle mouse button is up
|
||||
**
|
||||
*/
|
||||
LRESULT CMeterWindow::OnMiddleButtonUp(WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
POINT pos;
|
||||
pos.x = (SHORT)LOWORD(lParam);
|
||||
pos.y = (SHORT)HIWORD(lParam);
|
||||
if (m_Message == WM_NCMBUTTONUP)
|
||||
{
|
||||
// Transform the point to client rect
|
||||
RECT rect;
|
||||
GetWindowRect(m_Window, &rect);
|
||||
pos.x = pos.x - rect.left;
|
||||
pos.y = pos.y - rect.top;
|
||||
}
|
||||
|
||||
DoAction(pos.x, pos.y, MOUSE_MMB_UP, false);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
** OnContextMenu
|
||||
**
|
||||
@ -3016,6 +3068,24 @@ bool CMeterWindow::DoAction(int x, int y, MOUSE mouse, bool test)
|
||||
}
|
||||
break;
|
||||
|
||||
case MOUSE_MMB_DOWN:
|
||||
|
||||
if (!((*j)->GetMiddleMouseDownAction().empty()))
|
||||
{
|
||||
if (!test) m_Rainmeter->ExecuteCommand((*j)->GetMiddleMouseDownAction().c_str(), this);
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
|
||||
case MOUSE_MMB_UP:
|
||||
|
||||
if (!((*j)->GetMiddleMouseUpAction().empty()))
|
||||
{
|
||||
if (!test) m_Rainmeter->ExecuteCommand((*j)->GetMiddleMouseUpAction().c_str(), this);
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
|
||||
case MOUSE_OVER:
|
||||
if (!(*j)->IsMouseOver())
|
||||
{
|
||||
@ -3220,6 +3290,10 @@ LRESULT CALLBACK CMeterWindow::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPAR
|
||||
MESSAGE(OnLeftButtonDown, WM_LBUTTONDOWN)
|
||||
MESSAGE(OnLeftButtonUp, WM_LBUTTONUP)
|
||||
MESSAGE(OnLeftButtonUp, WM_NCLBUTTONUP)
|
||||
MESSAGE(OnMiddleButtonDown, WM_NCMBUTTONDOWN)
|
||||
MESSAGE(OnMiddleButtonDown, WM_MBUTTONDOWN)
|
||||
MESSAGE(OnMiddleButtonUp, WM_MBUTTONUP)
|
||||
MESSAGE(OnMiddleButtonUp, WM_NCMBUTTONUP)
|
||||
MESSAGE(OnWindowPosChanging, WM_WINDOWPOSCHANGING)
|
||||
MESSAGE(OnCopyData, WM_COPYDATA)
|
||||
MESSAGE(OnDelayedExecute, WM_DELAYED_EXECUTE)
|
||||
|
Reference in New Issue
Block a user