#6459 closed defect (fixed)
[with patch, positive review] make it so control-shift-enter sends a blank line to tinymce
Reported by: | William Stein | Owned by: | Kelly Boothby |
---|---|---|---|
Priority: | minor | Milestone: | sage-4.2 |
Component: | notebook | Keywords: | |
Cc: | Jason Grout | Merged in: | |
Authors: | Mitesh Patel | Reviewers: | Karl-Dieter Crisman, Jason Grout, William Stein |
Report Upstream: | N/A | Work issues: | |
Branch: | Commit: | ||
Dependencies: | Stopgaps: |
Description
From Pat LeSmithe: Control-enter is bound to spliteval_cell. To make control-shift-enter, say, insert a line break, try augmenting notebook.py's tinyMCE.init()'s setup with some code ripped from the Safari plug-in: // Around line 1840 of sage/server/notebook/notebook.py setup : function(ed) { ed.onKeyDown.add(function(ed, e) { // Make ctrl-shift-enter insert a line break. Copied from the Safari plug-in. if (e.keyCode == 13 && e.shiftKey && e.ctrlKey) { // Workaround for missing shift+enter support, http://bugs.webkit.org/show_bug.cgi?id=16973 var dom = ed.dom, s = ed.selection, r = s.getRng(), br; // Insert BR element r.insertNode(br = dom.create('br')); // Place caret after BR r.setStartAfter(br); r.setEndAfter(br); s.setRng(r); // Could not place caret after BR then insert an nbsp entity and move the caret if (s.getSel().focusNode == br.previousSibling) { s.select(dom.insertAfter(dom.doc.createTextNode('\u00a0'), br)); s.collapse(1); } // Scroll to new position, scrollIntoView can't be used due to bug: http://bugs.webkit.org/show_bug.cgi?id=16117 ed.getWin().scrollTo(0, dom.getPos(s.getRng().startContainer).y); tinymce.dom.Event.cancel(e); } }); // Make shift-enter quit editing. This is the "old" code. ed.onKeyDown.add(function(ed, e) { if (key_enter_shift(key_event(e))) { $(ed.formElement).submit(); } }) } This seems to work on Linux in Firefox, Opera, and the Qt 4.5 WebKit demo browser (e.g., /usr/lib64/qt4/demos/browser/browser).
Attachments (3)
Change History (17)
Changed 14 years ago by
Attachment: | trac_6459_tinymce_line_break.patch added |
---|
comment:1 follow-up: 2 Changed 14 years ago by
Authors: | → Mitesh Patel |
---|---|
Summary: | make it so control-shift-enter sends a blank line to tinymce → [with patch, needs review] make it so control-shift-enter sends a blank line to tinymce |
comment:2 Changed 14 years ago by
comment:3 Changed 14 years ago by
Cc: | Jason Grout added |
---|
comment:4 Changed 13 years ago by
Summary: | [with patch, needs review] make it so control-shift-enter sends a blank line to tinymce → [with patch, partial positive review, needs review] make it so control-shift-enter sends a blank line to tinymce |
---|
This does make FF3.5 work with this on OSX.5. Interestingly, this key-binding already worked in Safari 4 (and continues to now). Also, Ctrl-Enter appears to have same effect as Enter currently, so it already does something different than in an evaluation cell - for what that's worth.
I can't give a full positive review because I don't have access to any other browsers, nor am I competent to make sure it doesn't introduce a nasty bug, but partial positive review. The rest of a review should not be hard.
comment:5 Changed 13 years ago by
Unfortunately, neither the existing bindings nor the simple Ctrl-Enter combination work consistently across browsers and platforms. But if Ctrl-Enter happens to work, that's great!
For what it's worth: The patch still works in the latest versions of the browsers I list above. (Cr3 is now Cr4 on Linux.)
Changed 13 years ago by
Attachment: | trac_6459_tinymce_line_break_v2.patch added |
---|
Tweaked and rebased against #6568. Apply only this patch.
comment:6 Changed 13 years ago by
Summary: | [with patch, partial positive review, needs review] make it so control-shift-enter sends a blank line to tinymce → [with patch, needs review] make it so control-shift-enter sends a blank line to tinymce |
---|
Version 2:
- Applies to #6568.
- Fixes a problem with inserting a blank line when text is selected. I noticed this problem in Safari on Windows XP. This also fixes a related problem in Opera on Windows XP and Linux.
- Adds a few comments and dedents/indents.
I think this ticket should be reviewed again (sorry!), since I don't have access to a Mac machine.
comment:7 Changed 13 years ago by
Summary: | [with patch, needs review] make it so control-shift-enter sends a blank line to tinymce → [with patch, partial positive review, needs review] make it so control-shift-enter sends a blank line to tinymce |
---|
Still works on Mac. I still think needs review by someone who understands javascript and someone other than author who uses non-Mac. mpatel, maybe you can ping some of the people on the thread where "Pat LeSmithe?" makes the comment in the ticket description? This shouldn't be hard to review for them
comment:8 Changed 13 years ago by
Changed 13 years ago by
Attachment: | trac_6459_tinymce_line_break_v3.patch added |
---|
Initialization code moved to tinymce.js. Rebased for #7196. Apply only this patch.
comment:9 Changed 13 years ago by
Remark: The TinyMCE developers are emphatic about using P elements instead of BR elements. If the control-shift-enter
feature is broken, breaks, or otherwise causes problems, we might instead follow their CSS suggestion, p {margin:0; padding: 0;}
, inside rich text cells.
comment:10 Changed 13 years ago by
I think the issue here was making multi-paragraph list items. Maybe we could just make it so that pressing control-shift-enter in a list makes a new paragraph inside of an <li>.
It really seems that there should be an easier way of doing this. I guess we are hampered by shift-enter, ctrl-enter, and alt-enter having more global meaning.
comment:11 follow-up: 12 Changed 13 years ago by
On lists: I was working from this sage-devel post. The current patch should work inside lists, too.
On simplicity: I think many of TinyMCE's source lines are devoted to similar tricks, although they may well be far more effective.
Just let me know what I should do.
comment:12 Changed 13 years ago by
comment:13 Changed 13 years ago by
Resolution: | → fixed |
---|---|
Reviewers: | → kcrisman, jason, was |
Status: | needs_review → closed |
Summary: | [with patch, partial positive review, needs review] make it so control-shift-enter sends a blank line to tinymce → [with patch, positive review] make it so control-shift-enter sends a blank line to tinymce |
Emphatic positive review.
This is awesome!
Merged into sagenb-3.0.2, hence sage-4.2.
comment:14 Changed 13 years ago by
Reviewers: | kcrisman, jason, was → Karl-Dieter Crisman, Jason Grout, William Stein |
---|
Tested in Cr3, FF3.5, and O9 on Linux and Cr2, FF3.5, IE8, O9, and S4 on XP.