From b267d9ceedfaf5daee3ed9105ce9c5b5f1102c90 Mon Sep 17 00:00:00 2001 From: rylek Date: Thu, 13 Oct 2011 05:49:30 +0000 Subject: [PATCH] .RichEdit/RichEdit.h, Mouse.cpp: fixed incorrect handling of object / field modifications in new customizable local menu implementation git-svn-id: svn://ultimatepp.org/upp/trunk@3996 f0d560ea-af0d-0410-9eb7-867de7ffcac7 --- uppsrc/RichEdit/Mouse.cpp | 37 ++++++++++++++++++------------------- uppsrc/RichEdit/RichEdit.h | 2 ++ 2 files changed, 20 insertions(+), 19 deletions(-) diff --git a/uppsrc/RichEdit/Mouse.cpp b/uppsrc/RichEdit/Mouse.cpp index 583f18f4f..71adf8235 100644 --- a/uppsrc/RichEdit/Mouse.cpp +++ b/uppsrc/RichEdit/Mouse.cpp @@ -189,20 +189,17 @@ void RichEdit::StdBar(Bar& menu) Id field; String fieldparam; String ofieldparam; - RichObject object, o; + RichObject object; if(GetSelection(l, h)) { -// if(c >= l && c < h) { CopyTool(menu); CutTool(menu); -// } PasteTool(menu); } else { if(objectpos >= 0) { - object = GetObject(); - if(!object) return; - o = object; - o.Menu(menu, context); + bar_object = GetObject(); + if(!bar_object) return; + bar_object.Menu(menu, context); if(!menu.IsEmpty()) menu.Separator(); menu.Add(t_("Object position.."), THISBACK(AdjustObjectSize)); @@ -228,12 +225,11 @@ void RichEdit::StdBar(Bar& menu) else { RichPos p = cursorp; field = p.field; - fieldparam = p.fieldparam; + bar_fieldparam = p.fieldparam; RichPara::FieldType *ft = RichPara::fieldtype().Get(field, NULL); if(ft) { - ofieldparam = fieldparam; fieldpos = cursor; - ft->Menu(menu, &fieldparam); + ft->Menu(menu, &bar_fieldparam); if(!menu.IsEmpty()) menu.Separator(); CopyTool(menu); @@ -264,20 +260,21 @@ void RichEdit::RightDown(Point p, dword flags) int c = GetMousePos(p); int fieldpos = -1; Id field; - String fieldparam; String ofieldparam; - RichObject object, o; + RichObject o; + bar_object.Clear(); + bar_fieldparam = Null; if(!GetSelection(l, h)) { LeftDown(p, flags); if(objectpos >= 0) - o = object = GetObject(); + o = bar_object = GetObject(); else { RichPos p = cursorp; field = p.field; - fieldparam = p.fieldparam; + bar_fieldparam = p.fieldparam; RichPara::FieldType *ft = RichPara::fieldtype().Get(field, NULL); if(ft) { - ofieldparam = fieldparam; + ofieldparam = bar_fieldparam; fieldpos = cursor; } } @@ -290,18 +287,20 @@ void RichEdit::RightDown(Point p, dword flags) menu.Execute(); paintcarect = false; Refresh(r); - if(object && o && o.GetSerialId() != object.GetSerialId()) - ReplaceObject(o); - if(fieldpos >= 0 && fieldparam != ofieldparam) { + if(bar_object && o && o.GetSerialId() != bar_object.GetSerialId()) + ReplaceObject(bar_object); + if(fieldpos >= 0 && bar_fieldparam != ofieldparam) { RichText::FormatInfo f = text.GetFormatInfo(fieldpos, 1); Remove(fieldpos, 1); RichPara p; - p.Cat(field, fieldparam, f); + p.Cat(field, bar_fieldparam, f); RichText clip; clip.Cat(p); Insert(fieldpos, clip, false); Finish(); } + bar_object.Clear(); + bar_fieldparam = Null; } void RichEdit::LeftDouble(Point p, dword flags) diff --git a/uppsrc/RichEdit/RichEdit.h b/uppsrc/RichEdit/RichEdit.h index f759540f8..18fe7dd9e 100644 --- a/uppsrc/RichEdit/RichEdit.h +++ b/uppsrc/RichEdit/RichEdit.h @@ -261,6 +261,8 @@ private: bool useraction, modified; bool singleline; static int fixedlang; + RichObject bar_object; + String bar_fieldparam; WithRichFindReplaceLayout findreplace;