summaryrefslogtreecommitdiff
path: root/svtools/source/brwbox
AgeCommit message (Collapse)Author
2023-11-09tdf#114441 Convert sal_uLong to better integer typesYli875
The maximum value of the width in BrowserColumn is LONG_MAX. tools::Long value range is the closest among other integer types. It is widely used in these files. Also, other parameter types and return types have been changed to match the width type. Change-Id: Ia8b941a8ea02075a0d9b4d44675d5809005738bf Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157477 Tested-by: Hossein <hossein@libreoffice.org> Reviewed-by: Hossein <hossein@libreoffice.org>
2023-08-30make IAccessibleBrowseBox extend cppu::WeakImplHelperNoel Grandin
i.e. push this up from the implementation class AccessibleBrowseBoxAccess to the interface class. Which means we don't need the getMyself helper method, and make the memory management simpler. Change-Id: Icecb83834bb3f5304908bbd3682b3d2ea06dbfe0 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/156285 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-08-02split Point/Size/Rectangle into AbsoluteScreenPixel* typesNoel Grandin
to attempt to make it obvious in code what kind of coordinate system we are dealing with. The idea is that by doing this, the compile-time type checking will flush out inconsistencies between different code. I started with vcl::Window::OutputToAbsoluteScreenPixel and worked outwards from there. Change-Id: Ia967d7a0bb38886695f3a761b85c8b9340ddb1c0 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/154676 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-07-27rename GetFieldRectPixelAbs to GetFieldRectPixelNoel Grandin
since it can return either absolute or relative values Change-Id: I23f2403879eded3ec4b3ca20a639ea18b28f5de9 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/154937 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-07-26improve override of Window::Invalidate(*)Noel Grandin
rather than having to override 3 different methods, have them override the ImplInvalidate, which is where the code ends up anywhere. This already exposes a couple of places that were not overriding all 3 methods. Change-Id: If76abcf18325b7138ea451fbd0213cd6c7b4daa5 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/154930 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-07-20split GetWindowExtentsRelative asunderNoel Grandin
sometimes it returns a relative position, sometimes an absolute position. Rather have two different methods with names that match what they return. Change-Id: Ie1e73c6be1c797fd59934c96866d1fef1f972b35 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/154653 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-07-12jsdialog: calendar widgetSzymon Kłos
Change-Id: I5b2b8a1516ed2e851309dca6ef3200ed522d1b7b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/154136 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-by: Pranam Lashkari <lpranam@collabora.com> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/154361 Tested-by: Jenkins Reviewed-by: Szymon Kłos <szymon.klos@collabora.com>
2023-04-02Avoid conversions between OUString and OString in VCLMike Kaganski
Standardize on OUString, which is the main internal string class. Convert from/to OUString only when communicating with respective external APIs. Removes about 200 conversions from the code. Change-Id: I96ecee7c6fd271bb76639220e96d69d2964bed26 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/149930 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2022-12-19Resolves: tdf#146933 wire up keypress events for table control widgetsCaolán McNamara
Change-Id: Idc8cc3c24d061537a76a37f4fa84951a41a42657 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/144470 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2022-09-19Rename MouseNotifyEvent to NotifyEventTypeSamuel Mehrbrodt
Also contains keyboard and focus events, not only mouse events Change-Id: Iec1d6c341b01a489ba80fe9634ea3579afb02ea9 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139970 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Reviewed-by: Samuel Mehrbrodt <samuel.mehrbrodt@allotropia.de>
2022-08-24tools: rename Rectangle::Justify() to Rectangle::Normalize()Chris Sherlock
Jusify() normalizes the rectangle so both the Width and Height are positive, without changing the location of the rectangle. It ensures that the x and y coordinates will be moved to the top left of the rectangle. The name is strange, so renaming Justify() to Normalize(). Change-Id: Idbf163e65e52a798e38f785b8961b8042cf0cf2a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137379 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
2022-08-18Move tools/diagnose_ex.h to comphelper/diagnose_ex.hxxStephan Bergmann
...so that its TOOLS_WARN_EXCEPTION can be used in comphelper/source/misc/logging.cxx in a follow-up commit. (And while at it, rename from diangose_ex.h to the more appropriate diagnose_ex.hxx. The comphelper module is sufficiently low-level for this immediate use case, so use that at least for now; o3tl might be even more suitable but doesn't have a Library until now. Also, for the immediate use case it would have sufficed to only break DbgGetCaughtException, exceptionToString, TOOLS_WARN_EXCEPTION, TOOLS_WARN_EXCEPTION_IF, and TOOLS_INFO_EXCEPTION out of include/tools/diagnose_ex.h into an additional new include/comphelper/diagnose_ex.hxx, but its probably easier overall to just move the complete include file as is.) Change-Id: I9f3222d4ccf1a9ac29d7eb9ba1530d53e2affaee Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138451 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2022-08-08move m_bNavigationBar to BrowseBox so it knows best scroll/status bar heightCaolán McNamara
to use, so databrowser with it (view data sources) has the tall case, while bases, create table in design view has the short case Change-Id: If3269d2ab2ce62f09acac624e5ef7e91ff91eaea Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137953 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2022-08-08use separate width and height for databrowser vert/horz scroll sizesCaolán McNamara
the scrollbar in the statusbar can be thicker than the vertical one which looks weird when both set to the thick size Change-Id: I76496e47203a7cde72082f8e6b83f5af3e8c3759 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137952 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2022-08-08overpaint scrollbar junction with the face colorCaolán McNamara
Change-Id: Ib2dba2d5e47a8c39f79c3ab5a8e79e8185599da6 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137951 Tested-by: Caolán McNamara <caolanm@redhat.com> Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2022-08-05tdf#117388 use native scrollbar under gtk in data browserCaolán McNamara
Change-Id: I22745f1c910f68fd2c0b31e8392c111fc76ef529 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137864 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2022-07-14clang-tidy modernize-pass-by-value in svtoolsNoel Grandin
Change-Id: I60e7373c924a479fed72eb4f0538006e3e422004 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137019 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2022-07-08[API CHANGE] Drop css::accessibility::XAccessibleStateSetNoel Grandin
which is internal API, unused (as far as I can tell) by external users. This state is purely a bitset (as implemented by utl::AccessibleStateSetHelper) so we can just return it as a 64-bit value. This shaves significant time off the performance profiles of code that loads very complex shapes, because this state is frequently used, and we no longer need to allocate a return value on the heap for every call. Change-Id: Icf1b3bd367c256646ae9015f9127025f59459c2c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/136786 Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2022-05-24Use o3tl::make_unsigned in some placesStephan Bergmann
...where a signed and an unsigned value are compared, and the signed value has just been proven to be non-negative here Change-Id: I20600d61a5d59d739bc1bee838c0038e4611aec2 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/134875 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2022-05-03Just use Any ctor instead of makeAny in svtoolsStephan Bergmann
Change-Id: Ib5a86de01abd6eab2f60d76bda50fa9407286dbc Reviewed-on: https://gerrit.libreoffice.org/c/core/+/133770 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2022-03-29a11y: Use new table model change types for row/col ins/delMichael Weghorn
This ports most existing uses of the now deprecated `AccessibleTableModelChangeType::INSERT` and `AccessibleTableModelChangeType::DELETE` to emit events of the the four new table model change types added in Change-Id I30821a5acafa4f3d1dafdfc219f3b4568d9a6e89, "a11y: Add new table model change types for row/col insertion/del" instead, which among others fixes the a11y events that are sent on the platform level for gtk3 and macOS, s. commit message of the mentioned change for more details. From all I can see, `AccessibleGridControlTable::commitEvent` is just meant to handle removal of rows, not columns, so add a corresponding assert there. (See how only row-related a11y events are emitted in `svtools/source/table/tablecontrol_impl.cxx`, and the "columns aren't selectable" comment for `AccessibleGridControlTable::isAccessibleColumnSelected`. Given that the full range of rows would previously have been sent in the `AccessibleTableModelChangeType::DELETE` event for column removal, this should still have worked in practice, since this would have cleared the whole vector, and elements would have been inserted on demand as needed again later. However, if that should ever be needed in the future, it should be handled more explicitly.) The handling of sending events when rows or columns are inserted or deleted in a Calc spreadsheet is more fundamentally broken and will be handled in a separate commit. Change-Id: Icfd5e326143e8e90cc513e430bfabbba39e7bdc6 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132218 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2022-03-03Recheck modules sv* with IWYUGabor Kelemen
See tdf#42949 for motivation Change-Id: I25779cbfb1aa93c31d6e12ac95e136b3bdbbc058 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/130403 Tested-by: Jenkins Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
2022-02-05Related: tdf#146836 daisy chain together some more event handlersCaolán McNamara
so old ones are not clobbered but are called from the new ones Change-Id: I4cdd25fc1f3b13b10711d5c2f30c46645ae6c968 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/129503 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2021-10-31Prepare for removal of non-const operator[] from Sequence in svtoolsMike Kaganski
Change-Id: I614a97e5e2328c787ce19612a88839e234d54382 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/124396 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2021-10-23Fix typo to complete commit 25278dc22ff6Andrea Gelmini
Change-Id: I78f0d443365e23501b43fe0f1d9e32d503c1e9f4 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/124085 Reviewed-by: Julien Nabet <serval2412@yahoo.fr> Tested-by: Jenkins
2021-10-23Prefix just nDataRowHeight in brwbox so we can fix a typoJulien Nabet
The other variable members should also be prefixed but I don't have an IDE to do it easily Change-Id: Ifce210a4de89ed4d7f05126e33555da231553283 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/124089 Tested-by: Jenkins Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2021-10-06CellController always controls something derived from svt::ControlBaseCaolán McNamara
Change-Id: I051c2d0cf134502943bda5aa0bad9b04163c221f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/123129 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2021-10-04Related: tdf#141633 similiarly support match combo/listbox font sizesCaolán McNamara
to the desired zoomed font size in the table control Change-Id: Iaf3b004544fdb0311b6c67baad612ba648e8c546 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/123043 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2021-10-01loplugin:constmethodNoel Grandin
Change-Id: I3ed657c5c5e6840e38e3c8505505b4b372125df0 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/122910 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2021-09-30tdf#141633 set correct font sizes in tableview child widgetsCaolán McNamara
Change-Id: Ic96a0ad8203bf3903546c0c2f07d96254ca01e4c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/122832 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2021-09-29Resolves: tdf#73139 text defaulted to transparent in pdf exportCaolán McNamara
set an initial explicit default text color to resolve this Change-Id: I875ae68a23d1768216ddf77764011f34ca70969c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/122813 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2021-09-28gives names to all the Idles and TasksNoel Grandin
enforce it by making the constructor parameter non-default. Change-Id: I321543e4dcf15ea0a43ad8cce91d2f8dc22df6ec Reviewed-on: https://gerrit.libreoffice.org/c/core/+/122766 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2021-09-28vcl: rename OutDevState to StackChris Sherlock
I have moved the header file to include/vcl/rendercontext as this will eventually be part of the RenderContext split from OutputDevice. State and associated enums have also been moved to the vcl namespace. I have also moved ComplexTextLayoutFlags into the vcl::text namespace. Change-Id: I0abbf560e75b45a272854b267e948c240cd69091 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/121524 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
2021-09-20clean up ambiguous confusing rectangle APIs like IsInside()Luboš Luňák
Reading 'rectA.IsInside( rectB )' kind of suggests that the code checks whether 'rectA is inside rectB', but it's actually the other way around. Rename IsInside() -> Contains(), IsOver() -> Overlaps(), which should make it clear which way the logic goes. Change-Id: I9347450fe7dc34c96df6d636a4e3e660de1801ac Reviewed-on: https://gerrit.libreoffice.org/c/core/+/122271 Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Reviewed-by: Luboš Luňák <l.lunak@collabora.com> Tested-by: Jenkins
2021-09-13tdf#142415 mouse events not propogated to table control event handlersCaolán McNamara
handle this with explicit callbacks from the cell widget for those events Change-Id: Ie605ca4286afc0fbd321f339fb7963771a303df5 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/122050 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2021-09-10warning: Excessive padding in 'struct OutDevState'Caolán McNamara
experiment with optin.performance.Padding analyzer and tuning AllowedPad to 2 with clang as compiler; export ENVCFLAGSCXX="-Xclang -analyze -Xclang -analyzer-checker=optin.performance -Xclang -analyzer-config -Xclang optin.performance.Padding:AllowedPad=2" and get a report of: OutDevState (13 padding bytes, where 5 is optimal) UIControlOptions (9 padding bytes, where 1 is optimal) Change-Id: I174f6f62d6e32df057d5e0f21d4274166f6ed8c8 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/121812 Tested-by: Jenkins Tested-by: Noel Grandin <noel.grandin@collabora.co.uk> Reviewed-by: Caolán McNamara <caolanm@redhat.com> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2021-08-30tdf#74702 vcl: introduce GetSystemTextColor()Chris Sherlock
Also rename DrawFlags to SystemDrawColorFlags, added a unit test. Change-Id: I3cb74b278e43561d1055b3b55b9730cdbdea51aa Reviewed-on: https://gerrit.libreoffice.org/c/core/+/113559 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2021-08-04Resolves: tdf#143023 explicitly connect to ControlBase focus-[in/out]Caolán McNamara
instead of listening to the generic vcl::Window/Control focus events. The thing which really gets/loses focus is now a Widget hosted inside the ControlBase. Change-Id: I012d0bea687aa6d5965a4e2f6ce3899bfc629f1b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/120003 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2021-07-13a11y crash on teardown of FmXGridPeerCaolán McNamara
the XAccessible is destroyed before the attempt to dispose via the IAccessibleBrowseBox* so call that first before the XAccessible is destroyed Change-Id: I908a3fbc05f92b5e56b8b6f2bc0b27757d39d1fb Reviewed-on: https://gerrit.libreoffice.org/c/core/+/118825 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2021-07-02convert AccessibleBrowseBoxObjType to scoped enumNoel Grandin
Change-Id: Iaf764c905d080e4decabd853bd3847b34cb79cdd Reviewed-on: https://gerrit.libreoffice.org/c/core/+/118279 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2021-05-21add Toggleable as a separate thing to a ButtonCaolán McNamara
and inherit ToggleButton from both it and Button Change-Id: If0e500aca8d0ffa087cb5e2bfc1786372fbff4eb Reviewed-on: https://gerrit.libreoffice.org/c/core/+/115921 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2021-05-19pass CheckButton argument instead of its Button baseclassCaolán McNamara
Change-Id: I76f446266fcc74ba2db928ef1c5e764eead57997 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/115801 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2021-05-17split OutputDevice from WindowNoel Grandin
as part of a longer-term goal of doing our widget rendering only inside a top-level render- context. I moved all of the OutputDevice-related code that existed in vcl::Window into a new subclass of OutputDevice called WindowOutputDevice. Notes for further work (*) not sure why we are getting an 1x1 surface in SvpSalGraphics::releaseCairoContext, but to fix it I clamp the size there (*) might have to dump VCLXDevice, and move it's code down into VCLXWindow and VCLXVirtualDevice (*) can we remove use of VCLXDevice in other places, in favour of just talking to the VCL code? Change-Id: I105946377f5322677d6f7d0c1c23847178a720b6 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/113204 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2021-05-05convert sal_uLong and tools::Long in vcl/settingsNoel Grandin
Change-Id: I69711b791884218f4a14c85fe69072b9ea06dc79 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/115109 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2021-05-03vcl: remove MetricVectorChris Sherlock
Change-Id: Ib700887ca79f423c65dfb75eea36bbfd808fa172 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/114976 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
2021-03-20cid#1473953 Uninitialized scalar fieldCaolán McNamara
Change-Id: I4d1bae818b36d613fd90840056dda5a22fa75c0d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/112776 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2021-02-23reportdesigner focus out handler clobbering the preexisting handlerCaolán McNamara
set by the databrowser, so chain one after the other Change-Id: I5aa16635031be425b9354e5a2d6b891a81d54e55 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/111384 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2021-02-18update DataBrowser has-focus when child widget loses focusCaolán McNamara
similar to tdf#135641 case, focus-out becomes an issue with the bibliography editor if focus-in is seen on clicking in a cell, then click in a GtkEntry and tab around in a circle. Without this lose-focus support focus will be grabbed back to the cell of the initial click on a circuit of the focus-cycle Change-Id: I36288ed21dc4357c077f8dee55b55abf2457c2a6 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/111157 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2021-01-28TopLeft().Y() -> Top() etc.Caolán McNamara
TopLeft().X() -> Left() BottomLeft().X() -> Left() TopRight().X() -> Right() BottomRight().X() -> Right() TopLeft().Y() -> Top() TopRight().Y() -> Top() BottomLeft().Y() -> Bottom() BottomRight().Y() -> Bottom() Change-Id: I5050f619bf92cfc59b6f8dfe7c9f98ef1453c294 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/110022 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2021-01-21keep the navigation bar control area the same size with hidden scrollbarCaolán McNamara
which is the way it historically worked before... commit 7fd9bd4cdf4ffc03b2280964ef3f7e5917769bbd Author: Caolán McNamara <caolanm@redhat.com> Date: Mon Jul 27 11:43:12 2020 +0100 we want the position of the start of the scrollbar which added a visibility check that we don't actually want as the navigation bar spreads out in a ugly manner on a gridcontrol with only a few columns Change-Id: I9f24937c20dbab40e0d031195aa6e3e527cd52f6 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/109721 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>