Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorspingel2009-10-08 05:22:12 +0000
committerspingel2009-10-08 05:22:12 +0000
commitadc132a6c47f39aa85c458252f2294cb5e438bfa (patch)
tree6d3dda941798f5d9e362be1ffcbd81ec58cdccd3
parentb519c6a858285197e243af70284eab5e95c363c7 (diff)
downloadorg.eclipse.mylyn.tasks-adc132a6c47f39aa85c458252f2294cb5e438bfa.tar.gz
org.eclipse.mylyn.tasks-adc132a6c47f39aa85c458252f2294cb5e438bfa.tar.xz
org.eclipse.mylyn.tasks-adc132a6c47f39aa85c458252f2294cb5e438bfa.zip
NEW - bug 202709: [linux] mouse wheel does not scroll task editor when pointer is above description or combo box
https://bugs.eclipse.org/bugs/show_bug.cgi?id=202709
-rw-r--r--org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/editor/FlagAttributeEditor.java2
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/EditorUtil.java64
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/RichTextEditor.java1
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/SingleSelectionAttributeEditor.java3
4 files changed, 69 insertions, 1 deletions
diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/editor/FlagAttributeEditor.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/editor/FlagAttributeEditor.java
index e8f906858..9194663e3 100644
--- a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/editor/FlagAttributeEditor.java
+++ b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/editor/FlagAttributeEditor.java
@@ -11,6 +11,7 @@ package org.eclipse.mylyn.internal.bugzilla.ui.editor;
import java.util.Map;
import org.eclipse.core.runtime.Assert;
+import org.eclipse.mylyn.internal.tasks.ui.editors.EditorUtil;
import org.eclipse.mylyn.tasks.core.data.TaskAttribute;
import org.eclipse.mylyn.tasks.core.data.TaskDataModel;
import org.eclipse.mylyn.tasks.ui.editors.AbstractAttributeEditor;
@@ -71,6 +72,7 @@ public class FlagAttributeEditor extends AbstractAttributeEditor {
if (tooltip != null) {
combo.setToolTipText(tooltip);
}
+ EditorUtil.addScrollListener(combo);
Map<String, String> labelByValue = getAttributeMapper().getAssoctiatedAttribute(getTaskAttribute())
.getOptions();
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/EditorUtil.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/EditorUtil.java
index 21d5fa13b..bb93a3bcb 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/EditorUtil.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/EditorUtil.java
@@ -34,9 +34,13 @@ import org.eclipse.mylyn.tasks.core.data.TaskAttributeMapper;
import org.eclipse.mylyn.tasks.ui.editors.AbstractTaskEditorPage;
import org.eclipse.mylyn.tasks.ui.editors.TaskFormPage;
import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CCombo;
import org.eclipse.swt.custom.CTabFolder;
+import org.eclipse.swt.custom.ScrolledComposite;
import org.eclipse.swt.events.DisposeEvent;
import org.eclipse.swt.events.DisposeListener;
+import org.eclipse.swt.events.MouseEvent;
+import org.eclipse.swt.events.MouseWheelListener;
import org.eclipse.swt.events.PaintEvent;
import org.eclipse.swt.events.PaintListener;
import org.eclipse.swt.graphics.Color;
@@ -49,8 +53,11 @@ import org.eclipse.swt.layout.RowLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.ScrollBar;
+import org.eclipse.swt.widgets.Scrollable;
import org.eclipse.swt.widgets.Widget;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.actions.ActionFactory;
@@ -63,6 +70,7 @@ import org.eclipse.ui.forms.widgets.Section;
import org.eclipse.ui.forms.widgets.SharedScrolledComposite;
import org.eclipse.ui.internal.EditorAreaHelper;
import org.eclipse.ui.internal.WorkbenchPage;
+import org.eclipse.ui.internal.forms.widgets.FormUtil;
public class EditorUtil {
@@ -508,4 +516,60 @@ public class EditorUtil {
return (label.endsWith(":")) ? label.substring(0, label.length() - 1) : label; //$NON-NLS-1$
}
+ public static void scroll(ScrolledComposite scomp, int xoffset, int yoffset) {
+ Point origin = scomp.getOrigin();
+ Point contentSize = scomp.getContent().getSize();
+ int xorigin = origin.x + xoffset;
+ int yorigin = origin.y + yoffset;
+ xorigin = Math.max(xorigin, 0);
+ xorigin = Math.min(xorigin, contentSize.x - 1);
+ yorigin = Math.max(yorigin, 0);
+ yorigin = Math.min(yorigin, contentSize.y - 1);
+ scomp.setOrigin(xorigin, yorigin);
+ }
+
+ public static void addScrollListener(final Scrollable textWidget) {
+ if (textWidget.getVerticalBar() != null) {
+ textWidget.addMouseWheelListener(new MouseWheelListener() {
+ public void mouseScrolled(MouseEvent event) {
+ ScrollBar verticalBar = textWidget.getVerticalBar();
+ ScrolledComposite form = FormUtil.getScrolledComposite(textWidget);
+ if (verticalBar != null && form != null) {
+ if (event.count < 0) {
+ // scroll form down
+ if (verticalBar.getSelection() + verticalBar.getThumb() == verticalBar.getMaximum()) {
+ EditorUtil.scroll(form, 0, form.getVerticalBar().getIncrement());
+ }
+ } else {
+ // scroll form up
+ if (verticalBar.getSelection() == verticalBar.getMinimum()) {
+ EditorUtil.scroll(form, 0, -form.getVerticalBar().getIncrement());
+ }
+ }
+ }
+ }
+ });
+ }
+ }
+
+ public static void addScrollListener(final CCombo combo) {
+ combo.addListener(SWT.KeyDown, new Listener() {
+ public void handleEvent(Event event) {
+ if (event.keyCode == SWT.ARROW_UP) {
+ ScrolledComposite form = FormUtil.getScrolledComposite(combo);
+ if (form != null) {
+ EditorUtil.scroll(form, 0, -form.getVerticalBar().getIncrement());
+ event.doit = false;
+ }
+ } else if (event.keyCode == SWT.ARROW_DOWN) {
+ ScrolledComposite form = FormUtil.getScrolledComposite(combo);
+ if (form != null) {
+ EditorUtil.scroll(form, 0, form.getVerticalBar().getIncrement());
+ event.doit = false;
+ }
+ }
+ }
+ });
+ }
+
}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/RichTextEditor.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/RichTextEditor.java
index 0eb976eb8..68e79989d 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/RichTextEditor.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/RichTextEditor.java
@@ -203,6 +203,7 @@ public class RichTextEditor {
if (toolkit != null) {
toolkit.adapt(viewer.getControl(), false, false);
}
+ EditorUtil.addScrollListener(viewer.getTextWidget());
return viewer;
}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/SingleSelectionAttributeEditor.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/SingleSelectionAttributeEditor.java
index b18ab9ea6..4ff4c67d1 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/SingleSelectionAttributeEditor.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/SingleSelectionAttributeEditor.java
@@ -56,7 +56,7 @@ public class SingleSelectionAttributeEditor extends AbstractAttributeEditor {
}
@Override
- public void createControl(Composite parent, FormToolkit toolkit) {
+ public void createControl(final Composite parent, FormToolkit toolkit) {
if (isReadOnly()) {
text = new Text(parent, SWT.FLAT | SWT.READ_ONLY);
text.setFont(EditorUtil.TEXT_FONT);
@@ -82,6 +82,7 @@ public class SingleSelectionAttributeEditor extends AbstractAttributeEditor {
}
}
});
+ EditorUtil.addScrollListener(combo);
setControl(combo);
}
refresh();

Back to the top