From 17b8d78fd194fbff0a71e96ccfbabec7baa476c0 Mon Sep 17 00:00:00 2001 From: cxl Date: Sun, 31 Mar 2013 18:37:10 +0000 Subject: [PATCH] ide: Improved Alt+J on layout item git-svn-id: svn://ultimatepp.org/upp/trunk@5941 f0d560ea-af0d-0410-9eb7-867de7ffcac7 --- uppsrc/ide/Assist.cpp | 10 +++++----- uppsrc/ide/LayDes/LayDes.h | 6 +++--- uppsrc/ide/LayDes/layfile.cpp | 8 ++++++-- uppsrc/ide/ide.h | 2 +- 4 files changed, 15 insertions(+), 11 deletions(-) diff --git a/uppsrc/ide/Assist.cpp b/uppsrc/ide/Assist.cpp index cf47cea32..ee1750441 100644 --- a/uppsrc/ide/Assist.cpp +++ b/uppsrc/ide/Assist.cpp @@ -1148,7 +1148,7 @@ void Ide::ContextGoto0(int pos) const Array& n = CodeBase()[q]; for(int i = 0; i < n.GetCount(); i++) { if(n[i].IsType() == istype && n[i].name == id) { - JumpToDefinition(n, i); + JumpToDefinition(n, i, scope[j]); return; } } @@ -1166,7 +1166,7 @@ void Ide::CtrlClick(int pos) ContextGoto0(pos); } -void Ide::JumpToDefinition(const Array& n, int q) +void Ide::JumpToDefinition(const Array& n, int q, const String& scope) { String qitem = n[q].qitem; int i = q; @@ -1200,8 +1200,8 @@ void Ide::JumpToDefinition(const Array& n, int q) EditFile(path); LayDesigner *l = dynamic_cast(~designer); if(l) { - if(pos.name.StartsWith("With")) - l->FindLayout(pos.name.Mid(4)); + if(scope.StartsWith("With")) + l->FindLayout(scope.Mid(4), pos.name); } else { editor.SetCursor(editor.GetPos(pos.line - 1)); @@ -1226,7 +1226,7 @@ void Ide::IdeGotoCodeRef(String coderef) const Array& n = CodeBase()[q]; q = FindItem(n, item); if(q >= 0) - JumpToDefinition(n, q); + JumpToDefinition(n, q, scope); } bool AssistEditor::Esc() diff --git a/uppsrc/ide/LayDes/LayDes.h b/uppsrc/ide/LayDes/LayDes.h index e8acd3e49..ae891ded4 100644 --- a/uppsrc/ide/LayDes/LayDes.h +++ b/uppsrc/ide/LayDes/LayDes.h @@ -436,8 +436,7 @@ private: void SaveEditPos(); void RestoreEditPos(); - void FindLayout(const String& name); - + void FindLayout(const String& name, const String& item_name); bool Load(const char *filename, byte charset); @@ -465,7 +464,8 @@ public: void Serialize(Stream& s) { designer.Serialize(s); } bool Load(const char *filename, byte cs) { return designer.Load(filename, cs); } - void FindLayout(const String& name) { designer.FindLayout(name); } + + void FindLayout(const String& name, const String& item) { designer.FindLayout(name, item); } LayDesigner() { parent.Add(designer.DesignerCtrl().SizePos()); } }; diff --git a/uppsrc/ide/LayDes/layfile.cpp b/uppsrc/ide/LayDes/layfile.cpp index 87b2bcdfa..a10220341 100644 --- a/uppsrc/ide/LayDes/layfile.cpp +++ b/uppsrc/ide/LayDes/layfile.cpp @@ -81,9 +81,13 @@ void LayDes::RestoreEditPos() SyncItems(); } -void LayDes::FindLayout(const String& name) +void LayDes::FindLayout(const String& name, const String& item_name) { - layoutlist.FindSetCursor(name); + if(layoutlist.FindSetCursor(name) && !IsNull(item_name)) { + int q = item.Find(item_name, 1); + if(q >= 0) + SelectOne(q, 0); + } } bool LayDes::Load(const char *file, byte _charset) diff --git a/uppsrc/ide/ide.h b/uppsrc/ide/ide.h index 81dd94f9a..d363fe5f9 100644 --- a/uppsrc/ide/ide.h +++ b/uppsrc/ide/ide.h @@ -1057,7 +1057,7 @@ public: bool OpenMainPackage(); void NewMainPackage(); - void JumpToDefinition(const Array& scope, int q); + void JumpToDefinition(const Array& n, int q, const String& scope); void SearchTopics(); void ShowTopics();