chart2/source/controller/dialogs/ChartTypeDialogController.cxx | 1 chart2/source/controller/dialogs/ChartTypeDialogController.hxx | 3 chart2/source/controller/inc/res_ErrorBar.hxx | 1 cui/source/tabpages/numpages.cxx | 1 reportdesign/source/ui/dlg/Condition.cxx | 1 reportdesign/source/ui/dlg/Condition.hxx | 2 sd/source/ui/animations/CustomAnimationCreateDialog.cxx | 1 sd/source/ui/table/TableDesignPane.cxx | 1 sd/source/ui/table/TableDesignPane.hxx | 1 sd/source/ui/toolpanel/controls/MasterPagesPanel.cxx | 1 svtools/inc/svtools/valueset.hxx | 1 svtools/source/control/toolbarmenuimp.hxx | 2 svtools/source/control/valueset.cxx | 218 ++++------ svx/inc/svx/float3d.hxx | 1 svx/source/gallery2/galbrws2.cxx | 1 svx/source/tbxctrls/colorwindow.hxx | 1 svx/source/tbxctrls/extrusioncontrols.hxx | 2 17 files changed, 96 insertions(+), 143 deletions(-)
New commits: commit d701d7b68344854b9a67583bbd38f40d061e6cb4 Author: Matteo Casalin <matteo.casa...@gmx.com> Date: Tue Apr 3 15:00:19 2012 +0200 ValueSet: reworked key navigation diff --git a/svtools/source/control/valueset.cxx b/svtools/source/control/valueset.cxx index e8aa9f5..95d5e6b 100644 --- a/svtools/source/control/valueset.cxx +++ b/svtools/source/control/valueset.cxx @@ -1299,41 +1299,22 @@ void ValueSet::Tracking( const TrackingEvent& rTEvt ) // ----------------------------------------------------------------------- -namespace -{ - -size_t -lcl_gotoLastLine(size_t const nLastPos, size_t const nCols, size_t const nCurPos) -{ - size_t nItemPos = ((((nLastPos+1)/nCols)-1)*nCols)+(nCurPos%nCols); - if ( nItemPos+nCols <= nLastPos ) - nItemPos = nItemPos + nCols; - return nItemPos; -} - -} - void ValueSet::KeyInput( const KeyEvent& rKEvt ) { size_t nLastItem = mItemList.size(); - size_t nItemPos = VALUESET_ITEM_NOTFOUND; - size_t nCurPos = VALUESET_ITEM_NONEITEM; - size_t nCalcPos; if ( !nLastItem || !ImplGetFirstItem() ) { Control::KeyInput( rKEvt ); return; } - else - nLastItem--; - if ( mnSelItemId ) - nCurPos = GetItemPos( mnSelItemId ); - nCalcPos = nCurPos; + --nLastItem; + const size_t nCurPos = mnSelItemId ? GetItemPos( mnSelItemId ) + : mpNoneItem ? VALUESET_ITEM_NONEITEM : 0; + size_t nItemPos = VALUESET_ITEM_NOTFOUND; + size_t nVStep = mnCols; - //switch off selection mode if key travelling is used - bool bDefault = false; switch ( rKEvt.GetKeyCode().GetCode() ) { case KEY_HOME: @@ -1345,147 +1326,129 @@ void ValueSet::KeyInput( const KeyEvent& rKEvt ) break; case KEY_LEFT: - case KEY_RIGHT: - if ( rKEvt.GetKeyCode().GetCode()==KEY_LEFT ) + if (nCurPos != VALUESET_ITEM_NONEITEM) { - if ( nCalcPos == VALUESET_ITEM_NONEITEM ) - nItemPos = nLastItem; - else if ( !nCalcPos ) + if (nCurPos) { - if ( mpNoneItem ) - nItemPos = VALUESET_ITEM_NONEITEM; - else - nItemPos = nLastItem; + nItemPos = nCurPos-1; + } + else if (mpNoneItem) + { + nItemPos = VALUESET_ITEM_NONEITEM; } - else - nItemPos = nCalcPos-1; } - else + break; + + case KEY_RIGHT: + if (nCurPos < nLastItem) { - if ( nCalcPos == VALUESET_ITEM_NONEITEM ) - nItemPos = 0; - else if ( nCalcPos == nLastItem ) + if (nCurPos == VALUESET_ITEM_NONEITEM) { - if ( mpNoneItem ) - nItemPos = VALUESET_ITEM_NONEITEM; - else - nItemPos = 0; + nItemPos = 0; } else - nItemPos = nCalcPos+1; + { + nItemPos = nCurPos+1; + } } - nCalcPos = nItemPos; break; - case KEY_UP: case KEY_PAGEUP: - { - if( rKEvt.GetKeyCode().GetCode() != KEY_PAGEUP || - ( !rKEvt.GetKeyCode().IsShift() && !rKEvt.GetKeyCode().IsMod1() && !rKEvt.GetKeyCode().IsMod2() ) ) + if (rKEvt.GetKeyCode().IsShift() || rKEvt.GetKeyCode().IsMod1() || rKEvt.GetKeyCode().IsMod2()) { - const size_t nLineCount = ( ( KEY_UP == rKEvt.GetKeyCode().GetCode() ) ? 1 : mnVisLines ); - if ( nCalcPos == VALUESET_ITEM_NONEITEM ) + Control::KeyInput( rKEvt ); + return; + } + nVStep *= mnVisLines; + // intentional fall-through + case KEY_UP: + if (nCurPos != VALUESET_ITEM_NONEITEM) + { + if (nCurPos == nLastItem) { - if ( nLastItem+1 <= mnCols ) - nItemPos = mnCurCol; - else - nItemPos = lcl_gotoLastLine(nLastItem, mnCols, mnCurCol); + const size_t nCol = nLastItem % mnCols; + if (nCol < mnCurCol) + { + // Move to previous row/page, keeping the old column + nVStep -= mnCurCol - nCol; + } } - else if ( nCalcPos >= mnCols ) // we can go up + if (nCurPos >= nVStep) { - if ( nCalcPos >= ( nLineCount * mnCols ) ) - nItemPos = nCalcPos - ( nLineCount * mnCols ); - else - // Go to the first line. This can only happen for KEY_PAGEUP - nItemPos = nCalcPos % mnCols; + // Go up of a whole page + nItemPos = nCurPos-nVStep; } - else // wrap around + else if (mpNoneItem) { - if ( mpNoneItem ) - { - mnCurCol = nCalcPos%mnCols; - nItemPos = VALUESET_ITEM_NONEITEM; - } - else - { - if ( nLastItem+1 <= mnCols ) - nItemPos = nCalcPos; - else - nItemPos = lcl_gotoLastLine(nLastItem, mnCols, nCalcPos); - } + nItemPos = VALUESET_ITEM_NONEITEM; + } + else if (nCurPos > mnCols) + { + // Go to same column in first row + nItemPos = nCurPos % mnCols; } - nCalcPos = nItemPos; } - else - Control::KeyInput( rKEvt ); - } - break; + break; - case KEY_DOWN: case KEY_PAGEDOWN: - { - if( rKEvt.GetKeyCode().GetCode() != KEY_PAGEDOWN || - ( !rKEvt.GetKeyCode().IsShift() && !rKEvt.GetKeyCode().IsMod1() && !rKEvt.GetKeyCode().IsMod2() ) ) + if (rKEvt.GetKeyCode().IsShift() || rKEvt.GetKeyCode().IsMod1() || rKEvt.GetKeyCode().IsMod2()) { - const long nLineCount = ( ( KEY_DOWN == rKEvt.GetKeyCode().GetCode() ) ? 1 : mnVisLines ); - if ( nCalcPos == VALUESET_ITEM_NONEITEM ) - nItemPos = mnCurCol; - else if ( nCalcPos + mnCols <= nLastItem ) // we can go down + Control::KeyInput( rKEvt ); + return; + } + nVStep *= mnVisLines; + // intentional fall-through + case KEY_DOWN: + if (nCurPos != nLastItem) + { + if (nCurPos == VALUESET_ITEM_NONEITEM) { - if ( nCalcPos + ( nLineCount * mnCols ) <= nLastItem ) - nItemPos = nCalcPos + ( nLineCount * mnCols ); - else - // Go to the last line. This can only happen for KEY_PAGEDOWN - nItemPos = lcl_gotoLastLine(nLastItem, mnCols, nCalcPos); + nItemPos = nVStep-mnCols+mnCurCol; } - else // wrap around + else { - { - if ( mpNoneItem ) - { - mnCurCol = nCalcPos%mnCols; - nItemPos = VALUESET_ITEM_NONEITEM; - } - else - nItemPos = nCalcPos%mnCols; - } + nItemPos = nCurPos+nVStep; + } + if (nItemPos > nLastItem) + { + nItemPos = nLastItem; } - nCalcPos = nItemPos; } - else - Control::KeyInput( rKEvt ); + break; - } - break; case KEY_RETURN: - //enable default handling of KEY_RETURN in dialogs - if(0 != (GetStyle()&WB_NO_DIRECTSELECT)) + if (GetStyle() & WB_NO_DIRECTSELECT) { Select(); break; } - //no break; + // intentional fall-through default: Control::KeyInput( rKEvt ); - bDefault = true; - break; + return; } - if(!bDefault) - EndSelection(); + + // This point is reached only if key travelling was used, + // in which case selection mode should be switched off + EndSelection(); + if ( nItemPos != VALUESET_ITEM_NOTFOUND ) { - sal_uInt16 nItemId; - if ( nItemPos != VALUESET_ITEM_NONEITEM ) - nItemId = GetItemId( nItemPos ); - else - nItemId = 0; - + if ( nItemPos!=VALUESET_ITEM_NONEITEM && nItemPos<nLastItem ) + { + // update current column only in case of a new position + // which is also not a "specially" handled one. + mnCurCol = nItemPos % mnCols; + } + const sal_uInt16 nItemId = (nItemPos != VALUESET_ITEM_NONEITEM) ? GetItemId( nItemPos ) : 0; if ( nItemId != mnSelItemId ) { SelectItem( nItemId ); - //select only if WB_NO_DIRECTSELECT is not set - if(0 == (GetStyle()&WB_NO_DIRECTSELECT)) + if (!(GetStyle() & WB_NO_DIRECTSELECT)) + { + // select only if WB_NO_DIRECTSELECT is not set Select(); + } } } } commit 6ac9544454daa0330f84fd10de26ee6d4d657990 Author: Matteo Casalin <matteo.casa...@gmx.com> Date: Sun Mar 4 21:01:01 2012 +0100 Cleanup some unnecessary #include diff --git a/chart2/source/controller/dialogs/ChartTypeDialogController.cxx b/chart2/source/controller/dialogs/ChartTypeDialogController.cxx index 98247b9..f235ffa 100644 --- a/chart2/source/controller/dialogs/ChartTypeDialogController.cxx +++ b/chart2/source/controller/dialogs/ChartTypeDialogController.cxx @@ -43,6 +43,7 @@ #include <com/sun/star/chart2/XDataSeriesContainer.hpp> #include <svtools/controldims.hrc> +#include <svtools/valueset.hxx> // header for class Image #include <vcl/image.hxx> // header for class Bitmap diff --git a/chart2/source/controller/dialogs/ChartTypeDialogController.hxx b/chart2/source/controller/dialogs/ChartTypeDialogController.hxx index 7871891..d0af40a 100644 --- a/chart2/source/controller/dialogs/ChartTypeDialogController.hxx +++ b/chart2/source/controller/dialogs/ChartTypeDialogController.hxx @@ -36,7 +36,6 @@ #include <com/sun/star/chart2/CurveStyle.hpp> #include <com/sun/star/chart2/XChartDocument.hpp> #include <com/sun/star/chart2/XChartTypeTemplate.hpp> -#include <svtools/valueset.hxx> // header for class CheckBox #include <vcl/button.hxx> // header for class FixedText @@ -45,6 +44,8 @@ #include <vcl/field.hxx> #include <com/sun/star/lang/XMultiServiceFactory.hpp> +class ValueSet; + //............................................................................. namespace chart { diff --git a/chart2/source/controller/inc/res_ErrorBar.hxx b/chart2/source/controller/inc/res_ErrorBar.hxx index 74ee6de..747bac2 100644 --- a/chart2/source/controller/inc/res_ErrorBar.hxx +++ b/chart2/source/controller/inc/res_ErrorBar.hxx @@ -32,7 +32,6 @@ #include <vcl/fixed.hxx> #include <vcl/field.hxx> #include <vcl/lstbox.hxx> -#include <svtools/valueset.hxx> #include <svl/itemset.hxx> #include <svx/chrtitem.hxx> #include "chartview/ChartSfxItemIds.hxx" diff --git a/cui/source/tabpages/numpages.cxx b/cui/source/tabpages/numpages.cxx index b2de320..e5b8a6c 100644 --- a/cui/source/tabpages/numpages.cxx +++ b/cui/source/tabpages/numpages.cxx @@ -35,7 +35,6 @@ #include <dialmgr.hxx> #include <tools/shl.hxx> #include <i18npool/mslangid.hxx> -#include <svtools/valueset.hxx> #include <helpid.hrc> #include <editeng/numitem.hxx> #include <svl/eitem.hxx> diff --git a/reportdesign/source/ui/dlg/Condition.cxx b/reportdesign/source/ui/dlg/Condition.cxx index 724ea2f..bbe7e3b 100644 --- a/reportdesign/source/ui/dlg/Condition.cxx +++ b/reportdesign/source/ui/dlg/Condition.cxx @@ -58,6 +58,7 @@ #include <vcl/bmpacc.hxx> #include <tools/diagnose_ex.h> #include <rtl/ustrbuf.hxx> +#include <svtools/valueset.hxx> namespace rptui { diff --git a/reportdesign/source/ui/dlg/Condition.hxx b/reportdesign/source/ui/dlg/Condition.hxx index aa34d46..b05a1ec 100644 --- a/reportdesign/source/ui/dlg/Condition.hxx +++ b/reportdesign/source/ui/dlg/Condition.hxx @@ -37,8 +37,6 @@ #include <svx/fntctrl.hxx> -#include <svtools/valueset.hxx> - #include <vcl/fixed.hxx> #include <vcl/lstbox.hxx> #include <vcl/field.hxx> diff --git a/sd/source/ui/animations/CustomAnimationCreateDialog.cxx b/sd/source/ui/animations/CustomAnimationCreateDialog.cxx index 2d3933a..76f3b5a 100644 --- a/sd/source/ui/animations/CustomAnimationCreateDialog.cxx +++ b/sd/source/ui/animations/CustomAnimationCreateDialog.cxx @@ -38,7 +38,6 @@ #include <vcl/fixed.hxx> #include <vcl/lstbox.hxx> #include <vcl/combobox.hxx> -#include <svtools/valueset.hxx> #include <svx/svdetc.hxx> #include <svx/svdstr.hrc> diff --git a/sd/source/ui/table/TableDesignPane.cxx b/sd/source/ui/table/TableDesignPane.cxx index 1817c48..2c4a929 100644 --- a/sd/source/ui/table/TableDesignPane.cxx +++ b/sd/source/ui/table/TableDesignPane.cxx @@ -52,6 +52,7 @@ #include <svx/sdr/table/tabledesign.hxx> #include "TableDesignPane.hxx" +#include <svtools/valueset.hxx> #include "DrawDocShell.hxx" #include "ViewShellBase.hxx" diff --git a/sd/source/ui/table/TableDesignPane.hxx b/sd/source/ui/table/TableDesignPane.hxx index 37ffe1d..5df94d9 100644 --- a/sd/source/ui/table/TableDesignPane.hxx +++ b/sd/source/ui/table/TableDesignPane.hxx @@ -37,7 +37,6 @@ #include <vcl/dialog.hxx> #include <vcl/fixed.hxx> #include <vcl/button.hxx> -#include <svtools/valueset.hxx> #include <boost/scoped_ptr.hpp> diff --git a/sd/source/ui/toolpanel/controls/MasterPagesPanel.cxx b/sd/source/ui/toolpanel/controls/MasterPagesPanel.cxx index d542fe4..4002cbc 100644 --- a/sd/source/ui/toolpanel/controls/MasterPagesPanel.cxx +++ b/sd/source/ui/toolpanel/controls/MasterPagesPanel.cxx @@ -43,7 +43,6 @@ #include "strings.hrc" #include "sdresid.hxx" #include "helpids.h" -#include <svtools/valueset.hxx> #include "app.hrc" namespace sd { namespace toolpanel { namespace controls { diff --git a/svtools/source/control/toolbarmenuimp.hxx b/svtools/source/control/toolbarmenuimp.hxx index e487483..9a1cdc1 100644 --- a/svtools/source/control/toolbarmenuimp.hxx +++ b/svtools/source/control/toolbarmenuimp.hxx @@ -48,8 +48,6 @@ #include "framestatuslistener.hxx" -#include "svtools/valueset.hxx" - namespace svtools { struct ToolbarMenu_Impl; diff --git a/svx/inc/svx/float3d.hxx b/svx/inc/svx/float3d.hxx index 5769657..380c77d 100644 --- a/svx/inc/svx/float3d.hxx +++ b/svx/inc/svx/float3d.hxx @@ -34,7 +34,6 @@ #include <vcl/field.hxx> #include <sfx2/dockwin.hxx> #include <vcl/button.hxx> -#include <svtools/valueset.hxx> #include <svtools/stdctrl.hxx> #include "svx/svxdllapi.h" diff --git a/svx/source/gallery2/galbrws2.cxx b/svx/source/gallery2/galbrws2.cxx index b9953f9..3da4fe9 100644 --- a/svx/source/gallery2/galbrws2.cxx +++ b/svx/source/gallery2/galbrws2.cxx @@ -30,7 +30,6 @@ #include <comphelper/string.hxx> #include <sot/formats.hxx> #include <vcl/msgbox.hxx> -#include <svtools/valueset.hxx> #include <svl/urlbmk.hxx> #include <svl/stritem.hxx> #include <svl/intitem.hxx> diff --git a/svx/source/tbxctrls/colorwindow.hxx b/svx/source/tbxctrls/colorwindow.hxx index 641e3db..1b033ab 100644 --- a/svx/source/tbxctrls/colorwindow.hxx +++ b/svx/source/tbxctrls/colorwindow.hxx @@ -6,6 +6,7 @@ #define __SVX_COLORWINDOW_HXX_ #include <sfx2/tbxctrl.hxx> +#include <svtools/valueset.hxx> #include <svl/lstner.hxx> #include <rtl/ustring.hxx> #include <com/sun/star/frame/XFrame.hpp> diff --git a/svx/source/tbxctrls/extrusioncontrols.hxx b/svx/source/tbxctrls/extrusioncontrols.hxx index 35993c4..5ff022b 100644 --- a/svx/source/tbxctrls/extrusioncontrols.hxx +++ b/svx/source/tbxctrls/extrusioncontrols.hxx @@ -30,7 +30,6 @@ #include "svx/svxdllapi.h" -#include <svtools/valueset.hxx> #include <svtools/svtreebx.hxx> #include <vcl/button.hxx> #include <vcl/dialog.hxx> @@ -43,6 +42,7 @@ class SfxBindings; class SfxStatusForwarder; +class ValueSet; //======================================================================== commit f3b8d732f376c56a39f962dce4faa0335bfe12df Author: Matteo Casalin <matteo.casa...@gmx.com> Date: Sun Mar 4 08:21:34 2012 +0100 ValueSet: remove obsolete forward declaration diff --git a/svtools/inc/svtools/valueset.hxx b/svtools/inc/svtools/valueset.hxx index 22271da..24fa35e 100644 --- a/svtools/inc/svtools/valueset.hxx +++ b/svtools/inc/svtools/valueset.hxx @@ -42,7 +42,6 @@ class HelpEvent; class KeyEvent; class DataChangedEvent; class ScrollBar; -struct ValueSet_Impl; struct ValueSetItem; typedef ::std::vector< ValueSetItem* > ValueItemList; commit 57533a3ddb37cd367e7ae0edfef1c8502a7d9199 Author: Matteo Casalin <matteo.casa...@gmx.com> Date: Sat Mar 3 21:55:29 2012 +0100 ValueSet: simplify calculation of item rectangle diff --git a/svtools/source/control/valueset.cxx b/svtools/source/control/valueset.cxx index 8cd032b..e8aa9f5 100644 --- a/svtools/source/control/valueset.cxx +++ b/svtools/source/control/valueset.cxx @@ -1758,14 +1758,11 @@ void ValueSet::ImplInsertItem( ValueSetItem *const pItem, const size_t nPos ) Rectangle ValueSet::ImplGetItemRect( size_t nPos ) const { const size_t nVisibleBegin = static_cast<size_t>(mnFirstLine)*mnCols; - const size_t nMaxVisible = static_cast<size_t>(mnVisLines)*mnCols; - size_t nVisibleEnd = nVisibleBegin+nMaxVisible; - if ( nVisibleEnd>mItemList.size() ) - { - nVisibleEnd = mItemList.size(); - } + const size_t nVisibleEnd = nVisibleBegin + static_cast<size_t>(mnVisLines)*mnCols; - if ( nPos<nVisibleBegin || nPos>=nVisibleEnd ) + // Check if the item is inside the range of the displayed ones, + // taking into account that last row could be incomplete + if ( nPos<nVisibleBegin || nPos>=nVisibleEnd || nPos>=mItemList.size() ) return Rectangle(); nPos -= nVisibleBegin; _______________________________________________ Libreoffice-commits mailing list Libreoffice-commits@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits