Fixed bug 48275: [navigation] abnormal lineup/linedown refresh when using ctrl related key mappings
diff --git a/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/TextNavigationAction.java b/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/TextNavigationAction.java
index daa0cb6..1db2b5b 100644
--- a/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/TextNavigationAction.java
+++ b/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/TextNavigationAction.java
@@ -13,8 +13,10 @@
package org.eclipse.ui.texteditor;
+import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.StyledText;
import org.eclipse.swt.events.HelpListener;
+import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.widgets.Event;
import org.eclipse.jface.action.IAction;
@@ -49,11 +51,52 @@
fAction= action;
}
+ /**
+ * Returns the text widget this actions is bound to.
+ *
+ * @return returns the text widget this actions is bound to
+ */
+ protected StyledText getTextWidget() {
+ return fTextWidget;
+ }
+
/*
* @see IAction#run()
*/
public void run() {
+ Point selection= fTextWidget.getSelection();
fTextWidget.invokeAction(fAction);
+ fireSelectionChanged(selection);
+ }
+
+ private void doFireSelectionChanged(Point selection) {
+ Event event= new Event();
+ event.x= selection.x;
+ event.y= selection.y;
+ fTextWidget.notifyListeners(SWT.Selection, event);
+ }
+
+ /**
+ * Sends a selection event with the current selection to all
+ * selection listeners of the action's text widget
+ *
+ * @since 3.0
+ */
+ protected void fireSelectionChanged() {
+ fireSelectionChanged(fTextWidget.getSelection());
+ }
+
+ /**
+ * Fires a selection event to all selection listener of the action's
+ * text widget if the current selection differs from the given selection.
+ *
+ * @param oldSelection the old selection
+ * @since 3.0
+ */
+ protected void fireSelectionChanged(Point oldSelection) {
+ Point selection= fTextWidget.getSelection();
+ if (oldSelection == null || !selection.equals(oldSelection))
+ doFireSelectionChanged(selection);
}
/*
@@ -191,8 +234,8 @@
public void removePropertyChangeListener(IPropertyChangeListener listener) {
}
- /*
- * @see IAction#setAccelerator(int)
+ /**
+ * @deprecated
*/
public void setAccelerator(int keycode) {
}