]> git.saurik.com Git - wxWidgets.git/commitdiff
wxMenu ctor made compatible again
authorVadim Zeitlin <vadim@wxwidgets.org>
Mon, 19 Jul 1999 22:17:40 +0000 (22:17 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Mon, 19 Jul 1999 22:17:40 +0000 (22:17 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@3058 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/gtk/menu.h
include/wx/gtk1/menu.h
include/wx/help.h
include/wx/msw/listbox.h
include/wx/msw/menu.h
src/gtk/menu.cpp
src/gtk1/menu.cpp
src/msw/listbox.cpp
src/msw/menu.cpp

index 3638cee90e4b9d99145f3e6207a0673f91354ea6..78a429d06587c7a1ae202b4ae9ada5b18164bc0c 100644 (file)
@@ -92,7 +92,7 @@ public:
 
     // implementation only
     wxList& GetMenus() { return m_menus; }
-    
+
     void SetInvokingWindow( wxWindow *win );
     void UnsetInvokingWindow( wxWindow *win );
 
@@ -112,9 +112,17 @@ class wxMenu : public wxEvtHandler
     DECLARE_DYNAMIC_CLASS(wxMenu)
 
 public:
-    wxMenu( const wxString& title = wxEmptyString,
-            const wxFunction func = (wxFunction) NULL,
-            long style = 0);
+#ifdef WXWIN_COMPATIBILITY
+    wxMenu( const wxString& title, const wxFunction func)
+    {
+        Init(title, 0, func);
+    }
+#endif
+    wxMenu( const wxString& title = wxEmptyString, long style = 0 )
+    {
+        Init(title, style, NULL);
+    }
+
     wxMenu( long style );
     ~wxMenu();
 
@@ -172,6 +180,8 @@ public:
     // compatibility: these functions are deprecated
     bool Enabled(int id) const { return IsEnabled(id); }
     bool Checked(int id) const { return IsChecked(id); }
+
+    wxFunction m_callback;
 #endif // WXWIN_COMPATIBILITY
 
     // implementation
@@ -186,17 +196,20 @@ public:
     GtkItemFactory  *m_factory;
 
     // used by wxMenuBar
-    inline long GetStyle(void) const { return m_style; }
- private:
+    long GetStyle(void) const { return m_style; }
+
+private:
     // common code for both constructors:
     void Init( const wxString& title,
-               const wxFunction func,
-               long style);
+               long style
+#ifdef WXWIN_COMPATIBILITY
+               , const wxFunction func
+#endif
+               );
 
     wxString       m_title;
     wxList         m_items;
     wxWindow      *m_invokingWindow;
-    wxFunction     m_callback;
     wxEvtHandler  *m_eventHandler;
     void          *m_clientData;
     long           m_style;
index 3638cee90e4b9d99145f3e6207a0673f91354ea6..78a429d06587c7a1ae202b4ae9ada5b18164bc0c 100644 (file)
@@ -92,7 +92,7 @@ public:
 
     // implementation only
     wxList& GetMenus() { return m_menus; }
-    
+
     void SetInvokingWindow( wxWindow *win );
     void UnsetInvokingWindow( wxWindow *win );
 
@@ -112,9 +112,17 @@ class wxMenu : public wxEvtHandler
     DECLARE_DYNAMIC_CLASS(wxMenu)
 
 public:
-    wxMenu( const wxString& title = wxEmptyString,
-            const wxFunction func = (wxFunction) NULL,
-            long style = 0);
+#ifdef WXWIN_COMPATIBILITY
+    wxMenu( const wxString& title, const wxFunction func)
+    {
+        Init(title, 0, func);
+    }
+#endif
+    wxMenu( const wxString& title = wxEmptyString, long style = 0 )
+    {
+        Init(title, style, NULL);
+    }
+
     wxMenu( long style );
     ~wxMenu();
 
@@ -172,6 +180,8 @@ public:
     // compatibility: these functions are deprecated
     bool Enabled(int id) const { return IsEnabled(id); }
     bool Checked(int id) const { return IsChecked(id); }
+
+    wxFunction m_callback;
 #endif // WXWIN_COMPATIBILITY
 
     // implementation
@@ -186,17 +196,20 @@ public:
     GtkItemFactory  *m_factory;
 
     // used by wxMenuBar
-    inline long GetStyle(void) const { return m_style; }
- private:
+    long GetStyle(void) const { return m_style; }
+
+private:
     // common code for both constructors:
     void Init( const wxString& title,
-               const wxFunction func,
-               long style);
+               long style
+#ifdef WXWIN_COMPATIBILITY
+               , const wxFunction func
+#endif
+               );
 
     wxString       m_title;
     wxList         m_items;
     wxWindow      *m_invokingWindow;
-    wxFunction     m_callback;
     wxEvtHandler  *m_eventHandler;
     void          *m_clientData;
     long           m_style;
index 98f7cee571d1bfbddebe130a9063073864539e5a..704244ae095f07de3541555b78e509a725245f09 100644 (file)
@@ -6,6 +6,8 @@
 #ifdef __WXMSW__
     #include "wx/msw/helpwin.h"
 
+    #undef wxHelpController
+    #undef sm_classwxHelpController
     #define wxHelpController wxWinHelpController
     #define sm_classwxHelpController sm_classwxWinHelpController
 #else // !MSW
index 03f08992db745bcd8618841a04aa78f3964b9df5..faf42ede5f03d35ade2815bea695c7063e90d4e2 100644 (file)
@@ -129,6 +129,8 @@ protected:
     int m_noItems;
     int m_selected;
 
+    virtual wxSize DoGetBestSize();
+
 #if wxUSE_OWNER_DRAWN
     // control items
     wxListBoxItemsArray m_aItems;
index c36a5fced286f1f9aa958acc7261b1740f14fe4e..ed9641b35b90f7a3e5c349958bb4b1653e238543 100644 (file)
@@ -36,8 +36,20 @@ class WXDLLEXPORT wxMenu : public wxEvtHandler
     DECLARE_DYNAMIC_CLASS(wxMenu)
 
 public:
-    // ctor & dtor
-    wxMenu(const wxString& title = wxEmptyString, const wxFunction func = NULL);
+    // ctors & dtor
+#ifdef WXWIN_COMPATIBILITY
+    wxMenu(const wxString& title,
+           const wxFunction func)
+    {
+        Init(title, func);
+    }
+#endif
+
+    wxMenu(const wxString& title = wxEmptyString, long WXUNUSED(style) = 0)
+    {
+        Init(title);
+    }
+
     virtual ~wxMenu();
 
     // construct menu
@@ -143,6 +155,13 @@ private:
 #endif // WXWIN_COMPATIBILITY
 
 private:
+    // common part of all ctors
+    void Init(const wxString& title
+#ifdef WXWIN_COMPATIBILITY
+              , const wxFunction func = NULL
+#endif
+             );
+
     bool              m_doBreak;
 
     // This is used when m_hMenu is NULL because we don't want to
index e56b4632f77883a306eef465f944e6cb7750deea..34d188bfb1bd57dbecbe59bb9b4b05dce1cd7aa2 100644 (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;
 
index e56b4632f77883a306eef465f944e6cb7750deea..34d188bfb1bd57dbecbe59bb9b4b05dce1cd7aa2 100644 (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;
 
index b14384f8cffcb482d82dba25acc709798c8e5b70..29f900bc8977af1e9a877d38373931e43e8f23af 100644 (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
index ef870cc461e3072e41fe69e4ba2014df55b0924a..fee40a5cee3d736d0cf6c5dd843efaf2a07fb46b 100644 (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;