[nexuiz-commits] r6486 - in trunk/data/qcsrc/menu: . item nexuiz
DONOTREPLY at icculus.org
DONOTREPLY at icculus.org
Tue Apr 14 09:16:33 EDT 2009
Author: div0
Date: 2009-04-14 09:16:33 -0400 (Tue, 14 Apr 2009)
New Revision: 6486
Modified:
trunk/data/qcsrc/menu/item.c
trunk/data/qcsrc/menu/item/button.c
trunk/data/qcsrc/menu/item/container.c
trunk/data/qcsrc/menu/item/gecko.c
trunk/data/qcsrc/menu/item/image.c
trunk/data/qcsrc/menu/item/label.c
trunk/data/qcsrc/menu/item/listbox.c
trunk/data/qcsrc/menu/item/modalcontroller.c
trunk/data/qcsrc/menu/menu.qc
trunk/data/qcsrc/menu/nexuiz/campaign.c
trunk/data/qcsrc/menu/nexuiz/demolist.c
trunk/data/qcsrc/menu/nexuiz/dialog_teamselect.c
trunk/data/qcsrc/menu/nexuiz/maplist.c
trunk/data/qcsrc/menu/nexuiz/playerlist.c
trunk/data/qcsrc/menu/nexuiz/playermodel.c
trunk/data/qcsrc/menu/nexuiz/skinlist.c
Log:
support for pointer warping
Modified: trunk/data/qcsrc/menu/item/button.c
===================================================================
--- trunk/data/qcsrc/menu/item/button.c 2009-04-14 12:42:10 UTC (rev 6485)
+++ trunk/data/qcsrc/menu/item/button.c 2009-04-14 13:16:33 UTC (rev 6486)
@@ -42,8 +42,6 @@
else
me.keepspaceLeft = min(0.8, absSize_y / absSize_x);
resizeNotifyLabel(me, relOrigin, relSize, absOrigin, absSize);
- me.origin = absOrigin;
- me.size = absSize;
}
void configureButtonButton(entity me, string txt, float sz, string gfx)
{
Modified: trunk/data/qcsrc/menu/item/container.c
===================================================================
--- trunk/data/qcsrc/menu/item/container.c 2009-04-14 12:42:10 UTC (rev 6485)
+++ trunk/data/qcsrc/menu/item/container.c 2009-04-14 13:16:33 UTC (rev 6486)
@@ -19,6 +19,7 @@
METHOD(Container, itemFromPoint, entity(entity, vector))
METHOD(Container, showNotify, void(entity))
METHOD(Container, hideNotify, void(entity))
+ METHOD(Container, preferredFocusedGrandChild, entity(entity))
ATTRIB(Container, focusable, float, 0)
ATTRIB(Container, firstChild, entity, NULL)
ATTRIB(Container, lastChild, entity, NULL)
@@ -339,4 +340,28 @@
else
me.lastChild = other;
}
+
+entity preferredFocusedGrandChildContainer(entity me)
+{
+ entity e, e2;
+ entity best;
+
+ best = NULL;
+
+ for(e = me.firstChild; e; e = e.nextSibling)
+ {
+ if(e.instanceOfContainer)
+ {
+ e2 = e.preferredFocusedGrandChild(e);
+ if(e2)
+ if(!best || best.preferredFocusPriority < e2.preferredFocusPriority)
+ best = e2;
+ }
+ if(e)
+ if(!best || best.preferredFocusPriority < e.preferredFocusPriority)
+ best = e;
+ }
+
+ return best;
+}
#endif
Modified: trunk/data/qcsrc/menu/item/gecko.c
===================================================================
--- trunk/data/qcsrc/menu/item/gecko.c 2009-04-14 12:42:10 UTC (rev 6485)
+++ trunk/data/qcsrc/menu/item/gecko.c 2009-04-14 13:16:33 UTC (rev 6486)
@@ -83,8 +83,7 @@
void resizeNotifyGecko(entity me, vector relOrigin, vector relSize, vector absOrigin, vector absSize)
{
- me.origin = absOrigin;
- me.size = absSize;
+ resizeNotifyItem(me, relOrigin, relSize, absOrigin, absSize);
gecko_resize( me.texturePath, absSize_x, absSize_y );
me.textureExtent = gecko_get_texture_extent( me.texturePath );
}
Modified: trunk/data/qcsrc/menu/item/image.c
===================================================================
--- trunk/data/qcsrc/menu/item/image.c 2009-04-14 12:42:10 UTC (rev 6485)
+++ trunk/data/qcsrc/menu/item/image.c 2009-04-14 13:16:33 UTC (rev 6486)
@@ -27,6 +27,7 @@
}
void resizeNotifyImage(entity me, vector relOrigin, vector relSize, vector absOrigin, vector absSize)
{
+ resizeNotifyItem(me, relOrigin, relSize, absOrigin, absSize);
if(me.forcedAspect == 0)
{
me.imgOrigin = '0 0 0';
Modified: trunk/data/qcsrc/menu/item/label.c
===================================================================
--- trunk/data/qcsrc/menu/item/label.c 2009-04-14 12:42:10 UTC (rev 6485)
+++ trunk/data/qcsrc/menu/item/label.c 2009-04-14 13:16:33 UTC (rev 6486)
@@ -37,6 +37,7 @@
}
void resizeNotifyLabel(entity me, vector relOrigin, vector relSize, vector absOrigin, vector absSize)
{
+ resizeNotifyItem(me, relOrigin, relSize, absOrigin, absSize);
// absSize_y is height of label
me.realFontSize_y = me.fontSize / absSize_y;
me.realFontSize_x = me.fontSize / absSize_x;
Modified: trunk/data/qcsrc/menu/item/listbox.c
===================================================================
--- trunk/data/qcsrc/menu/item/listbox.c 2009-04-14 12:42:10 UTC (rev 6485)
+++ trunk/data/qcsrc/menu/item/listbox.c 2009-04-14 13:16:33 UTC (rev 6486)
@@ -45,8 +45,7 @@
}
void resizeNotifyListBox(entity me, vector relOrigin, vector relSize, vector absOrigin, vector absSize)
{
- me.size = absSize;
- me.origin = absOrigin;
+ resizeNotifyItem(me, relOrigin, relSize, absOrigin, absSize);
me.controlWidth = me.scrollbarWidth / absSize_x;
}
void configureListBoxListBox(entity me, float theScrollbarWidth, float theItemHeight)
Modified: trunk/data/qcsrc/menu/item/modalcontroller.c
===================================================================
--- trunk/data/qcsrc/menu/item/modalcontroller.c 2009-04-14 12:42:10 UTC (rev 6485)
+++ trunk/data/qcsrc/menu/item/modalcontroller.c 2009-04-14 13:16:33 UTC (rev 6486)
@@ -97,8 +97,6 @@
void resizeNotifyModalController(entity me, vector relOrigin, vector relSize, vector absOrigin, vector absSize)
{
- me.origin = absOrigin;
- me.size = absSize;
me.resizeNotifyLie(me, relOrigin, relSize, absOrigin, absSize, ModalController_initialOrigin, ModalController_initialSize);
}
Modified: trunk/data/qcsrc/menu/item.c
===================================================================
--- trunk/data/qcsrc/menu/item.c 2009-04-14 12:42:10 UTC (rev 6485)
+++ trunk/data/qcsrc/menu/item.c 2009-04-14 13:16:33 UTC (rev 6486)
@@ -18,6 +18,9 @@
ATTRIB(Item, focused, float, 0)
ATTRIB(Item, focusable, float, 0)
ATTRIB(Item, parent, entity, NULL)
+ ATTRIB(Item, preferredFocusPriority, float, 0)
+ ATTRIB(Item, origin, vector, '0 0 0')
+ ATTRIB(Item, size, vector, '0 0 0')
ENDCLASS(Item)
#endif
@@ -36,6 +39,8 @@
void resizeNotifyItem(entity me, vector relOrigin, vector relSize, vector absOrigin, vector absSize)
{
+ me.origin = absOrigin;
+ me.size = absSize;
}
void drawItem(entity me)
Modified: trunk/data/qcsrc/menu/menu.qc
===================================================================
--- trunk/data/qcsrc/menu/menu.qc 2009-04-14 12:42:10 UTC (rev 6485)
+++ trunk/data/qcsrc/menu/menu.qc 2009-04-14 13:16:33 UTC (rev 6486)
@@ -415,6 +415,13 @@
}
};
+void m_focus_item_chain(entity outermost, entity innermost)
+{
+ if(innermost.parent != outermost)
+ m_focus_item_chain(outermost, innermost.parent);
+ innermost.parent.setFocus(innermost.parent, innermost);
+}
+
void m_activate_window(entity wnd)
{
entity par;
@@ -444,6 +451,19 @@
if(par.focused)
par.setFocus(par, wnd);
}
+
+ if(wnd.instanceOfContainer)
+ {
+ entity focus = wnd.preferredFocusedGrandChild(wnd);
+ if(focus)
+ {
+ menuMousePos = focus.origin + 0.5 * focus.size;
+ menuMousePos_x *= 1 / conwidth;
+ menuMousePos_y *= 1 / conheight;
+ if(wnd.focused) // why does this never happen?
+ m_focus_item_chain(wnd, focus);
+ }
+ }
}
void(string itemname) m_goto =
Modified: trunk/data/qcsrc/menu/nexuiz/campaign.c
===================================================================
--- trunk/data/qcsrc/menu/nexuiz/campaign.c 2009-04-14 12:42:10 UTC (rev 6485)
+++ trunk/data/qcsrc/menu/nexuiz/campaign.c 2009-04-14 13:16:33 UTC (rev 6486)
@@ -203,7 +203,6 @@
void resizeNotifyNexuizCampaignList(entity me, vector relOrigin, vector relSize, vector absOrigin, vector absSize)
{
- me.origin = absOrigin;
me.itemAbsSize = '0 0 0';
resizeNotifyNexuizListBox(me, relOrigin, relSize, absOrigin, absSize);
Modified: trunk/data/qcsrc/menu/nexuiz/demolist.c
===================================================================
--- trunk/data/qcsrc/menu/nexuiz/demolist.c 2009-04-14 12:42:10 UTC (rev 6485)
+++ trunk/data/qcsrc/menu/nexuiz/demolist.c 2009-04-14 13:16:33 UTC (rev 6486)
@@ -81,7 +81,6 @@
void resizeNotifyNexuizDemoList(entity me, vector relOrigin, vector relSize, vector absOrigin, vector absSize)
{
- me.origin = absOrigin;
me.itemAbsSize = '0 0 0';
resizeNotifyNexuizListBox(me, relOrigin, relSize, absOrigin, absSize);
Modified: trunk/data/qcsrc/menu/nexuiz/dialog_teamselect.c
===================================================================
--- trunk/data/qcsrc/menu/nexuiz/dialog_teamselect.c 2009-04-14 12:42:10 UTC (rev 6485)
+++ trunk/data/qcsrc/menu/nexuiz/dialog_teamselect.c 2009-04-14 13:16:33 UTC (rev 6486)
@@ -36,8 +36,10 @@
void fillNexuizTeamSelectDialog(entity me)
{
+ entity e;
me.TR(me);
- me.TD(me, 2, 4, makeTeamButton("join 'best' team (auto-select)", '0 0 0', "cmd selectteam auto; cmd join"));
+ me.TD(me, 2, 4, e = makeTeamButton("join 'best' team (auto-select)", '0 0 0', "cmd selectteam auto; cmd join"));
+ e.preferredFocusPriority = 1;
me.TR(me);
me.TR(me);
me.TD(me, 2, 1, me.team1 = makeTeamButton("red", '1 0.5 0.5', "cmd selectteam red; cmd join"));
Modified: trunk/data/qcsrc/menu/nexuiz/maplist.c
===================================================================
--- trunk/data/qcsrc/menu/nexuiz/maplist.c 2009-04-14 12:42:10 UTC (rev 6485)
+++ trunk/data/qcsrc/menu/nexuiz/maplist.c 2009-04-14 13:16:33 UTC (rev 6486)
@@ -119,7 +119,6 @@
void resizeNotifyNexuizMapList(entity me, vector relOrigin, vector relSize, vector absOrigin, vector absSize)
{
- me.origin = absOrigin;
me.itemAbsSize = '0 0 0';
resizeNotifyNexuizListBox(me, relOrigin, relSize, absOrigin, absSize);
Modified: trunk/data/qcsrc/menu/nexuiz/playerlist.c
===================================================================
--- trunk/data/qcsrc/menu/nexuiz/playerlist.c 2009-04-14 12:42:10 UTC (rev 6485)
+++ trunk/data/qcsrc/menu/nexuiz/playerlist.c 2009-04-14 13:16:33 UTC (rev 6486)
@@ -78,7 +78,6 @@
void resizeNotifyNexuizPlayerList(entity me, vector relOrigin, vector relSize, vector absOrigin, vector absSize)
{
- me.origin = absOrigin;
me.itemAbsSize = '0 0 0';
resizeNotifyNexuizListBox(me, relOrigin, relSize, absOrigin, absSize);
Modified: trunk/data/qcsrc/menu/nexuiz/playermodel.c
===================================================================
--- trunk/data/qcsrc/menu/nexuiz/playermodel.c 2009-04-14 12:42:10 UTC (rev 6485)
+++ trunk/data/qcsrc/menu/nexuiz/playermodel.c 2009-04-14 13:16:33 UTC (rev 6486)
@@ -192,8 +192,6 @@
void resizeNotifyNexuizPlayerModelSelector(entity me, vector relOrigin, vector relSize, vector absOrigin, vector absSize)
{
resizeNotifyImage(me, relOrigin, relSize, absOrigin, absSize);
- me.origin = absOrigin;
- me.size = absSize;
me.realFontSize_y = me.fontSize / absSize_y;
me.realFontSize_x = me.fontSize / absSize_x;
}
Modified: trunk/data/qcsrc/menu/nexuiz/skinlist.c
===================================================================
--- trunk/data/qcsrc/menu/nexuiz/skinlist.c 2009-04-14 12:42:10 UTC (rev 6485)
+++ trunk/data/qcsrc/menu/nexuiz/skinlist.c 2009-04-14 13:16:33 UTC (rev 6486)
@@ -134,7 +134,6 @@
void resizeNotifyNexuizSkinList(entity me, vector relOrigin, vector relSize, vector absOrigin, vector absSize)
{
- me.origin = absOrigin;
me.itemAbsSize = '0 0 0';
resizeNotifyNexuizListBox(me, relOrigin, relSize, absOrigin, absSize);
More information about the nexuiz-commits
mailing list