### Eclipse Workspace Patch 1.0 #P org.eclipse.mylyn.tasks.ui Index: src/org/eclipse/mylyn/internal/tasks/ui/editors/RichTextEditor.java =================================================================== RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/RichTextEditor.java,v retrieving revision 1.4 diff -u -r1.4 RichTextEditor.java --- src/org/eclipse/mylyn/internal/tasks/ui/editors/RichTextEditor.java 24 Jul 2009 12:05:45 -0000 1.4 +++ src/org/eclipse/mylyn/internal/tasks/ui/editors/RichTextEditor.java 11 Aug 2009 23:01:22 -0000 @@ -43,6 +43,8 @@ import org.eclipse.swt.events.FocusAdapter; import org.eclipse.swt.events.FocusEvent; import org.eclipse.swt.events.FocusListener; +import org.eclipse.swt.events.MouseAdapter; +import org.eclipse.swt.events.MouseEvent; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.widgets.Composite; @@ -131,6 +133,8 @@ private String text; + private boolean stickyPreview = false; + public RichTextEditor(TaskRepository repository, int style) { this(repository, style, null, null); } @@ -239,9 +243,22 @@ unsetContext(); } }); + editorViewer.getTextWidget().addFocusListener(new FocusAdapter() { + @Override + public void focusLost(FocusEvent e) { + super.focusLost(e); + if (!stickyPreview) { + showPreview(false); + } + } + }); } configure(editorViewer, new Document(getText()), isReadOnly()); - show(editorViewer); + if (getPreviewViewer() != null) { + show(getPreviewViewer()); + } else { + show(editorViewer); + } } else { defaultViewer = createDefaultEditor(editorComposite, style); configure(defaultViewer, new Document(getText()), isReadOnly()); @@ -332,6 +349,17 @@ previewViewerStyle |= SWT.V_SCROLL; } previewViewer = extension.createViewer(repository, editorComposite, previewViewerStyle); + previewViewer.getTextWidget().addMouseListener(new MouseAdapter() { + @Override + public void mouseUp(MouseEvent e) { + super.mouseUp(e); + if (!stickyPreview) { + int offset = previewViewer.getTextWidget().getCaretOffset(); + showEditor(); + editorViewer.getTextWidget().setCaretOffset(offset); + } + } + }); configure(previewViewer, new Document(getText()), true); // adapt maximize action previewViewer.getControl().setData(EditorUtil.KEY_TOGGLE_TO_MAXIMIZE_ACTION, @@ -530,17 +558,23 @@ public void showEditor() { if (getEditorViewer() != null) { show(getEditorViewer()); + stickyPreview = false; } else { show(getDefaultViewer()); } } - public void showPreview() { + private void showPreview(boolean sticky) { if (!isReadOnly()) { show(getPreviewViewer()); + stickyPreview = sticky; } } + public void showPreview() { + showPreview(true); + } + private void unsetContext() { if (contextService == null) { return;