wxMenu ctor made compatible again

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@3058 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
1999-07-19 22:17:40 +00:00
parent 910484a67d
commit b908d2244a
9 changed files with 122 additions and 42 deletions

View File

@@ -501,15 +501,6 @@ static void gtk_menu_hilight_callback( GtkWidget *widget, wxMenu *menu )
wxMenuEvent event( wxEVT_MENU_HIGHLIGHT, id );
event.SetEventObject( menu );
/* wxMSW doesn't call callback here either
if (menu->m_callback)
{
(void) (*(menu->m_callback)) (*menu, event);
return;
}
*/
if (menu->GetEventHandler()->ProcessEvent(event))
return;
@@ -646,7 +637,12 @@ wxMenu::wxMenu(long style)
}
void
wxMenu::Init( const wxString& title, const wxFunction func, long style )
wxMenu::Init( const wxString& title,
long style,
#ifdef WXWIN_COMPATIBILITY
, const wxFunction func
#endif
)
{
m_title = title;
m_items.DeleteContents( TRUE );
@@ -661,7 +657,10 @@ wxMenu::Init( const wxString& title, const wxFunction func, long style )
m_menu = gtk_menu_new(); // Do not show!
#endif
#ifdef WXWIN_COMPATIBILITY
m_callback = func;
#endif
m_eventHandler = this;
m_clientData = (void*) NULL;

View File

@@ -501,15 +501,6 @@ static void gtk_menu_hilight_callback( GtkWidget *widget, wxMenu *menu )
wxMenuEvent event( wxEVT_MENU_HIGHLIGHT, id );
event.SetEventObject( menu );
/* wxMSW doesn't call callback here either
if (menu->m_callback)
{
(void) (*(menu->m_callback)) (*menu, event);
return;
}
*/
if (menu->GetEventHandler()->ProcessEvent(event))
return;
@@ -646,7 +637,12 @@ wxMenu::wxMenu(long style)
}
void
wxMenu::Init( const wxString& title, const wxFunction func, long style )
wxMenu::Init( const wxString& title,
long style,
#ifdef WXWIN_COMPATIBILITY
, const wxFunction func
#endif
)
{
m_title = title;
m_items.DeleteContents( TRUE );
@@ -661,7 +657,10 @@ wxMenu::Init( const wxString& title, const wxFunction func, long style )
m_menu = gtk_menu_new(); // Do not show!
#endif
#ifdef WXWIN_COMPATIBILITY
m_callback = func;
#endif
m_eventHandler = this;
m_clientData = (void*) NULL;

View File

@@ -650,6 +650,35 @@ bool wxListBox::SetStringSelection (const wxString& s, bool flag)
return FALSE;
}
wxSize wxListBox::DoGetBestSize()
{
// find the widest string
int wLine;
int wListbox = 0;
for ( int i = 0; i < m_noItems; i++ )
{
wxString str(GetString(i));
GetTextExtent(str, &wLine, NULL);
if ( wLine > wListbox )
wListbox = wLine;
}
// give it some reasonable default value if there are no strings in the
// list
if ( wListbox == 0 )
wListbox = 100;
// the listbox should be slightly larger than the widest string
int cx, cy;
wxGetCharSize(GetHWND(), &cx, &cy, &GetFont());
wListbox += 3*cx;
int hListbox = EDIT_HEIGHT_FROM_CHAR_HEIGHT(cy)*(wxMax(m_noItems, 7));
return wxSize(wListbox, hListbox);
}
// Is this the right thing? Won't setselection generate a command
// event too? No! It'll just generate a setselection event.
// But we still can't have this being called whenever a real command

View File

@@ -78,9 +78,13 @@ static const int idMenuTitle = -2;
// ---------------------------------------------------------------------------
// Construct a menu with optional title (then use append)
wxMenu::wxMenu(const wxString& title, const wxFunction func)
: m_title(title)
void wxMenu::Init(const wxString& title
#ifdef WXWIN_COMPATIBILITY
, const wxFunction func
#endif
)
{
m_title = title;
m_parent = NULL;
m_eventHandler = this;
m_pInvokingWindow = NULL;