]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk/menu.cpp
fixed wrong assert
[wxWidgets.git] / src / gtk / menu.cpp
index e2b79dbf829a6a1c3f3825aa301afa71a0d562f2..d8f8db5bdd7e345d0b00bb9f632979d5c804f536 100644 (file)
@@ -37,7 +37,8 @@ wxMenuBar::wxMenuBar( long style )
 {
     /* the parent window is known after wxFrame::SetMenu() */
     m_needParent = FALSE; 
-
+    m_style = style;
+    
     PreCreation( (wxWindow *) NULL, -1, wxDefaultPosition, wxDefaultSize, style, "menu" );
 
     m_menus.DeleteContents( TRUE );
@@ -69,7 +70,8 @@ wxMenuBar::wxMenuBar()
 {
     /* the parent window is known after wxFrame::SetMenu() */
     m_needParent = FALSE;
-
+    m_style = 0;
+    
     PreCreation( (wxWindow *) NULL, -1, wxDefaultPosition, wxDefaultSize, 0, "menu" );
 
     m_menus.DeleteContents( TRUE );
@@ -182,9 +184,11 @@ void wxMenuBar::Append( wxMenu *menu, const wxString &title )
 {
     m_menus.Append( menu );
     
+    const wxChar *pc;
+    
     /* GTK 1.2 wants to have "_" instead of "&" for accelerators */
     wxString str;
-    for ( const wxChar *pc = title; *pc != _T('\0'); pc++ )
+    for ( pc = title; *pc != _T('\0'); pc++ )
     {
         if (*pc == _T('&'))
        {
@@ -216,13 +220,19 @@ void wxMenuBar::Append( wxMenu *menu, const wxString &title )
     entry.accelerator = (gchar*) NULL;
     entry.callback = (GtkItemFactoryCallback) NULL;
     entry.callback_action = 0;
-    entry.item_type = "<Branch>";
+    
+/*
+    if ((m_style & wxMB_TEAROFF) || (menu->GetStyle() & wxMENU_TEAROFF)) 
+        entry.item_type = "<Tearoff>";
+    else
+*/
+        entry.item_type = "<Branch>";
     
     gtk_item_factory_create_item( m_factory, &entry, (gpointer) this, 2 );  /* what is 2 ? */
     
     /* in order to get the pointer to the item we need the item text _without_ underscores */
     wxString tmp = _T("<main>/");
-    for ( const wxChar *pc = str; *pc != _T('\0'); pc++ )
+    for ( pc = str; *pc != _T('\0'); pc++ )
     {
         if (*pc == _T('_')) pc++; /* skip it */
         tmp << *pc;
@@ -232,6 +242,16 @@ void wxMenuBar::Append( wxMenu *menu, const wxString &title )
     
     gtk_menu_item_set_submenu( GTK_MENU_ITEM(menu->m_owner), menu->m_menu );
     
+/*
+    if ((m_style & wxMB_TEAROFF) || (menu->GetStyle() & wxMENU_TEAROFF)) 
+    {
+        entry.item_type = "<Tearoff>";
+       tmp.Remove( 0, 6 );
+       tmp.Append( _T("/tearoff") );
+        strcpy( buf, tmp.mb_str() );
+        gtk_item_factory_create_item( m_factory, &entry, (gpointer) this, 2 );
+    }
+*/
 #else
 
     menu->m_owner = gtk_menu_item_new_with_label( str.mb_str() );
@@ -632,11 +652,23 @@ bool wxMenuItem::IsChecked() const
 
 IMPLEMENT_DYNAMIC_CLASS(wxMenu,wxEvtHandler)
 
-wxMenu::wxMenu( const wxString& title, const wxFunction func )
+wxMenu::wxMenu( const wxString& title, const wxFunction func, long style )
+{
+   Init(title, func, style);
+}
+
+wxMenu::wxMenu(long style)
+{
+   Init(wxEmptyString, (wxFunction) NULL, style);
+}
+
+void
+wxMenu::Init( const wxString& title, const wxFunction func, long style )
 {
     m_title = title;
     m_items.DeleteContents( TRUE );
     m_invokingWindow = (wxWindow *) NULL;
+    m_style = style;
     
 #if (GTK_MINOR_VERSION > 0)
     m_accel = gtk_accel_group_new();
@@ -829,7 +861,13 @@ void wxMenu::Append( int id, const wxString &item, wxMenu *subMenu, const wxStri
     entry.path = buf;
     entry.callback = (GtkItemFactoryCallback) 0;
     entry.callback_action = 0;
-    entry.item_type = "<Branch>";
+    
+/*
+    if (m_style & wxMENU_TEAROFF)
+        entry.item_type = "<Tearoff>";
+    else
+*/
+        entry.item_type = "<Branch>";
     
     gtk_item_factory_create_item( m_factory, &entry, (gpointer) this, 2 );  /* what is 2 ? */