X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1ab9e06d6ac4c1ac41fdbe88b0862dc62a2112f9..370efbe74165c03642ea7620d35d9e0be8572d74:/src/gtk/menu.cpp?ds=sidebyside diff --git a/src/gtk/menu.cpp b/src/gtk/menu.cpp index 10763c9f01..ae0598e5ed 100644 --- a/src/gtk/menu.cpp +++ b/src/gtk/menu.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: menu.cpp +// Name: src/gtk/menu.cpp // Purpose: // Author: Robert Roebling // Id: $Id$ @@ -11,9 +11,13 @@ #include "wx/wxprec.h" #include "wx/menu.h" -#include "wx/log.h" -#include "wx/intl.h" -#include "wx/app.h" + +#ifndef WX_PRECOMP + #include "wx/intl.h" + #include "wx/log.h" + #include "wx/app.h" +#endif + #include "wx/bitmap.h" #if wxUSE_ACCEL @@ -25,21 +29,14 @@ #include // FIXME: is this right? somehow I don't think so (VZ) -#ifdef __WXGTK20__ - #include - - #define gtk_accel_group_attach(g, o) gtk_window_add_accel_group((o), (g)) - #define gtk_accel_group_detach(g, o) gtk_window_remove_accel_group((o), (g)) - #define gtk_menu_ensure_uline_accel_group(m) gtk_menu_get_accel_group(m) - - #define ACCEL_OBJECT GtkWindow - #define ACCEL_OBJECTS(a) (a)->acceleratables - #define ACCEL_OBJ_CAST(obj) ((GtkWindow*) obj) -#else // GTK+ 1.x - #define ACCEL_OBJECT GtkObject - #define ACCEL_OBJECTS(a) (a)->attach_objects - #define ACCEL_OBJ_CAST(obj) GTK_OBJECT(obj) -#endif + +#define gtk_accel_group_attach(g, o) gtk_window_add_accel_group((o), (g)) +//#define gtk_accel_group_detach(g, o) gtk_window_remove_accel_group((o), (g)) +//#define gtk_menu_ensure_uline_accel_group(m) gtk_menu_get_accel_group(m) + +#define ACCEL_OBJECT GtkWindow +#define ACCEL_OBJECTS(a) (a)->acceleratables +#define ACCEL_OBJ_CAST(obj) ((GtkWindow*) obj) // we use normal item but with a special id for the menu title static const int wxGTK_TITLE_ID = -3; @@ -48,9 +45,6 @@ static const int wxGTK_TITLE_ID = -3; // idle system //----------------------------------------------------------------------------- -extern void wxapp_install_idle_handler(); -extern bool g_isIdle; - #if wxUSE_ACCEL static wxString GetGtkHotKey( const wxMenuItem& item ); #endif @@ -150,7 +144,7 @@ IMPLEMENT_DYNAMIC_CLASS(wxMenuBar,wxWindow) void wxMenuBar::Init(size_t n, wxMenu *menus[], const wxString titles[], long style) { // the parent window is known after wxFrame::SetMenu() - m_needParent = FALSE; + m_needParent = false; m_style = style; m_invokingWindow = (wxWindow*) NULL; @@ -285,7 +279,7 @@ void wxMenuBar::UnsetInvokingWindow( wxWindow *win ) bool wxMenuBar::Append( wxMenu *menu, const wxString &title ) { if ( !wxMenuBarBase::Append( menu, title ) ) - return FALSE; + return false; return GtkAppend(menu, title); } @@ -331,20 +325,20 @@ bool wxMenuBar::GtkAppend(wxMenu *menu, const wxString& title, int pos) frame->UpdateMenuBarSize(); } - return TRUE; + return true; } bool wxMenuBar::Insert(size_t pos, wxMenu *menu, const wxString& title) { if ( !wxMenuBarBase::Insert(pos, menu, title) ) - return FALSE; + return false; // TODO if ( !GtkAppend(menu, title, (int)pos) ) - return FALSE; + return false; - return TRUE; + return true; } wxMenu *wxMenuBar::Replace(size_t pos, wxMenu *menu, const wxString& title) @@ -511,17 +505,7 @@ void wxMenuBar::SetLabelTop( size_t pos, const wxString& label ) menu->SetTitle( str ); if (menu->m_owner) - { - GtkLabel *glabel = GTK_LABEL( GTK_BIN(menu->m_owner)->child ); - - /* set new text */ - gtk_label_set_text( glabel, wxGTK_CONV( str ) ); - - /* reparse key accel */ - (void)gtk_label_parse_uline (GTK_LABEL(glabel), wxGTK_CONV( str ) ); - gtk_accel_label_refetch( GTK_ACCEL_LABEL(glabel) ); - } - + gtk_label_set_text_with_mnemonic( GTK_LABEL( GTK_BIN(menu->m_owner)->child), wxGTK_CONV(str) ); } //----------------------------------------------------------------------------- @@ -760,7 +744,7 @@ void wxMenuItem::SetText( const wxString& str ) oldLabel.Replace(wxT("_"), wxT("")); wxString label1 = wxStripMenuCodes(str); wxString oldhotkey = GetHotKey(); // Store the old hotkey in Ctrl-foo format - wxCharBuffer oldbuf = wxGTK_CONV( GetGtkHotKey(*this) ); // and as foo + wxCharBuffer oldbuf = wxGTK_CONV_SYS( GetGtkHotKey(*this) ); // and as foo DoSetText(str); @@ -776,7 +760,7 @@ void wxMenuItem::SetText( const wxString& str ) else label = GTK_LABEL( GTK_BIN(m_menuItem)->child ); - gtk_label_set_text_with_mnemonic( GTK_LABEL(label), wxGTK_CONV(m_text) ); + gtk_label_set_text_with_mnemonic( GTK_LABEL(label), wxGTK_CONV_SYS(m_text) ); } guint accel_key; @@ -790,7 +774,7 @@ void wxMenuItem::SetText( const wxString& str ) accel_mods ); } - wxCharBuffer buf = wxGTK_CONV( GetGtkHotKey(*this) ); + wxCharBuffer buf = wxGTK_CONV_SYS( GetGtkHotKey(*this) ); gtk_accelerator_parse( (const char*) buf, &accel_key, &accel_mods); if (accel_key != 0) { @@ -875,7 +859,7 @@ void wxMenuItem::Check( bool check ) { case wxITEM_CHECK: case wxITEM_RADIO: - gtk_check_menu_item_set_state( (GtkCheckMenuItem*)m_menuItem, (gint)check ); + gtk_check_menu_item_set_active( (GtkCheckMenuItem*)m_menuItem, (gint)check ); break; default: @@ -893,9 +877,9 @@ void wxMenuItem::Enable( bool enable ) bool wxMenuItem::IsChecked() const { - wxCHECK_MSG( m_menuItem, FALSE, wxT("invalid menu item") ); + wxCHECK_MSG( m_menuItem, false, wxT("invalid menu item") ); - wxCHECK_MSG( IsCheckable(), FALSE, + wxCHECK_MSG( IsCheckable(), false, wxT("can't get state of uncheckable item!") ); return ((GtkCheckMenuItem*)m_menuItem)->active != 0; @@ -967,7 +951,7 @@ bool wxMenu::GtkAppend(wxMenuItem *mitem, int pos) text = mitem->GetText(); const wxBitmap *bitmap = &mitem->GetBitmap(); - menuItem = gtk_image_menu_item_new_with_mnemonic( wxGTK_CONV( text ) ); + menuItem = gtk_image_menu_item_new_with_mnemonic( wxGTK_CONV_SYS( text ) ); GtkWidget *image; if (bitmap->HasPixbuf()) @@ -998,7 +982,7 @@ bool wxMenu::GtkAppend(wxMenuItem *mitem, int pos) { case wxITEM_CHECK: { - menuItem = gtk_check_menu_item_new_with_mnemonic( wxGTK_CONV( text ) ); + menuItem = gtk_check_menu_item_new_with_mnemonic( wxGTK_CONV_SYS( text ) ); m_prevRadio = NULL; break; } @@ -1009,12 +993,14 @@ bool wxMenu::GtkAppend(wxMenuItem *mitem, int pos) if ( m_prevRadio == NULL ) { // start of a new radio group - m_prevRadio = menuItem = gtk_radio_menu_item_new_with_mnemonic( group, wxGTK_CONV( text ) ); + m_prevRadio = menuItem = + gtk_radio_menu_item_new_with_mnemonic( group, wxGTK_CONV_SYS( text ) ); } else // continue the radio group { group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (m_prevRadio)); - m_prevRadio = menuItem = gtk_radio_menu_item_new_with_mnemonic( group, wxGTK_CONV( text ) ); + m_prevRadio = menuItem = + gtk_radio_menu_item_new_with_mnemonic( group, wxGTK_CONV_SYS( text ) ); } break; } @@ -1025,7 +1011,7 @@ bool wxMenu::GtkAppend(wxMenuItem *mitem, int pos) case wxITEM_NORMAL: { - menuItem = gtk_menu_item_new_with_mnemonic( wxGTK_CONV( text ) ); + menuItem = gtk_menu_item_new_with_mnemonic( wxGTK_CONV_SYS( text ) ); m_prevRadio = NULL; break; } @@ -1035,7 +1021,7 @@ bool wxMenu::GtkAppend(wxMenuItem *mitem, int pos) guint accel_key; GdkModifierType accel_mods; - wxCharBuffer buf = wxGTK_CONV( GetGtkHotKey(*mitem) ); + wxCharBuffer buf = wxGTK_CONV_SYS( GetGtkHotKey(*mitem) ); // wxPrintf( wxT("item: %s hotkey %s\n"), mitem->GetText().c_str(), GetGtkHotKey(*mitem).c_str() ); gtk_accelerator_parse( (const char*) buf, &accel_key, &accel_mods); @@ -1093,7 +1079,7 @@ bool wxMenu::GtkAppend(wxMenuItem *mitem, int pos) // gtk_widget_lock_accelerators(mitem->GetMenuItem()); } - return TRUE; + return true; } wxMenuItem* wxMenu::DoAppend(wxMenuItem *mitem) @@ -1209,12 +1195,10 @@ static wxString GetGtkHotKey( const wxMenuItem& item ) hotkey << wxT("Down" ); break; case WXK_PAGEUP: - case WXK_PRIOR: - hotkey << wxT("Prior" ); + hotkey << wxT("PgUp" ); break; case WXK_PAGEDOWN: - case WXK_NEXT: - hotkey << wxT("Next" ); + hotkey << wxT("PgDn" ); break; case WXK_LEFT: hotkey << wxT("Left" ); @@ -1331,11 +1315,11 @@ static wxString GetGtkHotKey( const wxMenuItem& item ) case WXK_NUMPAD_DOWN: hotkey << wxT("KP_Down" ); break; - case WXK_NUMPAD_PRIOR: case WXK_NUMPAD_PAGEUP: - hotkey << wxT("KP_Prior" ); + case WXK_NUMPAD_PAGEUP: + hotkey << wxT("KP_PgUp" ); break; - case WXK_NUMPAD_NEXT: case WXK_NUMPAD_PAGEDOWN: - hotkey << wxT("KP_Next" ); + case WXK_NUMPAD_PAGEDOWN: + hotkey << wxT("KP_PgDn" ); break; case WXK_NUMPAD_END: hotkey << wxT("KP_End" ); @@ -1421,13 +1405,13 @@ static wxString GetGtkHotKey( const wxMenuItem& item ) #if wxUSE_MENUS_NATIVE -extern "C" +extern "C" WXDLLIMPEXP_CORE void gtk_pop_hide_callback( GtkWidget *WXUNUSED(widget), bool* is_waiting ) { - *is_waiting = FALSE; + *is_waiting = false; } -void SetInvokingWindow( wxMenu *menu, wxWindow* win ) +WXDLLIMPEXP_CORE void SetInvokingWindow( wxMenu *menu, wxWindow* win ) { menu->SetInvokingWindow( win ); @@ -1444,7 +1428,7 @@ void SetInvokingWindow( wxMenu *menu, wxWindow* win ) } } -extern "C" +extern "C" WXDLLIMPEXP_CORE void wxPopupMenuPositionCallback( GtkMenu *menu, gint *x, gint *y, gboolean * WXUNUSED(whatever), @@ -1527,4 +1511,3 @@ bool wxWindowGTK::DoPopupMenu( wxMenu *menu, int x, int y ) } #endif // wxUSE_MENUS_NATIVE -