]> git.saurik.com Git - wxWidgets.git/commitdiff
YOu can now activate the menu pressing F10 anywhere.
authorRobert Roebling <robert@roebling.de>
Wed, 19 May 1999 13:41:55 +0000 (13:41 +0000)
committerRobert Roebling <robert@roebling.de>
Wed, 19 May 1999 13:41:55 +0000 (13:41 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@2511 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/gtk/menu.h
include/wx/gtk1/menu.h
src/gtk/frame.cpp
src/gtk/window.cpp
src/gtk1/frame.cpp
src/gtk1/window.cpp

index 1e1d52349af08cae5f11cf515d425b1c8e5df6a0..f571fe084edf377de5056b88c869942b1a4d5a85 100644 (file)
@@ -95,8 +95,6 @@ public:
 
     GtkAccelGroup   *m_accel;
     GtkItemFactory  *m_factory;
-    
-private:
     wxList           m_menus;
     GtkWidget       *m_menubar;
 };
index 1e1d52349af08cae5f11cf515d425b1c8e5df6a0..f571fe084edf377de5056b88c869942b1a4d5a85 100644 (file)
@@ -95,8 +95,6 @@ public:
 
     GtkAccelGroup   *m_accel;
     GtkItemFactory  *m_factory;
-    
-private:
     wxList           m_menus;
     GtkWidget       *m_menubar;
 };
index 365f857639e55869b350db9cfb9a8edd8a4673ca..e0b475caae32176b96775e8e35fb442c9b608a18 100644 (file)
@@ -24,6 +24,7 @@
 #include "gdk/gdk.h"
 #include "gtk/gtk.h"
 #include "wx/gtk/win_gtk.h"
+#include "gdk/gdkkeysyms.h"
 
 //-----------------------------------------------------------------------------
 // constants
@@ -132,7 +133,8 @@ static void gtk_toolbar_attached_callback( GtkWidget *WXUNUSED(widget), GtkWidge
 
 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;
     
index 73262734014ce7139085a95f5b3fec93647880b5..691f76d0c9645f25976ef4ef9d36e37885d9c401 100644 (file)
@@ -630,6 +630,7 @@ static gint gtk_window_key_press_callback( GtkWidget *widget, GdkEventKey *gdk_e
         ret = win->GetEventHandler()->ProcessEvent( new_event );
     }
 
+    /* generate wxID_CANCEL if <esc> has been pressed (typically in dialogs) */
     if ( (!ret) &&
          (gdk_event->keyval == GDK_Escape) )
     {
@@ -637,6 +638,36 @@ static gint gtk_window_key_press_callback( GtkWidget *widget, GdkEventKey *gdk_e
         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.
index 365f857639e55869b350db9cfb9a8edd8a4673ca..e0b475caae32176b96775e8e35fb442c9b608a18 100644 (file)
@@ -24,6 +24,7 @@
 #include "gdk/gdk.h"
 #include "gtk/gtk.h"
 #include "wx/gtk/win_gtk.h"
+#include "gdk/gdkkeysyms.h"
 
 //-----------------------------------------------------------------------------
 // constants
@@ -132,7 +133,8 @@ static void gtk_toolbar_attached_callback( GtkWidget *WXUNUSED(widget), GtkWidge
 
 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;
     
index 73262734014ce7139085a95f5b3fec93647880b5..691f76d0c9645f25976ef4ef9d36e37885d9c401 100644 (file)
@@ -630,6 +630,7 @@ static gint gtk_window_key_press_callback( GtkWidget *widget, GdkEventKey *gdk_e
         ret = win->GetEventHandler()->ProcessEvent( new_event );
     }
 
+    /* generate wxID_CANCEL if <esc> has been pressed (typically in dialogs) */
     if ( (!ret) &&
          (gdk_event->keyval == GDK_Escape) )
     {
@@ -637,6 +638,36 @@ static gint gtk_window_key_press_callback( GtkWidget *widget, GdkEventKey *gdk_e
         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.