Going through that, something doesn't seem right.
Subscribing event..
Keytest:
Doesn't seem to return the proper codepoint...coming from the link you sent me:
in..(no need to go through, just for reference)
contains this line:
my previously mentioned: "Notify TCEKeyEventArgs(args).getCodepoint()"
isn't returning 9 when I press tab. It always returns the same number no matter what key I press. I would have no problem implimenting my own tab system if I could figure out what key is being pressed in this event, or even event_keyup/event_keydown events, but I can't seem to get beyond this part.
Subscribing event..
TCEEditbox(TCEWindowManager.getWindow("LoginWindow/txtUsername")).subscribeEvent(TCEButtonBase.EventCharacterKey, Event_KeyTest)
Keytest:
Function Event_KeyTest:Int(args:TCEEventArgs) Notify TCEKeyEventArgs(args).getCodepoint() Return True End Function
Doesn't seem to return the proper codepoint...coming from the link you sent me:
in..(no need to go through, just for reference)
bool TabNavigation::_onCharacterKey(const CEGUI::EventArgs& e) { // Handle Tab (next) and Shift+Tab (previous) widget navigation assert(_tabNavigation.size() && "Don't simply call setParent(), also call addWidget()"); if(static_cast(e).codepoint == 9) // Tab or Shift+Tab { // Identify who currently has the focus CEGUI::WindowManager& wmgr = CEGUI::WindowManager::getSingleton(); std::vector::iterator itFocus, itCurrent; if(_lastKnownFocus != _tabNavigation.end() && wmgr.getWindow(*_lastKnownFocus)->isActive()) { // The last known focus is still in focus itCurrent = _lastKnownFocus; } else { // Figure out who (if anyone) has the focus for(itCurrent = _tabNavigation.begin(); itCurrent != _tabNavigation.end(); itCurrent++) { if(wmgr.getWindow(*itCurrent)->isActive()) { // Found who has the focus break; } } if(itCurrent == _tabNavigation.end()) { // We did not find who had the focus // Someone not in our list of monitored widgets has STOLEN the focus! // Use the last known focus or, if that's invalid, the first widget itCurrent = _lastKnownFocus != _tabNavigation.end() ? _lastKnownFocus : _tabNavigation.begin(); } } // Change the focus itFocus = itCurrent; // The search starts from the currently focused CEGUI::Window* newWidget = 0; do { if(static_cast(e).sysKeys & CEGUI::Shift) { // Search previous if(itFocus == _tabNavigation.begin()) itFocus = --_tabNavigation.end(); else itFocus--; } else { // Search next itFocus++; if(itFocus == _tabNavigation.end()) itFocus = _tabNavigation.begin(); } newWidget = wmgr.getWindow(*itFocus); if(newWidget->isVisible() && !newWidget->isDisabled()) { // We have found a valid focus target _lastKnownFocus = itFocus; break; } newWidget = 0; } while(itFocus != itCurrent); // Iterate while we're on a different widget if(newWidget) { // Remove the focus from this widget HACKED_FOCUS_LOSS(*itCurrent); // Give the focus to this widget newWidget->activate(); HACKED_FOCUS_GAIN(newWidget->getName()); return true; } } return false; }
contains this line:
if(static_cast(e).codepoint == 9) // Tab or Shift+Tab
my previously mentioned: "Notify TCEKeyEventArgs(args).getCodepoint()"
isn't returning 9 when I press tab. It always returns the same number no matter what key I press. I would have no problem implimenting my own tab system if I could figure out what key is being pressed in this event, or even event_keyup/event_keydown events, but I can't seem to get beyond this part.