- Added !RainmeterWriteKeyValue. (based on MattKing's code)

!RainmeterWriteKeyValue "Section" "Key" "Value" ("FileSpec"), where "FileSpec" is an optional parameter. If FileSpec is not present, the change is automatically done in the currently running skin file. If the bang is executed from command line, FileSpec is required.

- Some improvements of MouseOver/Leave detection.

- Fixed the issue that window dragging brings on MouseLeave if "Show window contents while dragging" is not set.
- Fixed the issue that window dragging can't be begun by dragging the Button.
- Fixed the issue that a reaction of the upper Button penetrates to the lower Buttons or the other window.
This commit is contained in:
spx
2010-08-03 15:10:42 +00:00
parent d92f4f939d
commit 64888434c9
11 changed files with 802 additions and 437 deletions

View File

@ -54,6 +54,13 @@ enum MOUSE
MOUSE_LEAVE
};
enum BUTTONPROC
{
BUTTONPROC_DOWN,
BUTTONPROC_UP,
BUTTONPROC_MOVE
};
enum ZPOSITION
{
ZPOSITION_ONDESKTOP = -2,
@ -146,10 +153,12 @@ public:
void Refresh(bool init, bool all = false);
void Redraw();
void SetMouseLeaveEvent(bool cancel);
void MoveWindow(int x, int y);
void ChangeZPos(ZPOSITION zPos, bool all = false);
void FadeWindow(int from, int to);
Gdiplus::Bitmap* GetDoubleBuffer() { return m_DoubleBuffer; };
HWND GetWindow() { return m_Window; };
@ -226,6 +235,8 @@ protected:
LRESULT OnDisplayChange(WPARAM wParam, LPARAM lParam);
private:
bool HitTest(int x, int y);
void CreateRegion(bool clear);
void GetSkinFolders(const std::wstring& folder);
Gdiplus::Bitmap* GrabDesktop(int x, int y, int w, int h);
@ -241,7 +252,9 @@ private:
void InitializeMeasures();
void InitializeMeters();
void ShowWindowIfAppropriate();
void HandleButtons(POINT pos, BUTTONPROC proc, CMeterWindow* meterWindow, bool changeCursor);
bool DoAction(int x, int y, MOUSE mouse, bool test);
bool DoMoveAction(int x, int y, MOUSE mouse, CMeter* upperMeter = NULL);
bool ResizeWindow(bool reset);
void IgnoreAeroPeek();