[ADDED] Checking panel hot key improvement

36 posts
Re: Checking panel hot key improvement (MS Windows)

Nikolay
MMEX Developer

Posts: 2284
Joined: Sat Dec 06, 2008 8:27 am
Location: Sankt-Petersburg, Russia
My last code. Are there reasons it does not work on MAC?

Code: Select all
void MyListCtrl::OnChar(wxKeyEvent& event)
{   if (wxGetKeyState(WXK_ALT) ||
      wxGetKeyState(WXK_COMMAND) ||
      wxGetKeyState(WXK_UP) ||
      wxGetKeyState(WXK_DOWN) ||
      wxGetKeyState(WXK_LEFT) ||
      wxGetKeyState(WXK_RIGHT) ||
      wxGetKeyState(WXK_HOME) ||
      wxGetKeyState(WXK_END) ||
      wxGetKeyState(WXK_PAGEUP) ||
      wxGetKeyState(WXK_PAGEDOWN) ||
      wxGetKeyState(WXK_NUMPAD_UP) ||
      wxGetKeyState(WXK_NUMPAD_DOWN) ||
      wxGetKeyState(WXK_NUMPAD_LEFT) ||
      wxGetKeyState(WXK_NUMPAD_RIGHT) ||
      wxGetKeyState(WXK_NUMPAD_PAGEDOWN) ||
      wxGetKeyState(WXK_NUMPAD_PAGEUP) ||
      wxGetKeyState(WXK_NUMPAD_HOME) ||
      wxGetKeyState(WXK_NUMPAD_END)
      )
   event.Skip();
  }

void MyListCtrl::OnListKeyDown(wxListEvent& event)
{
   if (!wxGetKeyState(WXK_COMMAND) && !wxGetKeyState(WXK_ALT))
 {
   switch ( event.GetKeyCode())
    {
      case WXK_DELETE:
      case WXK_NUMPAD_DELETE:
            {
                wxCommandEvent evt(wxEVT_COMMAND_MENU_SELECTED, MENU_TREEPOPUP_DELETE);
                OnDeleteTransaction(evt);
            }
            break;

        case 'V':
            {
                wxCommandEvent evt(wxEVT_COMMAND_MENU_SELECTED, MENU_TREEPOPUP_MARKVOID);
                OnMarkTransaction(evt);
            }
            break;

        case 'R':
            {
                wxCommandEvent evt(wxEVT_COMMAND_MENU_SELECTED, MENU_TREEPOPUP_MARKRECONCILED);
                OnMarkTransaction(evt);
            }
            break;

        case 'U':
            {
                 wxCommandEvent evt(wxEVT_COMMAND_MENU_SELECTED, MENU_TREEPOPUP_MARKUNRECONCILED);
                 OnMarkTransaction(evt);
            }
            break;

        case 'F':
            {
                 wxCommandEvent evt(wxEVT_COMMAND_MENU_SELECTED, MENU_TREEPOPUP_MARK_ADD_FLAG_FOLLOWUP);
                 OnMarkTransaction(evt);
            }
            break;
      case 'D':
            {
                 wxCommandEvent evt(wxEVT_COMMAND_MENU_SELECTED, MENU_TREEPOPUP_MARKDUPLICATE);
                 OnMarkTransaction(evt);
         }
            break;
   
   }
   }
   event.Skip();
   
}
Attachments
HKEYS.zip
(11.05 KiB) Downloaded 296 times
Re: Checking panel hot key improvement (MS Windows)

elliswr
MMEX Developer

Posts: 151
Joined: Tue May 05, 2009 2:21 am
Location: Granbury, TX
Yep, that breaks hotkeys on Mac. The only thing that allows hotkeys to work is when I edit out the OnChar method.
Re: Checking panel hot key improvement (MS Windows)

Nikolay
MMEX Developer

Posts: 2284
Joined: Sat Dec 06, 2008 8:27 am
Location: Sankt-Petersburg, Russia
And if we make a bit change in the mmcheckingpanel.cpp:

Code: Select all
    EVT_MENU(MENU_ON_COPY_TRANSACTION, MyListCtrl::OnCopy)
    EVT_MENU(MENU_ON_PASTE_TRANSACTION, MyListCtrl::OnPaste)
    EVT_MENU(MENU_ON_NEW_TRANSACTION, MyListCtrl::OnNewTransaction)
 
#if defined (__WXMSW__)
   EVT_CHAR(MyListCtrl::OnChar)
#endif
    EVT_LIST_KEY_DOWN(ID_PANEL_CHECKING_LISTCTRL_ACCT, MyListCtrl::OnListKeyDown)


???
PS Please, say YES :)
Re: Checking panel hot key improvement (MS Windows)

elliswr
MMEX Developer

Posts: 151
Joined: Tue May 05, 2009 2:21 am
Location: Granbury, TX
Nik,

So, you'll never believe this, but I got your code to work just fine on Mac without #if and #endif statements. You see, I broke the golden rule of troubleshooting and changed more than one thing at a time. If I edit out the OnChar method without changing anything else, keystrokes worked. So I jumped to the conclusion that it was your code that was the problem. At the same time, I was battling with the lack of response to clicks that the same wxlistctrl was giving me in mmcheckingpanel.

I found out how to implement the generic version of wxlistctrl and the clicks worked (in other words, native wxlistctrl is broken on Mac in 2.8.10). When I updated to the new source from the branch 0.9.5, I forgot to re-imlement the generic version of wxlistctrl, and thus your code wouldn't work no matter what I did. Sorry for all this, it now works on Windows and Mac.

Lets commit that code.

Wes
Re: Checking panel hot key improvement (MS Windows)

Nikolay
MMEX Developer

Posts: 2284
Joined: Sat Dec 06, 2008 8:27 am
Location: Sankt-Petersburg, Russia
Hi wes,

Good news, thanks.

Regards,
Nikolay
Re: Checking panel hot key improvement (MS Windows)

Nikolay
MMEX Developer

Posts: 2284
Joined: Sat Dec 06, 2008 8:27 am
Location: Sankt-Petersburg, Russia
Updated to SVN revision 479.
Attachments
cp_hotkeys.zip
(1.08 KiB) Downloaded 257 times
Who is online

Users browsing this forum: No registered users and 17 guests