summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>2020-02-13 07:38:54 +0100
committerThorsten Behrens <Thorsten.Behrens@CIB.de>2020-02-16 12:02:47 +0100
commit78cb378d5ac23e1c10a413f79735a33d681e55cf (patch)
treeed677462114bc8341de237fbfdd4535b4eabd629
parentc2900c029c366227628e7ebb227093f79b7a6b61 (diff)
tdf#130325 Fix listbox used as dropdown
In this case, the listbox is not used as a static widget, also not as a combobox with dropdown. Instead the listbox is placed in a popup to choose values from. Need to handle this case similiar to the combobox dropdown (Cursor movement only travels through items, Return selects one item). Regression from 7de9417d5f65d35227c7f80f6d587c2a56bde4e0 Change-Id: Idadc3da5847e12e1408203b13ab59eb53fe14eea Reviewed-on: https://gerrit.libreoffice.org/c/core/+/88581 Tested-by: Jenkins Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de> (cherry picked from commit d92463c88a557eea7a439def39659b1409772583) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/88504 Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de> (cherry picked from commit f475d0574a2df630b2940f0204bb13199f823706) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/88690 Tested-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
-rw-r--r--include/tools/wintypes.hxx2
-rwxr-xr-xsc/source/ui/view/gridwin.cxx2
-rw-r--r--vcl/inc/listbox.hxx3
-rw-r--r--vcl/source/control/imp_listbox.cxx4
4 files changed, 7 insertions, 4 deletions
diff --git a/include/tools/wintypes.hxx b/include/tools/wintypes.hxx
index 87896e23fab3..f2657ca67476 100644
--- a/include/tools/wintypes.hxx
+++ b/include/tools/wintypes.hxx
@@ -200,6 +200,8 @@ WinBits const WB_IGNORETAB = 0x20000000;
// Window-Bits for ListBox and MultiListBox
WinBits const WB_SIMPLEMODE = 0x20000000;
+// Special case where the listbox is used as a dropdown popup (not a combobox)
+WinBits const WB_LISTBOX_POPUP = 0x40000000;
// Window-Bits for FixedBitmap
WinBits const WB_SCALE = 0x08000000;
diff --git a/sc/source/ui/view/gridwin.cxx b/sc/source/ui/view/gridwin.cxx
index ba3653d73420..5d966c95890a 100755
--- a/sc/source/ui/view/gridwin.cxx
+++ b/sc/source/ui/view/gridwin.cxx
@@ -229,7 +229,7 @@ public:
// ListBox in a FloatingWindow (pParent)
ScFilterListBox::ScFilterListBox( vcl::Window* pParent, ScGridWindow* pGrid,
SCCOL nNewCol, SCROW nNewRow, ScFilterBoxMode eNewMode ) :
- ListBox( pParent, WB_AUTOHSCROLL ),
+ ListBox( pParent, WB_AUTOHSCROLL | WB_LISTBOX_POPUP ),
pGridWin( pGrid ),
nCol( nNewCol ),
nRow( nNewRow ),
diff --git a/vcl/inc/listbox.hxx b/vcl/inc/listbox.hxx
index e9546e19516e..5874f1b5f810 100644
--- a/vcl/inc/listbox.hxx
+++ b/vcl/inc/listbox.hxx
@@ -213,7 +213,8 @@ private:
bool mbRight : 1; ///< right align Text output
bool mbCenter : 1; ///< center Text output
bool mbEdgeBlending : 1;
- bool mbIsComboboxDropdown : 1;
+ /// Listbox is actually a dropdown (either combobox, or popup window treated as dropdown)
+ bool mbIsDropdown : 1;
Link<ImplListBoxWindow*,void> maScrollHdl;
Link<LinkParamNone*,void> maSelectHdl;
diff --git a/vcl/source/control/imp_listbox.cxx b/vcl/source/control/imp_listbox.cxx
index c892692ba036..664334ebae45 100644
--- a/vcl/source/control/imp_listbox.cxx
+++ b/vcl/source/control/imp_listbox.cxx
@@ -484,7 +484,7 @@ ImplListBoxWindow::ImplListBoxWindow( vcl::Window* pParent, WinBits nWinStyle )
mbCenter = ( nWinStyle & WB_CENTER );
mbSimpleMode = ( nWinStyle & WB_SIMPLEMODE );
mbSort = ( nWinStyle & WB_SORT );
- mbIsComboboxDropdown = ( nWinStyle & WB_DROPDOWN );
+ mbIsDropdown = ( nWinStyle & WB_DROPDOWN ) || ( nWinStyle & WB_LISTBOX_POPUP );
mbEdgeBlending = false;
// pb: #106948# explicit mirroring for calc
@@ -1609,7 +1609,7 @@ bool ImplListBoxWindow::ProcessKeyInput( const KeyEvent& rKEvt )
if(SelectEntries( nSelect, eLET, bShift, bCtrl, bCurPosChange))
{
// tdf#129043 Correctly deliver events when changing values with arrow keys in combobox
- if (mbIsComboboxDropdown && IsReallyVisible())
+ if (mbIsDropdown && IsReallyVisible())
mbTravelSelect = true;
mnSelectModifier = rKEvt.GetKeyCode().GetModifier();
ImplCallSelect();