From 58a3f6e84690bf949ccefcdd2066015ee8bcec59 Mon Sep 17 00:00:00 2001 From: cxl Date: Sat, 27 Sep 2014 15:46:58 +0000 Subject: [PATCH] CtrlLib: Fixed ReleaseCapture/LeftDown issue, ide: Fixed layout des duplicate when scrolled git-svn-id: svn://ultimatepp.org/upp/trunk@7736 f0d560ea-af0d-0410-9eb7-867de7ffcac7 --- uppsrc/CtrlLib/ColumnList.cpp | 1 + uppsrc/CtrlLib/DocEdit.cpp | 1 + uppsrc/CtrlLib/LineEdit.cpp | 1 + uppsrc/CtrlLib/SliderCtrl.cpp | 1 + uppsrc/CtrlLib/Splitter.cpp | 1 + uppsrc/ide/LayDes/LayDes.h | 2 +- uppsrc/ide/LayDes/laydes.cpp | 6 +++--- 7 files changed, 9 insertions(+), 4 deletions(-) diff --git a/uppsrc/CtrlLib/ColumnList.cpp b/uppsrc/CtrlLib/ColumnList.cpp index 7f82c7dc9..27c17408e 100644 --- a/uppsrc/CtrlLib/ColumnList.cpp +++ b/uppsrc/CtrlLib/ColumnList.cpp @@ -134,6 +134,7 @@ void ColumnList::LeftUp(Point p, dword flags) Refresh(); SyncInfo(); } + ReleaseCapture(); } void ColumnList::LeftDrag(Point p, dword keyflags) diff --git a/uppsrc/CtrlLib/DocEdit.cpp b/uppsrc/CtrlLib/DocEdit.cpp index 1c592ed1b..dff3e8755 100644 --- a/uppsrc/CtrlLib/DocEdit.cpp +++ b/uppsrc/CtrlLib/DocEdit.cpp @@ -281,6 +281,7 @@ void DocEdit::LeftUp(Point p, dword flags) SetFocus(); } selclick = false; + ReleaseCapture(); } void DocEdit::MouseMove(Point p, dword flags) { diff --git a/uppsrc/CtrlLib/LineEdit.cpp b/uppsrc/CtrlLib/LineEdit.cpp index c52700de7..6251ef8a3 100644 --- a/uppsrc/CtrlLib/LineEdit.cpp +++ b/uppsrc/CtrlLib/LineEdit.cpp @@ -598,6 +598,7 @@ void LineEdit::LeftUp(Point p, dword flags) SetFocus(); } selclick = false; + ReleaseCapture(); } void LineEdit::RightDown(Point p, dword flags) diff --git a/uppsrc/CtrlLib/SliderCtrl.cpp b/uppsrc/CtrlLib/SliderCtrl.cpp index e43edce26..354e175b3 100644 --- a/uppsrc/CtrlLib/SliderCtrl.cpp +++ b/uppsrc/CtrlLib/SliderCtrl.cpp @@ -107,6 +107,7 @@ void SliderCtrl::LeftUp(Point pos, dword keyflags) if (HasCapture()) WhenSlideFinish(); Refresh(); + ReleaseCapture(); } void SliderCtrl::MouseMove(Point pos, dword keyflags) diff --git a/uppsrc/CtrlLib/Splitter.cpp b/uppsrc/CtrlLib/Splitter.cpp index ba42b95f3..8aeed91d4 100644 --- a/uppsrc/CtrlLib/Splitter.cpp +++ b/uppsrc/CtrlLib/Splitter.cpp @@ -128,6 +128,7 @@ int Splitter::FindIndex(Point client) const { void Splitter::LeftUp(Point p, dword keyflags) { if(HasCapture()) WhenSplitFinish(); + ReleaseCapture(); Refresh(); } diff --git a/uppsrc/ide/LayDes/LayDes.h b/uppsrc/ide/LayDes/LayDes.h index 55e2de0ec..2503b4d85 100644 --- a/uppsrc/ide/LayDes/LayDes.h +++ b/uppsrc/ide/LayDes/LayDes.h @@ -388,7 +388,7 @@ private: LayoutItem& CurrentItem(); void ItemClick(); - String SaveSelection(); + String SaveSelection(bool scrolled = false); LayoutData LoadLayoutData(const String& s); void Undo(); diff --git a/uppsrc/ide/LayDes/laydes.cpp b/uppsrc/ide/LayDes/laydes.cpp index 05f93028c..233e8feb5 100644 --- a/uppsrc/ide/LayDes/laydes.cpp +++ b/uppsrc/ide/LayDes/laydes.cpp @@ -977,9 +977,9 @@ void LayDes::Delete() ReloadItems(); } -String LayDes::SaveSelection() +String LayDes::SaveSelection(bool scrolled) { - return CurrentLayout().Save(cursor, ZPoint(sb).y) + "\r\n"; + return CurrentLayout().Save(cursor, scrolled * ZPoint(sb).y) + "\r\n"; } LayoutData LayDes::LoadLayoutData(const String& s) @@ -1023,7 +1023,7 @@ void LayDes::Duplicate() return; SaveState(); LayoutData& l = CurrentLayout(); - LayoutData d = LoadLayoutData(SaveSelection()); + LayoutData d = LoadLayoutData(SaveSelection(false)); int q = Max(cursor) + 1; cursor.Clear(); for(int i = 0; i < d.item.GetCount(); i++) {