protected Embedded() { layer.setHitTester(new Layer.HitTester() { @Override public Layer hitTest(Layer layer, Point point) { return CapturedRoot.this.layer.hitTest(point); } }); layer.setInteractive(true); }
protected Element () { // optimize hit testing by checking our bounds first layer.setHitTester(new Layer.HitTester() { public Layer hitTest (Layer layer, Point p) { Layer hit = null; if (isVisible() && contains(p.x, p.y)) { if (isSet(Flag.HIT_DESCEND)) hit = layer.hitTestDefault(p); if (hit == null && isSet(Flag.HIT_ABSORB)) hit = layer; } return hit; } @Override public String toString () { return "<" + size() + ">"; } }); // descend by default set(Flag.HIT_DESCEND, true); }
public MenuRoot (Interface iface, Stylesheet sheet, Pop pop) { super(iface, new RootLayout(iface.plat.input().hasTouch()), sheet); this.pop = pop; layer.setDepth(1); layer.setHitTester(null); // get hits from out of bounds add(pop.menu); } }
Box (String text, int color, float wid, float hei) { layer = new GroupLayer(wid, hei); layer.add(new Layer() { protected void paintImpl (Surface surface) { surface.setFillColor(0xff000000); float t = 0.5f, l = 0.5f, b = layer.height() - 0.5f, r = layer.width() - 0.5f; surface.drawLine(l, t, l, b, 1); surface.drawLine(r, t, r, b, 1); surface.drawLine(l, b, r, b, 1); surface.drawLine(l, t, r, t, 1); } }); label = createLabel(text, layer, 0xff000000, color, 0, 0, 40); layer.addAt(label, (wid - label.width()) / 2, (hei - label.height()) / 2); layer.setHitTester(this); }
/** * Creates a new menu using the given layout for its elements. */ public Menu (Layout layout) { super(layout); // use a hit tester "eater" to pretend our layer covers all its siblings layer.setHitTester(new Layer.HitTester() { @Override public Layer hitTest (Layer layer, Point p) { Layer descendant = layer.hitTestDefault(p); return descendant == null ? absorbHits() ? layer : null : descendant; } }); // deactivate the menu on any pointer events (children will still get theirs) layer.events().connect(new Pointer.Listener() { @Override public void onStart (Pointer.Interaction iact) { if (iact.hitLayer == layer) deactivate(); } }); childAdded().connect(_descendantAdded); childRemoved().connect(_descendantRemoved); }