]> git.saurik.com Git - wxWidgets.git/commitdiff
Replace wxComboBox::IsEmpty() with Is{List,Text}Empty().
authorVadim Zeitlin <vadim@wxwidgets.org>
Sun, 21 Aug 2011 12:06:16 +0000 (12:06 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sun, 21 Aug 2011 12:06:16 +0000 (12:06 +0000)
IsEmpty() didn't exist in all ports (notably not wxMSW) and its meaning was
unclear anyhow, so remove it even from the ports where it did exist and add
clear Is{List,Text}Empty() replacements instead.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@68808 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

docs/changes.txt
include/wx/combobox.h
include/wx/gtk/combobox.h
include/wx/motif/combobox.h
include/wx/msw/combobox.h
include/wx/os2/combobox.h
include/wx/univ/combobox.h
interface/wx/combobox.h
tests/Makefile.in
tests/controls/comboboxtest.cpp
tests/test.bkl

index 2b53227ba1e9785384d4bd9981a12de04d07b520..c25a86af535f61017ca0aa80dd5cfe9e2a48dfdf 100644 (file)
@@ -333,6 +333,9 @@ Changes in behaviour which may result in compilation errors
 
 - wxST_MARKUP doesn't exist any more, use wxControl::SetLabelMarkup() instead.
 
+- wxComboBox::IsEmpty(), which was previously available in some ports (but not
+  wxMSW), doesn't exist any more, use either IsListEmpty() or IsTextEmpty().
+
 
 Deprecated methods and their replacements
 -----------------------------------------
@@ -453,6 +456,7 @@ All (GUI):
 - Allow marking wxTreeBook nodes to expand initially in XRC (RedTide).
 - Added customizable wxDocManager::OnMRUFileNotExist() virtual method.
 - Fix stock labels when not using mnemonics for Chinese (cw.ahbong).
+- Added wxComboBox::IsListEmpty() and IsTextEmpty().
 
 OSX:
 
index a0245f9e23f506d2a6e1e85292cb27ce088734a3..831bed1c242f6b1ab302c7c7a8588dbfb1ea6020 100644 (file)
@@ -36,7 +36,13 @@ public:
         wxItemContainer::Clear();
     }
 
-    bool IsEmpty() const { return wxItemContainer::IsEmpty(); }
+    // IsEmpty() is ambiguous because we inherit it from both wxItemContainer
+    // and wxTextEntry, and even if defined it here to help the compiler with
+    // choosing one of them, it would still be confusing for the human users of
+    // this class. So instead define the clearly named methods below and leave
+    // IsEmpty() ambiguous to trigger a compilation error if it's used.
+    bool IsListEmpty() const { return wxItemContainer::IsEmpty(); }
+    bool IsTextEmpty() const { return wxTextEntry::IsEmpty(); }
 
     // also bring in GetSelection() versions of both base classes in scope
     //
index fb718013c5f136c1cf5bc4807ef176aba63ad17c..02ae7e481a996a1c9e3a39f38c09516604d908af 100644 (file)
@@ -97,7 +97,9 @@ public:
         wxItemContainer::Clear();
     }
 
-    bool IsEmpty() const { return wxItemContainer::IsEmpty(); }
+    // See wxComboBoxBase discussion of IsEmpty().
+    bool IsListEmpty() const { return wxItemContainer::IsEmpty(); }
+    bool IsTextEmpty() const { return wxTextEntry::IsEmpty(); }
 
     void OnChar( wxKeyEvent &event );
 
index e7e3598ed691469ae16e38f578d8a65b73d3cb76..94ca4efb1c4ff44717980e2c669be6ea8b606ee2 100644 (file)
@@ -69,6 +69,10 @@ public:
         const wxValidator& validator = wxDefaultValidator,
         const wxString& name = wxComboBoxNameStr);
 
+    // See wxComboBoxBase discussion of IsEmpty().
+    bool IsListEmpty() const { return wxItemContainer::IsEmpty(); }
+    bool IsTextEmpty() const { return wxTextEntry::IsEmpty(); }
+
     // resolve ambiguities among virtual functions inherited from both base
     // classes
     virtual void Clear();
index f656e081e80dd23cb788540a39d9a08e834b07f9..4f4a99458b980d5418c4bb5bba2f3ed39b9f99c5 100644 (file)
@@ -75,6 +75,10 @@ public:
                 const wxValidator& validator = wxDefaultValidator,
                 const wxString& name = wxComboBoxNameStr);
 
+    // See wxComboBoxBase discussion of IsEmpty().
+    bool IsListEmpty() const { return wxItemContainer::IsEmpty(); }
+    bool IsTextEmpty() const { return wxTextEntry::IsEmpty(); }
+
     // resolve ambiguities among virtual functions inherited from both base
     // classes
     virtual void Clear();
index 92039b8a37de233e82dd6df44a35f5464d3bcffa..233d0f0d027505119c39a59500699acfa9d4941b 100644 (file)
@@ -96,6 +96,10 @@ class WXDLLIMPEXP_CORE wxComboBox : public wxChoice,
                 ,const wxString&      rsName = wxComboBoxNameStr
                );
 
+    // See wxComboBoxBase discussion of IsEmpty().
+    bool IsListEmpty() const { return wxItemContainer::IsEmpty(); }
+    bool IsTextEmpty() const { return wxTextEntry::IsEmpty(); }
+
     // resolve ambiguities among virtual functions inherited from both base
     // classes
     virtual void Clear();
index 04343ac4fe36545bd25faaa5a3dab7638607095e..ac63fd63c39e7804dfef7257e6b399ec2a6160dc 100644 (file)
@@ -129,7 +129,9 @@ public:
         wxItemContainer::Clear();
     }
 
-    bool IsEmpty() const { return wxItemContainer::IsEmpty(); }
+    // See wxComboBoxBase discussion of IsEmpty().
+    bool IsListEmpty() const { return wxItemContainer::IsEmpty(); }
+    bool IsTextEmpty() const { return wxTextEntry::IsEmpty(); }
 
     // wxControlWithItems methods
     virtual void DoClear();
index 602916cccf407a78d26253ed3a4944c7ad9c9dd7..e77f8a8fd298e541f96ec946fa4a1c19b23f771e 100644 (file)
@@ -224,6 +224,39 @@ public:
     */
     virtual long GetInsertionPoint() const;
 
+    /**
+        IsEmpty() is not available in this class.
+
+        This method is documented here only to notice that it can't be used
+        with this class because of the ambiguity between the methods with the
+        same name inherited from wxItemContainer and wxTextEntry base classes.
+
+        Because of this, any attempt to call it results in a compilation error
+        and you should use either IsListEmpty() or IsTextEmpty() depending on
+        what exactly do you want to test.
+     */
+    bool IsEmpty() const;
+
+    /**
+        Returns true if the list of combobox choices is empty.
+
+        Use this method instead of (not available in this class) IsEmpty() to
+        test if the list of items is empty.
+
+        @since 2.9.3
+     */
+    bool IsListEmpty() const;
+
+    /**
+        Returns true if the text of the combobox is empty.
+
+        Use this method instead of (not available in this class) IsEmpty() to
+        test if the text currently entered into the combobox is empty.
+
+        @since 2.9.3
+     */
+    bool IsTextEmpty() const;
+
     /**
         Same as wxTextEntry::SetSelection().
 
index 396d64ab28bb7fd0bd3e9616b1d5b7a90343775b..8df2f3c8e95a4e92c22f5a0cbc9e723b0f981d10 100644 (file)
@@ -922,7 +922,17 @@ test_gui_xrctest.o: $(srcdir)/xml/xrctest.cpp $(TEST_GUI_ODEP)
 # warnings don't matter when we expect compilation to fail anyhow so we can
 # use this variable to enable the compilation of code which is supposed to
 # fail
-failtest:
+failtest: failtest_combobox failtest_evthandler
+
+failtest_combobox:
+       @$(RM) test_gui_comboboxtest.o
+       if $(MAKE) CXXWARNINGS=-DTEST_INVALID_COMBOBOX_ISEMPTY test_gui_comboboxtest.o 2>/dev/null; then \
+           echo "*** Compilation with TEST_INVALID_COMBOBOX_ISEMPTY unexpectedly succeeded.">&2; \
+           exit 1; \
+       fi; \
+       exit 0
+
+failtest_evthandler:
        @$(RM) test_evthandler.o
        @for d in GLOBAL STATIC METHOD FUNCTOR NO_HANDLER DERIVED WRONG_CLASS; do \
            if $(MAKE) CXXWARNINGS=-DTEST_INVALID_BIND_$$d test_evthandler.o 2>/dev/null; then \
index 3086578c7f38f0105a3053462beb480ce5f0d2d0..a624d62d60f1cd2537d6acd86db0897fe7fbf259 100644 (file)
@@ -62,12 +62,14 @@ private:
         CPPUNIT_TEST( PopDismiss );
         CPPUNIT_TEST( Sort );
         CPPUNIT_TEST( ReadOnly );
+        CPPUNIT_TEST( IsEmpty );
     CPPUNIT_TEST_SUITE_END();
 
     void Size();
     void PopDismiss();
     void Sort();
     void ReadOnly();
+    void IsEmpty();
 
     wxComboBox *m_combo;
 
@@ -194,4 +196,27 @@ void ComboBoxTestCase::ReadOnly()
 #endif
 }
 
+void ComboBoxTestCase::IsEmpty()
+{
+    CPPUNIT_ASSERT( m_combo->IsListEmpty() );
+    CPPUNIT_ASSERT( m_combo->IsTextEmpty() );
+
+    m_combo->Append("foo");
+    CPPUNIT_ASSERT( !m_combo->IsListEmpty() );
+    CPPUNIT_ASSERT( m_combo->IsTextEmpty() );
+
+    m_combo->SetValue("bar");
+    CPPUNIT_ASSERT( !m_combo->IsListEmpty() );
+    CPPUNIT_ASSERT( !m_combo->IsTextEmpty() );
+
+    m_combo->Clear();
+    CPPUNIT_ASSERT( m_combo->IsListEmpty() );
+    CPPUNIT_ASSERT( m_combo->IsTextEmpty() );
+
+#ifdef TEST_INVALID_COMBOBOX_ISEMPTY
+    // Compiling this should fail, see failtest target definition in test.bkl.
+    m_combo->IsEmpty();
+#endif
+}
+
 #endif //wxUSE_COMBOBOX
index ba5bf00ae7938a7fb33e8e31b0e6ac9fd9f3e0ca..d650f8d470ff9139ee98675182ed6297c7057ed9 100644 (file)
 # warnings don't matter when we expect compilation to fail anyhow so we can
 # use this variable to enable the compilation of code which is supposed to
 # fail
-failtest:
+failtest: failtest_combobox failtest_evthandler
+
+failtest_combobox:
+       @$(RM) test_gui_comboboxtest.o
+       if $(MAKE) CXXWARNINGS=-DTEST_INVALID_COMBOBOX_ISEMPTY test_gui_comboboxtest.o 2>/dev/null; then \
+           echo "*** Compilation with TEST_INVALID_COMBOBOX_ISEMPTY unexpectedly succeeded.">&amp;2; \
+           exit 1; \
+       fi; \
+       exit 0
+
+failtest_evthandler:
        @$(RM) test_evthandler.o
        @for d in GLOBAL STATIC METHOD FUNCTOR NO_HANDLER DERIVED WRONG_CLASS; do \
            if $(MAKE) CXXWARNINGS=-DTEST_INVALID_BIND_$$d test_evthandler.o 2>/dev/null; then \