provide the current node as selected object if only text is selected

Signed-off-by: Florian Thienel <florian@thienel.org>
diff --git a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/widget/swt/VexSelection.java b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/widget/swt/VexSelection.java
index f462108..5e19928 100644
--- a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/widget/swt/VexSelection.java
+++ b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/widget/swt/VexSelection.java
@@ -38,7 +38,7 @@
 
 	@Override
 	public boolean isEmpty() {
-		return true;
+		return false;
 	}
 
 	@Override
@@ -52,21 +52,25 @@
 	}
 
 	public INode getFirstElement() {
-		if (selectedFragment == null) {
+		if (!isStructureSelected()) {
 			return currentNode;
 		}
 		return selectedFragment.children().first();
 	}
 
+	private boolean isStructureSelected() {
+		return selectedFragment != null && !selectedFragment.children().withoutText().isEmpty();
+	}
+
 	public Iterator<INode> iterator() {
-		if (selectedFragment == null) {
+		if (!isStructureSelected()) {
 			return Collections.singletonList(currentNode).iterator();
 		}
 		return selectedFragment.children().iterator();
 	}
 
 	public int size() {
-		if (selectedFragment == null) {
+		if (!isStructureSelected()) {
 			return 1;
 		}
 		return selectedFragment.children().count();
@@ -77,7 +81,7 @@
 	}
 
 	public List<INode> toList() {
-		if (selectedFragment == null) {
+		if (!isStructureSelected()) {
 			return Collections.singletonList(currentNode);
 		}
 		return selectedFragment.children().asList();