From b1bb04c5a6b6e002f5115661993c5ab8726696fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=A1clav=20Slav=C3=ADk?= Date: Tue, 18 Mar 2008 16:21:15 +0000 Subject: [PATCH] made wxAcceleratorTable work with buttons in wxGTK too git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@52615 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- interface/accel.h | 3 +-- src/gtk/window.cpp | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/interface/accel.h b/interface/accel.h index 87a820b06b..39b08f4297 100644 --- a/interface/accel.h +++ b/interface/accel.h @@ -96,8 +96,7 @@ public: @wxheader{accel.h} An accelerator table allows the application to specify a table of keyboard - shortcuts for menus or other commands. On Windows and Mac OS X, menu or button - commands are supported; on GTK, only menu commands are supported. + shortcuts for menu or button commands. The object ::wxNullAcceleratorTable is defined to be a table with no data, and is the initial accelerator table for a window. diff --git a/src/gtk/window.cpp b/src/gtk/window.cpp index 2ea22d82b2..67635d23f2 100644 --- a/src/gtk/window.cpp +++ b/src/gtk/window.cpp @@ -869,8 +869,18 @@ gtk_window_key_press_callback( GtkWidget *widget, int command = ancestor->GetAcceleratorTable()->GetCommand( event ); if (command != -1) { - wxCommandEvent command_event( wxEVT_COMMAND_MENU_SELECTED, command ); - ret = ancestor->HandleWindowEvent( command_event ); + wxCommandEvent menu_event( wxEVT_COMMAND_MENU_SELECTED, command ); + ret = ancestor->HandleWindowEvent( menu_event ); + + if ( !ret ) + { + // if the accelerator wasn't handled as menu event, try + // it as button click (for compatibility with other + // platforms): + wxCommandEvent button_event( wxEVT_COMMAND_BUTTON_CLICKED, command ); + ret = ancestor->HandleWindowEvent( button_event ); + } + break; } if (ancestor->IsTopLevel())