This is an automated email from the ASF dual-hosted git repository.

cmarcum pushed a commit to branch AOO41X
in repository https://gitbox.apache.org/repos/asf/openoffice.git


The following commit(s) were added to refs/heads/AOO41X by this push:
     new 133efdc  #i60307# search for strings in date formats fails. When 
"Search in" is set to "Values", search the formatted values instead of just the 
raw input. This fixes a 9 year old bug that's been duplicated at least 6 times, 
and matches what Excel does. Tests show even "Replace" works, and works well: 
if "October" is replaced by "November", it converts the original month from 10 
to 11; it only converts the cell type to text if the resulting text is no 
longer a valid date. Also ad [...]
133efdc is described below

commit 133efdc14496caaf90c15e33666ab1c0c1e2fbea
Author: Damjan Jovanovic <dam...@apache.org>
AuthorDate: Tue Nov 3 18:44:21 2015 +0000

    #i60307# search for strings in date formats fails.
    When "Search in" is set to "Values", search the formatted values
    instead of just the raw input. This fixes a 9 year old
    bug that's been duplicated at least 6 times, and matches what Excel
    does. Tests show even "Replace" works, and works well: if
    "October" is replaced by "November", it converts the original
    month from 10 to 11; it only converts the cell type to text if the
    resulting text is no longer a valid date. Also added BVT tests
    for the expected behaviour.
    
    git-svn-id: https://svn.apache.org/repos/asf/openoffice/trunk@1712367 
13f79535-47bb-0310-9956-ffa450edef68
    (cherry picked from commit 2e4d2335e101b0658cddb9e31f2fd229d84bfc1d)
---
 main/sc/source/core/data/table6.cxx                |   2 +-
 test/testgui/data/bvt/searchFormulasValues.ods     | Bin 0 -> 7934 bytes
 test/testgui/source/bvt/gui/BasicFunctionTest.java |  30 +++++++++++++++++++++
 test/testgui/source/testlib/gui/UIMap.java         |   1 +
 4 files changed, 32 insertions(+), 1 deletion(-)

diff --git a/main/sc/source/core/data/table6.cxx 
b/main/sc/source/core/data/table6.cxx
index 5a96ce1..745a07c 100644
--- a/main/sc/source/core/data/table6.cxx
+++ b/main/sc/source/core/data/table6.cxx
@@ -91,7 +91,7 @@ sal_Bool ScTable::SearchCell(const SvxSearchItem& 
rSearchItem, SCCOL nCol, SCROW
                                        bMultiLine = lcl_GetTextWithBreaks(
                                                *(const ScEditCell*)pCell, 
pDocument, aString );
                                else
-                                       aCol[nCol].GetInputString( nRow, 
aString );
+                                       aCol[nCol].GetString( nRow, aString );
                                break;
                        case SVX_SEARCHIN_NOTE:
                                {
diff --git a/test/testgui/data/bvt/searchFormulasValues.ods 
b/test/testgui/data/bvt/searchFormulasValues.ods
new file mode 100644
index 0000000..cdfe86f
Binary files /dev/null and b/test/testgui/data/bvt/searchFormulasValues.ods 
differ
diff --git a/test/testgui/source/bvt/gui/BasicFunctionTest.java 
b/test/testgui/source/bvt/gui/BasicFunctionTest.java
index ec7d770..a5dd69f 100644
--- a/test/testgui/source/bvt/gui/BasicFunctionTest.java
+++ b/test/testgui/source/bvt/gui/BasicFunctionTest.java
@@ -327,6 +327,36 @@ public class BasicFunctionTest {
                                copyAll());
                discard();
        }
+       
+       @Test
+       public void testFindFormulasAndValues() {
+           open(prepareData("bvt/searchFormulasValues.ods"));
+           calc.waitForExistence(10, 2);
+           
+           // Searching for 2003 by formula finds A2
+           SCTool.selectRange("A1");
+           app.dispatch(".uno:SearchDialog");
+        findDlgFor.setText("2003");
+        findDlgMore.click();
+        findDlgCalcSearchIn.select("Formulas");
+        findDlgFind.click();
+        sleep(1);
+           assertEquals("wrong cell found for formulas search", "A2", 
scInputBarPosition.getText());
+           findDlg.close();
+           
+           // Searching for October by value finds A2
+           SCTool.selectRange("A1");
+           app.dispatch(".uno:SearchDialog");
+           findDlgFor.setText("October");
+           findDlgMore.click();
+           findDlgCalcSearchIn.select("Values");
+           findDlgFind.click();
+           sleep(1);
+           assertEquals("wrong cell found for values search", "A2", 
scInputBarPosition.getText());
+           findDlg.close();
+           
+           discard();
+       }
 
        @Test
        public void testFillInSpreadsheet() {
diff --git a/test/testgui/source/testlib/gui/UIMap.java 
b/test/testgui/source/testlib/gui/UIMap.java
index e370b76..a25c809 100644
--- a/test/testgui/source/testlib/gui/UIMap.java
+++ b/test/testgui/source/testlib/gui/UIMap.java
@@ -181,6 +181,7 @@ public class UIMap {
        public static final VclButton findDlgMatchCase = 
button("svx:CheckBox:RID_SVXDLG_SEARCH:CB_MATCH_CASE");
        public static final VclButton findDlgWholeWord = 
button("svx:CheckBox:RID_SVXDLG_SEARCH:CB_WHOLE_WORDS");
        public static final VclButton findDlgMore = 
button("svx:MoreButton:RID_SVXDLG_SEARCH:BTN_MORE");
+       public static final VclListBox findDlgCalcSearchIn = 
listbox("svx:ListBox:RID_SVXDLG_SEARCH:LB_CALC_SEARCHIN");
        public static final VclWindow chart = 
window("CHART2_HID_SCH_WIN_DOCUMENT");
        public static final VclDialog chartWizard = 
dialog("CHART2_HID_SCH_CHART_AUTO_FORMAT");
        public static final VclDialog filePrintDlg = 
dialog(".HelpID:vcl:PrintDialog:Dialog");

Reply via email to