GtkAccelGroup *m_accel;
GtkItemFactory *m_factory;
-
-private:
wxList m_menus;
GtkWidget *m_menubar;
};
GtkAccelGroup *m_accel;
GtkItemFactory *m_factory;
-
-private:
wxList m_menus;
GtkWidget *m_menubar;
};
#include "gdk/gdk.h"
#include "gtk/gtk.h"
#include "wx/gtk/win_gtk.h"
+#include "gdk/gdkkeysyms.h"
//-----------------------------------------------------------------------------
// constants
static void gtk_toolbar_detached_callback( GtkWidget *widget, GtkWidget *WXUNUSED(child), wxFrame *win )
{
- if (g_isIdle) wxapp_install_idle_handler();
+ if (g_isIdle)
+ wxapp_install_idle_handler();
if (!win->m_hasVMT) return;
ret = win->GetEventHandler()->ProcessEvent( new_event );
}
+ /* generate wxID_CANCEL if <esc> has been pressed (typically in dialogs) */
if ( (!ret) &&
(gdk_event->keyval == GDK_Escape) )
{
new_event.SetEventObject( win );
ret = win->GetEventHandler()->ProcessEvent( new_event );
}
+
+ /* pressing F10 will activate the menu bar of the top frame */
+ if ( (!ret) &&
+ (gdk_event->keyval == GDK_F10) )
+ {
+ wxWindow *ancestor = win;
+ while (ancestor)
+ {
+ if (wxIsKindOf(ancestor,wxFrame))
+ {
+ wxFrame *frame = (wxFrame*) ancestor;
+ wxMenuBar *menubar = frame->GetMenuBar();
+ if (menubar)
+ {
+ wxNode *node = menubar->GetMenus().First();
+ if (node)
+ {
+ wxMenu *firstMenu = (wxMenu*) node->Data();
+ gtk_menu_shell_select_item(
+ GTK_MENU_SHELL(menubar->m_menubar),
+ firstMenu->m_owner );
+
+ ret = TRUE;
+ break;
+ }
+ }
+ }
+ ancestor = ancestor->GetParent();
+ }
+ }
/*
Damn, I forgot why this didn't work, but it didn't work.
#include "gdk/gdk.h"
#include "gtk/gtk.h"
#include "wx/gtk/win_gtk.h"
+#include "gdk/gdkkeysyms.h"
//-----------------------------------------------------------------------------
// constants
static void gtk_toolbar_detached_callback( GtkWidget *widget, GtkWidget *WXUNUSED(child), wxFrame *win )
{
- if (g_isIdle) wxapp_install_idle_handler();
+ if (g_isIdle)
+ wxapp_install_idle_handler();
if (!win->m_hasVMT) return;
ret = win->GetEventHandler()->ProcessEvent( new_event );
}
+ /* generate wxID_CANCEL if <esc> has been pressed (typically in dialogs) */
if ( (!ret) &&
(gdk_event->keyval == GDK_Escape) )
{
new_event.SetEventObject( win );
ret = win->GetEventHandler()->ProcessEvent( new_event );
}
+
+ /* pressing F10 will activate the menu bar of the top frame */
+ if ( (!ret) &&
+ (gdk_event->keyval == GDK_F10) )
+ {
+ wxWindow *ancestor = win;
+ while (ancestor)
+ {
+ if (wxIsKindOf(ancestor,wxFrame))
+ {
+ wxFrame *frame = (wxFrame*) ancestor;
+ wxMenuBar *menubar = frame->GetMenuBar();
+ if (menubar)
+ {
+ wxNode *node = menubar->GetMenus().First();
+ if (node)
+ {
+ wxMenu *firstMenu = (wxMenu*) node->Data();
+ gtk_menu_shell_select_item(
+ GTK_MENU_SHELL(menubar->m_menubar),
+ firstMenu->m_owner );
+
+ ret = TRUE;
+ break;
+ }
+ }
+ }
+ ancestor = ancestor->GetParent();
+ }
+ }
/*
Damn, I forgot why this didn't work, but it didn't work.