]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk/menu.cpp
Fixed wxRichTextCtrl base class
[wxWidgets.git] / src / gtk / menu.cpp
index 47ece481a3592c403b6a34f586d21a5d0249a4c6..a0a65e89c2a039d03b97351f45303e948083f24c 100644 (file)
@@ -91,9 +91,11 @@ void wxMenuBar::Init(size_t n, wxMenu *menus[], const wxString titles[], long st
 
     PostCreation();
 
-    ApplyWidgetStyle();
+    GTKApplyWidgetStyle();
 #endif // wxUSE_LIBHILDON/!wxUSE_LIBHILDON
 
+    g_object_ref(m_widget);
+
     for (size_t i = 0; i < n; ++i )
         Append(menus[i], titles[i]);
 }
@@ -120,7 +122,7 @@ wxMenuBar::~wxMenuBar()
 static void
 wxMenubarUnsetInvokingWindow(wxMenu* menu, wxWindow* win, GtkWindow* tlw = NULL)
 {
-    menu->SetInvokingWindow( (wxWindow*) NULL );
+    menu->SetInvokingWindow( NULL );
 
     // support for native hot keys
     if (menu->m_accel)
@@ -224,7 +226,7 @@ void wxMenuBar::Attach(wxFrame *frame)
 
 void wxMenuBar::UnsetInvokingWindow( wxWindow *win )
 {
-    m_invokingWindow = (wxWindow*) NULL;
+    m_invokingWindow = NULL;
 
     wxMenuList::compatibility_iterator node = m_menus.GetFirst();
     while (node)
@@ -314,7 +316,7 @@ wxMenu *wxMenuBar::Replace(size_t pos, wxMenu *menu, const wxString& title)
     wxMenu *menuOld = Remove(pos);
     if ( menuOld && !Insert(pos, menu, title) )
     {
-        return (wxMenu*) NULL;
+        return NULL;
     }
 
     // either Insert() succeeded or Remove() failed and menuOld is NULL
@@ -325,7 +327,7 @@ wxMenu *wxMenuBar::Remove(size_t pos)
 {
     wxMenu *menu = wxMenuBarBase::Remove(pos);
     if ( !menu )
-        return (wxMenu*) NULL;
+        return NULL;
 
     gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu->m_owner), NULL);
     gtk_container_remove(GTK_CONTAINER(m_menubar), menu->m_owner);
@@ -408,7 +410,7 @@ wxMenuItem* wxMenuBar::FindItem( int id, wxMenu **menuForItem ) const
 
     if ( menuForItem )
     {
-        *menuForItem = result ? result->GetMenu() : (wxMenu *)NULL;
+        *menuForItem = result ? result->GetMenu() : NULL;
     }
 
     return result;
@@ -693,6 +695,16 @@ static void menu_hide(GtkWidget*, wxMenu* menu)
 }
 }
 
+// "can_activate_accel" from menu item
+extern "C" {
+static gboolean can_activate_accel(GtkWidget*, guint, wxMenu* menu)
+{
+    menu->UpdateUI();
+    // always allow our "activate" handler to be called
+    return true;
+}
+}
+
 IMPLEMENT_DYNAMIC_CLASS(wxMenu,wxEvtHandler)
 
 void wxMenu::Init()
@@ -706,7 +718,7 @@ void wxMenu::Init()
     g_object_ref(m_menu);
     gtk_object_sink(GTK_OBJECT(m_menu));
 
-    m_owner = (GtkWidget*) NULL;
+    m_owner = NULL;
 
     // Tearoffs are entries, just like separators. So if we want this
     // menu to be a tear-off one, we just append a tearoff entry
@@ -830,6 +842,8 @@ bool wxMenu::GtkAppend(wxMenuItem *mitem, int pos)
         }
         else
         {
+            g_signal_connect(menuItem, "can_activate_accel",
+                G_CALLBACK(can_activate_accel), this);
             g_signal_connect (menuItem, "activate",
                               G_CALLBACK(menuitem_activate),
                               mitem);
@@ -1189,6 +1203,12 @@ const char *wxGetStockGtkID(wxWindowID id)
         #define STOCKITEM_26(wx,gtk)
     #endif
 
+    #if GTK_CHECK_VERSION(2,8,0)
+        #define STOCKITEM_28(wx,gtk) STOCKITEM(wx,gtk)
+    #else
+        #define STOCKITEM_28(wx,gtk)
+    #endif
+
     #if GTK_CHECK_VERSION(2,10,0)
         #define STOCKITEM_210(wx,gtk) STOCKITEM(wx,gtk)
     #else
@@ -1201,52 +1221,70 @@ const char *wxGetStockGtkID(wxWindowID id)
         STOCKITEM_26(wxID_ABOUT,         GTK_STOCK_ABOUT)
         STOCKITEM(wxID_ADD,              GTK_STOCK_ADD)
         STOCKITEM(wxID_APPLY,            GTK_STOCK_APPLY)
+        STOCKITEM(wxID_BACKWARD,         GTK_STOCK_GO_BACK)
         STOCKITEM(wxID_BOLD,             GTK_STOCK_BOLD)
+        STOCKITEM(wxID_BOTTOM,           GTK_STOCK_GOTO_BOTTOM)
         STOCKITEM(wxID_CANCEL,           GTK_STOCK_CANCEL)
+        STOCKITEM(wxID_CDROM,            GTK_STOCK_CDROM)
         STOCKITEM(wxID_CLEAR,            GTK_STOCK_CLEAR)
         STOCKITEM(wxID_CLOSE,            GTK_STOCK_CLOSE)
+        STOCKITEM(wxID_CONVERT,          GTK_STOCK_CONVERT)
         STOCKITEM(wxID_COPY,             GTK_STOCK_COPY)
         STOCKITEM(wxID_CUT,              GTK_STOCK_CUT)
         STOCKITEM(wxID_DELETE,           GTK_STOCK_DELETE)
+        STOCKITEM(wxID_DOWN,             GTK_STOCK_GO_DOWN)
         STOCKITEM_26(wxID_EDIT,          GTK_STOCK_EDIT)
-        STOCKITEM(wxID_FIND,             GTK_STOCK_FIND)
+        STOCKITEM(wxID_EXECUTE,          GTK_STOCK_EXECUTE)
+        STOCKITEM(wxID_EXIT,             GTK_STOCK_QUIT)
         STOCKITEM_26(wxID_FILE,          GTK_STOCK_FILE)
-        STOCKITEM(wxID_REPLACE,          GTK_STOCK_FIND_AND_REPLACE)
-        STOCKITEM(wxID_BACKWARD,         GTK_STOCK_GO_BACK)
-        STOCKITEM(wxID_DOWN,             GTK_STOCK_GO_DOWN)
+        STOCKITEM(wxID_FIND,             GTK_STOCK_FIND)
+        STOCKITEM(wxID_FIRST,            GTK_STOCK_GOTO_FIRST)
+        STOCKITEM(wxID_FLOPPY,           GTK_STOCK_FLOPPY)
         STOCKITEM(wxID_FORWARD,          GTK_STOCK_GO_FORWARD)
-        STOCKITEM(wxID_UP,               GTK_STOCK_GO_UP)
+        STOCKITEM(wxID_HARDDISK,         GTK_STOCK_HARDDISK)
         STOCKITEM(wxID_HELP,             GTK_STOCK_HELP)
         STOCKITEM(wxID_HOME,             GTK_STOCK_HOME)
         STOCKITEM(wxID_INDENT,           GTK_STOCK_INDENT)
         STOCKITEM(wxID_INDEX,            GTK_STOCK_INDEX)
+        STOCKITEM_28(wxID_INFO,           GTK_STOCK_INFO)
         STOCKITEM(wxID_ITALIC,           GTK_STOCK_ITALIC)
+        STOCKITEM(wxID_JUMP_TO,          GTK_STOCK_JUMP_TO)
         STOCKITEM(wxID_JUSTIFY_CENTER,   GTK_STOCK_JUSTIFY_CENTER)
         STOCKITEM(wxID_JUSTIFY_FILL,     GTK_STOCK_JUSTIFY_FILL)
         STOCKITEM(wxID_JUSTIFY_LEFT,     GTK_STOCK_JUSTIFY_LEFT)
         STOCKITEM(wxID_JUSTIFY_RIGHT,    GTK_STOCK_JUSTIFY_RIGHT)
+        STOCKITEM(wxID_LAST,             GTK_STOCK_GOTO_LAST)
+        STOCKITEM(wxID_NETWORK,          GTK_STOCK_NETWORK)
         STOCKITEM(wxID_NEW,              GTK_STOCK_NEW)
         STOCKITEM(wxID_NO,               GTK_STOCK_NO)
         STOCKITEM(wxID_OK,               GTK_STOCK_OK)
         STOCKITEM(wxID_OPEN,             GTK_STOCK_OPEN)
         STOCKITEM(wxID_PASTE,            GTK_STOCK_PASTE)
         STOCKITEM(wxID_PREFERENCES,      GTK_STOCK_PREFERENCES)
-        STOCKITEM(wxID_PRINT,            GTK_STOCK_PRINT)
         STOCKITEM(wxID_PREVIEW,          GTK_STOCK_PRINT_PREVIEW)
+        STOCKITEM(wxID_PRINT,            GTK_STOCK_PRINT)
         STOCKITEM(wxID_PROPERTIES,       GTK_STOCK_PROPERTIES)
-        STOCKITEM(wxID_EXIT,             GTK_STOCK_QUIT)
         STOCKITEM(wxID_REDO,             GTK_STOCK_REDO)
         STOCKITEM(wxID_REFRESH,          GTK_STOCK_REFRESH)
         STOCKITEM(wxID_REMOVE,           GTK_STOCK_REMOVE)
+        STOCKITEM(wxID_REPLACE,          GTK_STOCK_FIND_AND_REPLACE)
         STOCKITEM(wxID_REVERT_TO_SAVED,  GTK_STOCK_REVERT_TO_SAVED)
         STOCKITEM(wxID_SAVE,             GTK_STOCK_SAVE)
         STOCKITEM(wxID_SAVEAS,           GTK_STOCK_SAVE_AS)
         STOCKITEM_210(wxID_SELECTALL,    GTK_STOCK_SELECT_ALL)
+        STOCKITEM(wxID_SELECT_COLOR,     GTK_STOCK_SELECT_COLOR)
+        STOCKITEM(wxID_SELECT_FONT,      GTK_STOCK_SELECT_FONT)
+        STOCKITEM(wxID_SORT_ASCENDING,   GTK_STOCK_SORT_ASCENDING)
+        STOCKITEM(wxID_SORT_DESCENDING,  GTK_STOCK_SORT_DESCENDING)
+        STOCKITEM(wxID_SPELL_CHECK,      GTK_STOCK_SPELL_CHECK)
         STOCKITEM(wxID_STOP,             GTK_STOCK_STOP)
+        STOCKITEM(wxID_STRIKETHROUGH,    GTK_STOCK_STRIKETHROUGH)
+        STOCKITEM(wxID_TOP,              GTK_STOCK_GOTO_TOP)
         STOCKITEM(wxID_UNDELETE,         GTK_STOCK_UNDELETE)
         STOCKITEM(wxID_UNDERLINE,        GTK_STOCK_UNDERLINE)
         STOCKITEM(wxID_UNDO,             GTK_STOCK_UNDO)
         STOCKITEM(wxID_UNINDENT,         GTK_STOCK_UNINDENT)
+        STOCKITEM(wxID_UP,               GTK_STOCK_GO_UP)
         STOCKITEM(wxID_YES,              GTK_STOCK_YES)
         STOCKITEM(wxID_ZOOM_100,         GTK_STOCK_ZOOM_100)
         STOCKITEM(wxID_ZOOM_FIT,         GTK_STOCK_ZOOM_FIT)