[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