(360) Properly implement OnControlNavigate

This commit is contained in:
TwinAphex51224 2012-05-29 19:00:13 +02:00
parent 7ce9e4f9b0
commit 67ffd5226a
3 changed files with 86 additions and 12 deletions

View File

@ -289,6 +289,18 @@ HRESULT CRetroArchSettings::OnControlNavigate(XUIMessageControlNavigate *pContro
break;
}
bHandled = TRUE;
switch(pControlNavigateData->nControlNavigate)
{
case XUI_CONTROL_NAVIGATE_LEFT:
case XUI_CONTROL_NAVIGATE_RIGHT:
case XUI_CONTROL_NAVIGATE_UP:
case XUI_CONTROL_NAVIGATE_DOWN:
pControlNavigateData->hObjDest = pControlNavigateData->hObjSource;
break;
}
return 0;
}
@ -322,6 +334,68 @@ HRESULT CRetroArchQuickMenu::OnInit(XUIMessageInit * pInitData, BOOL& bHandled)
return 0;
}
HRESULT CRetroArchQuickMenu::OnControlNavigate(XUIMessageControlNavigate *pControlNavigateData, BOOL& bHandled)
{
bool aspectratio_changed = false;
int current_index;
xdk360_video_t *d3d9 = (xdk360_video_t*)driver.video_data;
current_index = m_quickmenulist.GetCurSel();
switch(pControlNavigateData->nControlNavigate)
{
case XUI_CONTROL_NAVIGATE_LEFT:
switch(current_index)
{
case MENU_ITEM_KEEP_ASPECT_RATIO:
rarch_settings_change(S_ASPECT_RATIO_DECREMENT);
aspectratio_changed = true;
break;
default:
break;
}
break;
case XUI_CONTROL_NAVIGATE_RIGHT:
switch(current_index)
{
case MENU_ITEM_KEEP_ASPECT_RATIO:
rarch_settings_change(S_ASPECT_RATIO_INCREMENT);
aspectratio_changed = true;
break;
default:
break;
}
break;
case XUI_CONTROL_NAVIGATE_UP:
case XUI_CONTROL_NAVIGATE_DOWN:
break;
}
if(aspectratio_changed)
{
gfx_ctx_set_aspect_ratio(d3d9, g_console.aspect_ratio_index);
char aspectratio_label[32];
snprintf(aspectratio_label, sizeof(aspectratio_label), "Aspect Ratio: %s", aspectratio_lut[g_console.aspect_ratio_index].name);
wchar_t * aspectratio_label_w = rarch_convert_char_to_wchar(aspectratio_label);
m_quickmenulist.SetText(MENU_ITEM_KEEP_ASPECT_RATIO, aspectratio_label_w);
free(aspectratio_label_w);
}
bHandled = TRUE;
switch(pControlNavigateData->nControlNavigate)
{
case XUI_CONTROL_NAVIGATE_LEFT:
case XUI_CONTROL_NAVIGATE_RIGHT:
case XUI_CONTROL_NAVIGATE_UP:
case XUI_CONTROL_NAVIGATE_DOWN:
pControlNavigateData->hObjDest = pControlNavigateData->hObjSource;
break;
}
return 0;
}
HRESULT CRetroArchQuickMenu::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled )
{
xdk360_video_t *d3d9 = (xdk360_video_t*)driver.video_data;
@ -349,9 +423,7 @@ HRESULT CRetroArchQuickMenu::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled
break;
case MENU_ITEM_KEEP_ASPECT_RATIO:
{
rarch_settings_change(S_ASPECT_RATIO_INCREMENT);
if(g_console.aspect_ratio_index == ASPECT_RATIO_END)
g_console.aspect_ratio_index = 0;
rarch_settings_default(S_DEF_ASPECT_RATIO);
gfx_ctx_set_aspect_ratio(d3d9, g_console.aspect_ratio_index);
char aspectratio_label[32];

View File

@ -94,7 +94,7 @@ class CRetroArchMain: public CXuiSceneImpl
XUI_BEGIN_MSG_MAP()
XUI_ON_XM_INIT( OnInit)
XUI_ON_XM_NOTIFY_PRESS( OnNotifyPress )
XUI_ON_XM_NOTIFY_PRESS( OnNotifyPress )
XUI_END_MSG_MAP();
XUI_IMPLEMENT_CLASS(CRetroArchMain, L"RetroArchMain", XUI_CLASS_SCENE)
@ -114,7 +114,7 @@ class CRetroArchFileBrowser: public CXuiSceneImpl
XUI_BEGIN_MSG_MAP()
XUI_ON_XM_INIT( OnInit)
XUI_ON_XM_NOTIFY_PRESS( OnNotifyPress )
XUI_ON_XM_NOTIFY_PRESS( OnNotifyPress )
XUI_END_MSG_MAP();
XUI_IMPLEMENT_CLASS(CRetroArchFileBrowser, L"RetroArchFileBrowser", XUI_CLASS_SCENE)
@ -150,7 +150,7 @@ class CRetroArchShaderBrowser: public CXuiSceneImpl
XUI_BEGIN_MSG_MAP()
XUI_ON_XM_INIT( OnInit)
XUI_ON_XM_NOTIFY_PRESS( OnNotifyPress )
XUI_ON_XM_NOTIFY_PRESS( OnNotifyPress )
XUI_END_MSG_MAP();
XUI_IMPLEMENT_CLASS(CRetroArchShaderBrowser, L"RetroArchShaderBrowser", XUI_CLASS_SCENE)
@ -164,10 +164,12 @@ class CRetroArchQuickMenu: public CXuiSceneImpl
public:
HRESULT OnInit( XUIMessageInit* pInitData, int & bHandled );
HRESULT OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled );
HRESULT OnControlNavigate(XUIMessageControlNavigate *pControlNavigateData, BOOL& bHandled);
XUI_BEGIN_MSG_MAP()
XUI_ON_XM_INIT( OnInit)
XUI_ON_XM_NOTIFY_PRESS( OnNotifyPress )
XUI_ON_XM_CONTROL_NAVIGATE( OnControlNavigate )
XUI_ON_XM_NOTIFY_PRESS( OnNotifyPress )
XUI_END_MSG_MAP();
XUI_IMPLEMENT_CLASS(CRetroArchQuickMenu, L"RetroArchQuickMenu", XUI_CLASS_SCENE)
@ -185,8 +187,8 @@ class CRetroArchSettings: public CXuiSceneImpl
XUI_BEGIN_MSG_MAP()
XUI_ON_XM_INIT( OnInit)
XUI_ON_XM_CONTROL_NAVIGATE( OnControlNavigate )
XUI_ON_XM_NOTIFY_PRESS( OnNotifyPress )
XUI_ON_XM_CONTROL_NAVIGATE( OnControlNavigate )
XUI_ON_XM_NOTIFY_PRESS( OnNotifyPress )
XUI_END_MSG_MAP();
XUI_IMPLEMENT_CLASS(CRetroArchSettings, L"RetroArchSettings", XUI_CLASS_SCENE)
@ -205,8 +207,8 @@ class CRetroArchControls: public CXuiSceneImpl
XUI_BEGIN_MSG_MAP()
XUI_ON_XM_INIT( OnInit)
XUI_ON_XM_CONTROL_NAVIGATE( OnControlNavigate )
XUI_ON_XM_NOTIFY_PRESS( OnNotifyPress )
XUI_ON_XM_CONTROL_NAVIGATE( OnControlNavigate )
XUI_ON_XM_NOTIFY_PRESS( OnNotifyPress )
XUI_END_MSG_MAP();
XUI_IMPLEMENT_CLASS(CRetroArchControls, L"RetroArchControls", XUI_CLASS_SCENE)

View File

@ -31,7 +31,7 @@ void rarch_settings_change(unsigned setting)
g_console.aspect_ratio_index--;
break;
case S_ASPECT_RATIO_INCREMENT:
if(g_console.aspect_ratio_index < ASPECT_RATIO_END-1)
if(g_console.aspect_ratio_index < LAST_ASPECT_RATIO)
g_console.aspect_ratio_index++;
break;
case S_FRAME_ADVANCE: