Author: ben
Date: 2007-08-09 13:19:51 -0700 (Thu, 09 Aug 2007)
New Revision: 5985
Modified:
openlaszlo/branches/wafflecone/lps/components/incubator/rich-text/formatfontcolor.lzx
openlaszlo/branches/wafflecone/lps/components/incubator/rich-text/richtexteditarea.lzx
openlaszlo/branches/wafflecone/lps/components/incubator/rich-text/test/linkdialog-test.lzx
Log:
Change 20070808-ben-z by [EMAIL PROTECTED] on 2007-08-08 17:24:47 PDT
in /Users/ben/src/svn/openlaszlo/branches/wafflecone
for http://svn.openlaszlo.org/openlaszlo/branches/wafflecone
Summary: Cleanup of insertion point movement in rich text editor
New Features:
Bugs Fixed: LPP-4396 rich text editor: clicking bold moves insertion point
Technical Reviewer: max
QA Reviewer: mamye (pending)
Doc Reviewer: (pending)
Documentation:
Using the fix for LPP-4015 (Text selection position and size should be
available during onblur event) I sanitized the rich text editor's saving and
restoring of the selected region.
There is a new bug introduced with this checkin: LPP-4461: In rich text editor,
font color combo box does not update when cursor moves to different colored
text. I am tracking this down.
Release Notes:
Details:
richtexteditarea.lzx -- The big change here was in the onblur method. Now that
LPP-4015 has been fixed, we can store the correct selection range whenever
we're about to lose focus. I also undid a change suggested by an external
contributor, because it was causing problems in the new world, perhaps because
it was incompatible with the platform/wafflecone rich text editor.
linkdialog-test.lzx -- very explicitly created connections between the link
dialog and the editor.
formatfontcolor.lzx -- moved dataset describing color choices out of a state.
This will slow startup a little bit, but the whole thing doesn't work if the
color choices are in a state. (This state/dataset behavior interaction filed as
LPP-4469 for investigation.)
Tests:
Interactive test available here:
http://localhost:8080/wafflecone/lps/components/incubator/rich-text/test/richtexteditarea-test.lzx?debug=true&lzr=swf8
lzunit tests here:
http://localhost:8080/wafflecone/lps/components/incubator/rich-text/test/linkdialog-test.lzx?debug=true&lzr=swf8
http://localhost:8080/wafflecone/lps/components/incubator/rich-text/test/scrollrichedittext-test.lzx?debug=true&lzr=swf8
http://localhost:8080/wafflecone/lps/components/incubator/rich-text/test/richtexteditor-test.lzx?lzr=swf8&debug=true
http://localhost:8080/wafflecone/lps/components/incubator/rich-text/test/richtexteditarea-test.lzx?debug=true&lzr=swf8
Modified:
openlaszlo/branches/wafflecone/lps/components/incubator/rich-text/formatfontcolor.lzx
===================================================================
---
openlaszlo/branches/wafflecone/lps/components/incubator/rich-text/formatfontcolor.lzx
2007-08-09 18:54:34 UTC (rev 5984)
+++
openlaszlo/branches/wafflecone/lps/components/incubator/rich-text/formatfontcolor.lzx
2007-08-09 20:19:51 UTC (rev 5985)
@@ -10,7 +10,6 @@
<!-- Data: Font Color
inside of a state because datasets get instantiated upon application
init
the state delays instantiation until the RTE is used. -->
- <state name="fontColorData">
<dataset name="fontcolors">
<clr value="0x000000"/>
<clr value="0x555555"/>
@@ -21,7 +20,6 @@
<clr value="0xcc9933"/>
<clr value="0xcc3300"/>
</dataset>
- </state>
<!---
A class which is used as a combobox item
-->
@@ -54,7 +52,6 @@
apply state for late instantiation of local data -->
<method name="construct" args="parent, args">
super.construct(parent, args);
- fontColorData.apply();
</method>
<!--- When the user selects an item from the combo box,
create an object representing just the change in format.
Modified:
openlaszlo/branches/wafflecone/lps/components/incubator/rich-text/richtexteditarea.lzx
===================================================================
---
openlaszlo/branches/wafflecone/lps/components/incubator/rich-text/richtexteditarea.lzx
2007-08-09 18:54:34 UTC (rev 5984)
+++
openlaszlo/branches/wafflecone/lps/components/incubator/rich-text/richtexteditarea.lzx
2007-08-09 20:19:51 UTC (rev 5985)
@@ -209,17 +209,11 @@
@param view s: the view which is gaining the selection
-->
<method event="onblur" args="s">
+ var start = this._field.getSelectionPosition();
+ var size = this._field.getSelectionSize();
+ this._ssel = start;
+ this._esel = start + size;
this._fieldhasfocus = false;
- // If we're blurring and the focus is going to anything *but* the
toolbar
- // widgets, set _ssel and _esel to nothing.
- // Semantically, we want to get rid of the selection if we lose
focus.
- if (s != null) {
- // We're really giving focus to something else, so, forget
- // about whatever was selected while this component still had
focus.
- // It seems to "feel" right to me to move the cursor to the
end of
- // the text.
- this._ssel = this._esel = this.getText().length;
- }
</method>
@@ -251,44 +245,56 @@
is there a mousedown/mouseup pair in progress?
@param view who: the current mousedown element (ben shine)
-->
- <method event="onmouseup" reference="LzGlobalMouse" args="who">
+ <method event="onmouseup" reference="LzGlobalMouse" args="who"><![CDATA[
if (this._fieldhasfocus) {
// Debug.write("onmouseup, field has focus, who is ", who);
- // [bshine 07.28.2007] the next block is a new patch from
diamond
- this._caretmove();
if (this._mousedownorigin != null) {
// We have focus, and there _is_ a mousedown/mouseup pair
in progress.
- if (this._mousedownorigin == this) {
+ if (this._mousedownorigin == this || this._mousedownorigin
== this.inp) {
// The mouse click started on the richtext editor.
- // If the mouse click didn't end on the rich text
editor,
- // handle that.
- if (!inp.containsPt(this.getMouse("x"),
this.getMouse("y"))) {
- this._handleLostMouseDown();
+
+ // If the mouse click also ended on the rich text
editor,
+ // it's just a caret move.
+ if (inp.containsPt(this.getMouse("x"),
this.getMouse("y"))) {
+ this._caretmove();
+ } else {
+ // Debug.write("handleLostMouseDown");
+ // If the mouseclick ended anywhere but the rich
text editor,
+ // it's a lost mousedown.
+ this._handleLostMouseDown();
}
- }
+ } else {
+ // We have focus, and there's a mousedown/mouseup pair
in progress,
+ // and it started on one of the subviews of the RTE.
+ // Debug.write("lost mousedown, origin was ",
this._mousedownorigin);
+ }
+
+ } else {
+ // We have focus, but there's no mousedown/mouseup pair in
progress.
+ // Therefore, do nothing.
+ // Debug.write("No mousedown origin. The mousedown didn't
start on an RTE component.");
}
}
-
// Clear the mousedown attribute; a mouseup means that whatever
// the mousedown was, it's gone now.
this._mousedownorigin = null;
- </method>
+ ]]></method>
<!--- Save selected region. -->
<method name="saveSelectionRegion"><![CDATA[
- // [bshine 07.28.2007] See LPP-4015. Does this need to change now
that LPP-4015 has been changed?
if (LzFocus.getFocus() == this._field) {
var selpos = this._field.getSelectionPosition();
var selsize = this._field.getSelectionSize();
if( selpos >= 0 && selsize >= 0){
this.setAttribute('_ssel', selpos);
this.setAttribute('_esel', selpos + selsize );
+ // Debug.write("fascinating, storing selection of %d-%d",
this._ssel, this._esel);
}
- }
+ }
]]>
</method>
@@ -373,7 +379,6 @@
if (! this['_selectiondel']) {
this._selectiondel = new LzDelegate(this, '_restoreSelection');
}
-
// After the formatting has been completed, need to wait a frame to
// restore the selection.
LzIdle.callOnIdle(this._selectiondel);
@@ -385,7 +390,6 @@
if (! this['_focusseldel']) {
this._focusseldel = new LzDelegate(this, '_focussel');
}
-
LzIdle.callOnIdle(this._focusseldel);
</method>
@@ -402,7 +406,6 @@
@access private
-->
<method name="_caretmove">
- // Debug.write("caret");
// Don't do any of this if this field isn't already rich-text!
if (!this.isHTML) return;
@@ -418,7 +421,6 @@
// mouseout then mouseup not over richinputtext.
//------------------------------------------------------------
-
var selstart = this._field.getSelectionPosition();
var sellen = this._field.getSelectionSize();
var text = this.getText();
@@ -535,6 +537,7 @@
this._shouldresettoolbar = false;
this.setSelection(this._ssel, this._esel);
this._shouldresettoolbar = true;
+
</method>
<!--- Helper method to set an textformat to its default for this
Modified:
openlaszlo/branches/wafflecone/lps/components/incubator/rich-text/test/linkdialog-test.lzx
===================================================================
---
openlaszlo/branches/wafflecone/lps/components/incubator/rich-text/test/linkdialog-test.lzx
2007-08-09 18:54:34 UTC (rev 5984)
+++
openlaszlo/branches/wafflecone/lps/components/incubator/rich-text/test/linkdialog-test.lzx
2007-08-09 20:19:51 UTC (rev 5985)
@@ -18,7 +18,7 @@
<view x="20" y="80" width="${canvas.width-40}" height="${canvas.height-80}">
<!-- A very boring toolbar which only contains a link button -->
- <richtexttoolbar name="toolbar" editor="${grte}" height="30"
width="${parent.width-5}" x="2" y="0" bgcolor="0xD4D7E5">
+ <richtexttoolbar name="toolbar" height="30" width="${parent.width-5}"
x="2" y="0" bgcolor="0xD4D7E5">
<formatbtn name="linkbtn" id="linkbtn" format="link" iconname="link"
icony="3" y="2">
link
<method name="doClick">
@@ -42,6 +42,7 @@
border="10" text="For reasons which many persons thought
ridiculous, Mrs. Lightfoot Lee decided to pass the winter in Washington. She
was in excellent health, but she said that the climate would do her good. In
New York she had troops of friends, but she suddenly became eager to see again
the very small number of those who lived on the Potomac. It was only to her
closest intimates that she honestly acknowledged herself to be tortured by
ennui. Since her husband's death, five years before, she had lost her taste for
New York society; she had felt no interest in the price of stocks, and very
little in the men who dealt in them; she had become serious. What was it all
worth, this wilderness of men and women as monotonous as the brown stone houses
they lived in? In her despair she had resorted to desperate measures. She had
read philosophy in the original German, and the more she read, the more she was
disheartened that so much culture should lead to nothing... not!
hing.">
<method event="oninit">
this.setLinkPanel(ldlg);
+ linkbtn.setAttribute("editor", this);
</method>
</richtexteditarea>
@@ -75,6 +76,7 @@
assertFalse(fmt.url == "http://del.icio.us");
</method>
<method name="testShowingLinkDialog"><![CDATA[
+ Debug.write("linkbtn is... %w and linkbtn.editor is %w", linkbtn,
linkbtn.editor);
linkbtn.doClick();
Debug.write("height: ", ldlg.height);
assertTrue(ldlg.height > 0);
_______________________________________________
Laszlo-checkins mailing list
[email protected]
http://www.openlaszlo.org/mailman/listinfo/laszlo-checkins