mirror of https://github.com/stella-emu/stella.git
Cleaned up a few FIXME's, and enabled joysticks to use the new UI event
mappings (not fully tested yet, since I don't have access to a joystick right now). git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1103 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
This commit is contained in:
parent
893716abcd
commit
6b9329adf1
|
@ -13,7 +13,7 @@
|
||||||
// See the file "license" for information on usage and redistribution of
|
// See the file "license" for information on usage and redistribution of
|
||||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||||
//
|
//
|
||||||
// $Id: FrameBuffer.cxx,v 1.87 2006-05-15 12:24:09 stephena Exp $
|
// $Id: FrameBuffer.cxx,v 1.88 2006-05-15 16:21:27 stephena Exp $
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
|
@ -36,11 +36,6 @@
|
||||||
#include "Debugger.hxx"
|
#include "Debugger.hxx"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(OS2) // FIXME - make proper OS/2 port
|
|
||||||
#define INCL_WIN
|
|
||||||
#include <os2emx.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
FrameBuffer::FrameBuffer(OSystem* osystem)
|
FrameBuffer::FrameBuffer(OSystem* osystem)
|
||||||
: myOSystem(osystem),
|
: myOSystem(osystem),
|
||||||
|
@ -86,13 +81,8 @@ void FrameBuffer::initialize(const string& title, uInt32 width, uInt32 height,
|
||||||
// Query the desktop size
|
// Query the desktop size
|
||||||
// This is really the job of SDL
|
// This is really the job of SDL
|
||||||
int dwidth = 0, dheight = 0;
|
int dwidth = 0, dheight = 0;
|
||||||
#if defined(OS2) // FIXME - make proper OS/2 port
|
|
||||||
myDesktopDim.w = WinQuerySysValue(HWND_DESKTOP, SV_CXSCREEN);
|
|
||||||
myDesktopDim.h = WinQuerySysValue(HWND_DESKTOP, SV_CYSCREEN);
|
|
||||||
#else
|
|
||||||
myOSystem->getScreenDimensions(dwidth, dheight);
|
myOSystem->getScreenDimensions(dwidth, dheight);
|
||||||
myDesktopDim.w = dwidth; myDesktopDim.h = dheight;
|
myDesktopDim.w = dwidth; myDesktopDim.h = dheight;
|
||||||
#endif
|
|
||||||
|
|
||||||
// Set fullscreen flag
|
// Set fullscreen flag
|
||||||
mySDLFlags = myOSystem->settings().getBool("fullscreen") ? SDL_FULLSCREEN : 0;
|
mySDLFlags = myOSystem->settings().getBool("fullscreen") ? SDL_FULLSCREEN : 0;
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
// See the file "license" for information on usage and redistribution of
|
// See the file "license" for information on usage and redistribution of
|
||||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||||
//
|
//
|
||||||
// $Id: Dialog.cxx,v 1.45 2006-05-05 18:00:51 stephena Exp $
|
// $Id: Dialog.cxx,v 1.46 2006-05-15 16:21:27 stephena Exp $
|
||||||
//
|
//
|
||||||
// Based on code from ScummVM - Scumm Interpreter
|
// Based on code from ScummVM - Scumm Interpreter
|
||||||
// Copyright (C) 2002-2004 The ScummVM project
|
// Copyright (C) 2002-2004 The ScummVM project
|
||||||
|
@ -311,54 +311,12 @@ void Dialog::handleKeyDown(int ascii, int keycode, int modifiers)
|
||||||
|
|
||||||
// Check the keytable now, since we might get one of the above events,
|
// Check the keytable now, since we might get one of the above events,
|
||||||
// which must always be processed before any widget sees it.
|
// which must always be processed before any widget sees it.
|
||||||
bool handled = false;
|
|
||||||
if(e == Event::NoType)
|
if(e == Event::NoType)
|
||||||
e = instance()->eventHandler().eventForKey(ascii, kMenuMode);
|
e = instance()->eventHandler().eventForKey(ascii, kMenuMode);
|
||||||
|
|
||||||
switch(e)
|
|
||||||
{
|
|
||||||
case Event::UITabPrev:
|
|
||||||
if(_ourTab)
|
|
||||||
{
|
|
||||||
_ourTab->cycleTab(-1);
|
|
||||||
handled = true;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case Event::UITabNext:
|
|
||||||
if(_ourTab)
|
|
||||||
{
|
|
||||||
_ourTab->cycleTab(+1);
|
|
||||||
handled = true;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case Event::UINavPrev:
|
|
||||||
if(_focusedWidget && !_focusedWidget->wantsTab())
|
|
||||||
{
|
|
||||||
_focusedWidget = Widget::setFocusForChain(this, getFocusList(),
|
|
||||||
_focusedWidget, -1);
|
|
||||||
handled = true;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case Event::UINavNext:
|
|
||||||
if(_focusedWidget && !_focusedWidget->wantsTab())
|
|
||||||
{
|
|
||||||
_focusedWidget = Widget::setFocusForChain(this, getFocusList(),
|
|
||||||
_focusedWidget, +1);
|
|
||||||
handled = true;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
handled = false;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Unless a widget has claimed all responsibility for data, we assume
|
// Unless a widget has claimed all responsibility for data, we assume
|
||||||
// that if an event exists for the given data, it should have priority.
|
// that if an event exists for the given data, it should have priority.
|
||||||
if(!handled && _focusedWidget)
|
if(!handleNavEvent(e) && _focusedWidget)
|
||||||
{
|
{
|
||||||
if(_focusedWidget->wantsRaw() || e == Event::NoType)
|
if(_focusedWidget->wantsRaw() || e == Event::NoType)
|
||||||
_focusedWidget->handleKeyDown(ascii, keycode, modifiers);
|
_focusedWidget->handleKeyDown(ascii, keycode, modifiers);
|
||||||
|
@ -428,12 +386,12 @@ void Dialog::handleMouseMoved(int x, int y, int button)
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
void Dialog::handleJoyDown(int stick, int button)
|
void Dialog::handleJoyDown(int stick, int button)
|
||||||
{
|
{
|
||||||
Event::Type e = Event::NoType; // FIXME - do a lookup
|
Event::Type e =
|
||||||
bool handled = false; // isNavigation(e);
|
instance()->eventHandler().eventForJoyButton(stick, button, kMenuMode);
|
||||||
|
|
||||||
// Unless a widget has claimed all responsibility for data, we assume
|
// Unless a widget has claimed all responsibility for data, we assume
|
||||||
// that if an event exists for the given data, it should have priority.
|
// that if an event exists for the given data, it should have priority.
|
||||||
if(!handled && _focusedWidget)
|
if(!handleNavEvent(e) && _focusedWidget)
|
||||||
{
|
{
|
||||||
if(_focusedWidget->wantsRaw() || e == Event::NoType)
|
if(_focusedWidget->wantsRaw() || e == Event::NoType)
|
||||||
_focusedWidget->handleJoyDown(stick, button);
|
_focusedWidget->handleJoyDown(stick, button);
|
||||||
|
@ -453,12 +411,12 @@ void Dialog::handleJoyUp(int stick, int button)
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
void Dialog::handleJoyAxis(int stick, int axis, int value)
|
void Dialog::handleJoyAxis(int stick, int axis, int value)
|
||||||
{
|
{
|
||||||
Event::Type e = Event::NoType; // FIXME - do a lookup
|
Event::Type e =
|
||||||
bool handled = false; // isNavigation(e);
|
instance()->eventHandler().eventForJoyAxis(stick, axis, value, kMenuMode);
|
||||||
|
|
||||||
// Unless a widget has claimed all responsibility for data, we assume
|
// Unless a widget has claimed all responsibility for data, we assume
|
||||||
// that if an event exists for the given data, it should have priority.
|
// that if an event exists for the given data, it should have priority.
|
||||||
if(!handled && _focusedWidget)
|
if(!handleNavEvent(e) && _focusedWidget)
|
||||||
{
|
{
|
||||||
if(_focusedWidget->wantsRaw() || e == Event::NoType)
|
if(_focusedWidget->wantsRaw() || e == Event::NoType)
|
||||||
_focusedWidget->handleJoyAxis(stick, axis, value);
|
_focusedWidget->handleJoyAxis(stick, axis, value);
|
||||||
|
@ -470,19 +428,65 @@ void Dialog::handleJoyAxis(int stick, int axis, int value)
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
bool Dialog::handleJoyHat(int stick, int hat, int value)
|
bool Dialog::handleJoyHat(int stick, int hat, int value)
|
||||||
{
|
{
|
||||||
Event::Type e = Event::NoType; // FIXME - do a lookup
|
Event::Type e =
|
||||||
bool handled = false; // isNavigation(e);
|
instance()->eventHandler().eventForJoyHat(stick, hat, value, kMenuMode);
|
||||||
|
|
||||||
// Unless a widget has claimed all responsibility for data, we assume
|
// Unless a widget has claimed all responsibility for data, we assume
|
||||||
// that if an event exists for the given data, it should have priority.
|
// that if an event exists for the given data, it should have priority.
|
||||||
if(!handled && _focusedWidget)
|
if(!handleNavEvent(e) && _focusedWidget)
|
||||||
{
|
{
|
||||||
if(_focusedWidget->wantsRaw() || e == Event::NoType)
|
if(_focusedWidget->wantsRaw() || e == Event::NoType)
|
||||||
return _focusedWidget->handleJoyHat(stick, hat, value);
|
return _focusedWidget->handleJoyHat(stick, hat, value);
|
||||||
else
|
else
|
||||||
return _focusedWidget->handleEvent(e);
|
return _focusedWidget->handleEvent(e);
|
||||||
}
|
}
|
||||||
return handled;
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
bool Dialog::handleNavEvent(Event::Type e)
|
||||||
|
{
|
||||||
|
switch(e)
|
||||||
|
{
|
||||||
|
case Event::UITabPrev:
|
||||||
|
if(_ourTab)
|
||||||
|
{
|
||||||
|
_ourTab->cycleTab(-1);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Event::UITabNext:
|
||||||
|
if(_ourTab)
|
||||||
|
{
|
||||||
|
_ourTab->cycleTab(+1);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Event::UINavPrev:
|
||||||
|
if(_focusedWidget && !_focusedWidget->wantsTab())
|
||||||
|
{
|
||||||
|
_focusedWidget = Widget::setFocusForChain(this, getFocusList(),
|
||||||
|
_focusedWidget, -1);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Event::UINavNext:
|
||||||
|
if(_focusedWidget && !_focusedWidget->wantsTab())
|
||||||
|
{
|
||||||
|
_focusedWidget = Widget::setFocusForChain(this, getFocusList(),
|
||||||
|
_focusedWidget, +1);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
// See the file "license" for information on usage and redistribution of
|
// See the file "license" for information on usage and redistribution of
|
||||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||||
//
|
//
|
||||||
// $Id: Dialog.hxx,v 1.29 2006-05-04 17:45:25 stephena Exp $
|
// $Id: Dialog.hxx,v 1.30 2006-05-15 16:21:27 stephena Exp $
|
||||||
//
|
//
|
||||||
// Based on code from ScummVM - Scumm Interpreter
|
// Based on code from ScummVM - Scumm Interpreter
|
||||||
// Copyright (C) 2002-2004 The ScummVM project
|
// Copyright (C) 2002-2004 The ScummVM project
|
||||||
|
@ -36,7 +36,7 @@ class TabWidget;
|
||||||
This is the base class for all dialog boxes.
|
This is the base class for all dialog boxes.
|
||||||
|
|
||||||
@author Stephen Anthony
|
@author Stephen Anthony
|
||||||
@version $Id: Dialog.hxx,v 1.29 2006-05-04 17:45:25 stephena Exp $
|
@version $Id: Dialog.hxx,v 1.30 2006-05-15 16:21:27 stephena Exp $
|
||||||
*/
|
*/
|
||||||
class Dialog : public GuiObject
|
class Dialog : public GuiObject
|
||||||
{
|
{
|
||||||
|
@ -96,6 +96,7 @@ class Dialog : public GuiObject
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void buildFocusWidgetList(int id);
|
void buildFocusWidgetList(int id);
|
||||||
|
inline bool handleNavEvent(Event::Type e);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
Widget* _mouseWidget;
|
Widget* _mouseWidget;
|
||||||
|
|
Loading…
Reference in New Issue