Bug 387640 - [CSS] Cannot use selector restrictions for CTabItem
(cherry picked from commit 1a1b8be4f8950537b64706e6edea3609c5be5c7e)
diff --git a/bundles/org.eclipse.e4.ui.css.swt/src/org/eclipse/e4/ui/css/swt/dom/CTabItemElement.java b/bundles/org.eclipse.e4.ui.css.swt/src/org/eclipse/e4/ui/css/swt/dom/CTabItemElement.java
index b21b583..2a333aa 100644
--- a/bundles/org.eclipse.e4.ui.css.swt/src/org/eclipse/e4/ui/css/swt/dom/CTabItemElement.java
+++ b/bundles/org.eclipse.e4.ui.css.swt/src/org/eclipse/e4/ui/css/swt/dom/CTabItemElement.java
@@ -1,14 +1,18 @@
package org.eclipse.e4.ui.css.swt.dom;
import org.eclipse.e4.ui.css.core.engine.CSSEngine;
+import org.eclipse.swt.custom.CTabFolder;
+import org.eclipse.swt.custom.CTabItem;
import org.eclipse.swt.widgets.Item;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
public class CTabItemElement extends ItemElement {
public CTabItemElement(Item item, CSSEngine engine) {
super(item, engine);
}
-
+
protected void computeStaticPseudoInstances() {
super.computeStaticPseudoInstances();
// it's CTabFolder. Set selected as static pseudo instance.
@@ -18,4 +22,18 @@
super.addStaticPseudoInstance("selected");
}
+ public Node getParentNode() {
+ CTabItem item = getItem();
+ CTabFolder parent = item.getParent();
+ if (parent != null) {
+ Element element = getElement(parent);
+ return element;
+ }
+ return null;
+ }
+
+ private CTabItem getItem() {
+ return (CTabItem) getNativeWidget();
+ }
+
}
diff --git a/tests/org.eclipse.e4.ui.tests.css.swt/CSS SWT Test Suite.launch b/tests/org.eclipse.e4.ui.tests.css.swt/CSS SWT Test Suite.launch
index d3f1070..a5fc55a 100644
--- a/tests/org.eclipse.e4.ui.tests.css.swt/CSS SWT Test Suite.launch
+++ b/tests/org.eclipse.e4.ui.tests.css.swt/CSS SWT Test Suite.launch
@@ -33,7 +33,6 @@
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.e4.ui.tests.css.swt.CssSwtTestSuite"/>
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.e4.ui.tests.css.swt"/>
<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
-<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts"/>
<stringAttribute key="pde.version" value="3.3"/>
<stringAttribute key="product" value="org.eclipse.sdk.ide"/>
<booleanAttribute key="run_in_ui_thread" value="true"/>
diff --git a/tests/org.eclipse.e4.ui.tests.css.swt/src/org/eclipse/e4/ui/tests/css/swt/CTabItemTest.java b/tests/org.eclipse.e4.ui.tests.css.swt/src/org/eclipse/e4/ui/tests/css/swt/CTabItemTest.java
index 430c454..9211c39 100644
--- a/tests/org.eclipse.e4.ui.tests.css.swt/src/org/eclipse/e4/ui/tests/css/swt/CTabItemTest.java
+++ b/tests/org.eclipse.e4.ui.tests.css.swt/src/org/eclipse/e4/ui/tests/css/swt/CTabItemTest.java
@@ -11,6 +11,7 @@
package org.eclipse.e4.ui.tests.css.swt;
import org.eclipse.e4.ui.css.core.engine.CSSEngine;
+import org.eclipse.e4.ui.css.swt.dom.CTabItemElement;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.CTabFolder;
import org.eclipse.swt.custom.CTabItem;
@@ -647,4 +648,14 @@
folder.getItem(i), "color", "selected"));
}
}
+
+ public void testParent() {
+ CTabFolder folder = createTestTabFolder(
+ "CTabItem:selected { color: #00ff00 }", false);
+ for (int i = 0; i < folder.getItemCount(); i++) {
+ CTabItemElement element = (CTabItemElement) engine
+ .getElement(folder.getItem(i));
+ assertNotNull(element.getParentNode());
+ }
+ }
}