#include "wx/log.h"
#include "wx/frame.h"
#include "wx/bitmap.h"
+ #include "wx/app.h"
#endif
#include "wx/accel.h"
}
}
+void wxMenuBar::SetLayoutDirection(wxLayoutDirection dir)
+{
+ if ( dir == wxLayout_Default )
+ {
+ const wxWindow *const frame = GetFrame();
+ if ( frame )
+ {
+ // inherit layout from frame.
+ dir = frame->GetLayoutDirection();
+ }
+ else // use global layout
+ {
+ dir = wxTheApp->GetLayoutDirection();
+ }
+ }
+
+ if ( dir == wxLayout_Default )
+ return;
+
+ GTKSetLayout(m_menubar, dir);
+
+ // also set the layout of all menus we already have (new ones will inherit
+ // the current layout)
+ for ( wxMenuList::compatibility_iterator node = m_menus.GetFirst();
+ node;
+ node = node->GetNext() )
+ {
+ wxMenu *const menu = node->GetData();
+ menu->SetLayoutDirection(dir);
+ }
+}
+
+wxLayoutDirection wxMenuBar::GetLayoutDirection() const
+{
+ return GTKGetLayout(m_menubar);
+}
+
+void wxMenuBar::Attach(wxFrame *frame)
+{
+ wxMenuBarBase::Attach(frame);
+
+ SetLayoutDirection(wxLayout_Default);
+}
+
void wxMenuBar::UnsetInvokingWindow( wxWindow *win )
{
m_invokingWindow = (wxWindow*) NULL;
// The "m_owner" is the "menu item"
menu->m_owner = gtk_menu_item_new_with_mnemonic( wxGTK_CONV( str ) );
+ menu->SetLayoutDirection(GetLayoutDirection());
gtk_widget_show( menu->m_owner );
{
m_text.Empty();
m_text = GTKProcessMenuItemLabel(str, &m_hotKey);
- // wxPrintf( wxT("DoSetText(): str %s m_text %s hotkey %s\n"), str.c_str(), m_text.c_str(), m_hotKey.c_str() );
}
#if wxUSE_ACCEL
if ( !GetHotKey() )
{
// nothing
- return (wxAcceleratorEntry *)NULL;
+ return NULL;
}
- // as wxGetAccelFromString() looks for TAB, insert a dummy one here
+ // accelerator parsing code looks for them after a TAB, so insert a dummy
+ // one here
wxString label;
label << wxT('\t') << GetHotKey();
- return wxGetAccelFromString(label);
+ return wxAcceleratorEntry::Create(label);
}
#endif // wxUSE_ACCEL
}
}
+void wxMenu::SetLayoutDirection(const wxLayoutDirection dir)
+{
+ if ( m_owner )
+ wxWindow::GTKSetLayout(m_owner, dir);
+ //else: will be called later by wxMenuBar again
+}
+
+wxLayoutDirection wxMenu::GetLayoutDirection() const
+{
+ return wxWindow::GTKGetLayout(m_owner);
+}
+
bool wxMenu::GtkAppend(wxMenuItem *mitem, int pos)
{
GtkWidget *menuItem;
return wxNOT_FOUND;
}
+void wxMenu::Attach(wxMenuBarBase *menubar)
+{
+ wxMenuBase::Attach(menubar);
+
+ // inherit layout direction from menubar.
+ SetLayoutDirection(menubar->GetLayoutDirection());
+}
+
// ----------------------------------------------------------------------------
// helpers
// ----------------------------------------------------------------------------
hotkey += wxString::Format(wxT("Special%d"), code - WXK_SPECIAL1 + 1);
break;
*/
- // if there are any other keys wxGetAccelFromString() may
+ // if there are any other keys wxAcceleratorEntry::Create() may
// return, we should process them here
default: