5 me.enterLieSubitem(me, sub.Container_origin, sub.Container_size, sub.Container_fontscale, sub.Container_alpha);
34 for (e = me.firstChild; e; e = e.nextSibling)
35 if (e.Container_alpha > 0) e.showNotify(e);
41 if (!me.shown)
return;
43 for (e = me.firstChild; e; e = e.nextSibling)
44 if (e.Container_alpha > 0) e.hideNotify(e);
57 other.Container_alpha = theAlpha;
65 for (e = me.firstChild; e; e = e.nextSibling)
69 me.enterLieSubitem(me, o, s, e.(fontScaleField), e.Container_alpha);
76 for (e = me.firstChild; e; e = e.nextSibling)
83 me.enterLieSubitem(me, o, s, e.(fontScaleField), e.Container_alpha);
89 SUPER(
Container).resizeNotify(me, relOrigin, relSize, absOrigin, absSize);
101 for (e = me.lastChild; e; e = e.prevSibling)
103 o = e.Container_origin;
104 s = e.Container_size;
105 if (pos.x < o.x)
continue;
106 if (pos.y < o.y)
continue;
107 if (pos.x >= o.x + s.x)
continue;
108 if (pos.y >= o.y + s.y)
continue;
118 me.focusable =
false;
119 for (e = me.firstChild; e; e = e.nextSibling)
121 if (e.focusable) me.focusable =
true;
122 if (e.Container_alpha < 0.003)
124 me.enterSubitem(me, e);
134 me.setFocus(me,
NULL);
139 entity f = me.focusedChild;
142 me.enterSubitem(me, f);
143 float r = f.keyUp(f, scan, ascii, shift);
152 entity f = me.focusedChild;
155 me.enterSubitem(me, f);
156 float r = f.keyDown(f, scan, ascii, shift);
165 entity f = me.focusedChild;
168 me.enterSubitem(me, f);
169 float r = f.mouseMove(f,
globalToBox(pos, f.Container_origin, f.Container_size));
177 entity f = this.focusedChild;
189 if (v.x < 0 || v.x > 1 || v.y < 0 || v.y > 1)
191 bool r = f.mousePress(f, v);
199 entity f = me.focusedChild;
202 me.enterSubitem(me, f);
203 float r = f.mouseDrag(f,
globalToBox(pos, f.Container_origin, f.Container_size));
211 entity f = me.focusedChild;
214 me.enterSubitem(me, f);
215 float r = f.mouseRelease(f,
globalToBox(pos, f.Container_origin, f.Container_size));
224 me.addItem(me,
other,
'0.5 0.5 0' - 0.5 * theSize, theSize, theAlpha);
229 me.addItem(me,
other,
'1 0.5 0' - 0.5 * theSize, theSize, theAlpha);
234 if (
other.parent)
error(
"Can't add already added item!");
236 if (
other.focusable) me.focusable =
true;
240 theOrigin.x -= 0.5 * (theSize.x - 1);
245 theOrigin.y -= 0.5 * (theSize.y - 1);
248 theOrigin.x =
bound(0, theOrigin.x, 1 - theSize.x);
249 theOrigin.y =
bound(0, theOrigin.y, 1 - theSize.y);
252 other.Container_origin = theOrigin;
253 other.Container_size = theSize;
257 other.Container_alpha = theAlpha;
261 if (l) l.nextSibling =
other;
262 else me.firstChild =
other;
264 other.prevSibling = l;
266 me.lastChild =
other;
271 if (
other.parent != me)
error(
"Can't remove from wrong container!");
273 if (
other.focusable) me.focusable =
false;
278 n =
other.nextSibling;
279 p =
other.prevSibling;
281 if (p) p.nextSibling = n;
282 else me.firstChild = n;
284 if (n) n.prevSibling = p;
285 else me.lastChild = p;
290 if (me.focusedChild ==
other)
return;
294 me.focusedChild.focused =
false;
295 me.focusedChild.focusLeave(me.focusedChild);
296 me.focusedChild =
NULL;
301 if (!me.focused)
error(
"Trying to set focus in a non-focused control!");
305 me.focusedChild = me.savedFocus;
306 me.savedFocus =
NULL;
307 me.focusedChild.focused =
true;
308 me.focusedChild.focusEnter(me.focusedChild);
310 if (me.focusedChild.instanceOfContainer)
311 me.focusedChild.setFocus(me.focusedChild, me.focusedChild.savedFocus);
315 me.focusedChild =
other;
316 me.focusedChild.focused =
true;
317 me.focusedChild.focusEnter(me.focusedChild);
324 me.savedFocus = me.focusedChild;
326 if (me.focusedChild.instanceOfContainer) me.focusedChild.saveFocus(me.focusedChild);
334 if (
other.parent != me)
error(
"Can't move in wrong container!");
336 n =
other.nextSibling;
337 p =
other.prevSibling;
339 if (p) p.nextSibling = n;
340 else me.firstChild = n;
342 if (n) n.prevSibling = p;
343 else me.lastChild = p;
348 else other.nextSibling = me.firstChild;
351 else me.firstChild =
other;
354 else me.lastChild =
other;
362 for (e = me.firstChild; e; e = e.nextSibling)
364 if (e.instanceOfContainer)
366 e2 = e.preferredFocusedGrandChild(e);
368 if (!
best ||
best.preferredFocusPriority < e2.preferredFocusPriority)
best = e2;
371 if (!
best ||
best.preferredFocusPriority < e.preferredFocusPriority)
best = e;
var entity(vector mins, vector maxs,.entity tofield) findbox_tofield_OrFallback
virtual void leaveSubitem()
virtual void enterSubitem()
virtual void mousePress()
void Container_resizeNotifyLie(entity me, vector relOrigin, vector relSize, vector absOrigin, vector absSize,.vector originField,.vector sizeField,.vector fontScaleField)
void Container_saveFocus(entity me)
void Container_resizeNotify(entity me, vector relOrigin, vector relSize, vector absOrigin, vector absSize)
float Container_mouseRelease(entity me, vector pos)
void Container_setFocus(entity me, entity other)
void Container_draw(entity me)
void Container_addItemRightCentered(entity me, entity other, vector theSize, float theAlpha)
void Container_hideNotify(entity me)
void Container_removeItem(entity me, entity other)
void Container_addItem(entity me, entity other, vector theOrigin, vector theSize, float theAlpha)
void Container_leaveSubitem(entity me)
void Container_setAlphaOf(entity me, entity other, float theAlpha)
float Container_keyUp(entity me, float scan, float ascii, float shift)
float Container_mouseDrag(entity me, vector pos)
entity Container_itemFromPoint(entity me, vector pos)
void Container_enterSubitem(entity me, entity sub)
void Container_showNotify(entity me)
float Container_keyDown(entity me, float scan, float ascii, float shift)
void Container_moveItemAfter(entity me, entity other, entity dest)
void Container_addItemCentered(entity me, entity other, vector theSize, float theAlpha)
entity Container_preferredFocusedGrandChild(entity me)
void Container_enterLieSubitem(entity me, vector o, vector s, vector f, float a)
float Container_mouseMove(entity me, vector pos)
void Container_focusLeave(entity me)
vector Container_fontscale
#define METHOD(cname, name, prototype)