summaryrefslogtreecommitdiff
path: root/include/sfx2/frame.hxx
AgeCommit message (Collapse)Author
2025-01-10ITEM: Refactor ItemTypeArmin Le Grand (Collabora)
ItemType is useful and faster than RTTI. Until now it was implemented by a 16-bit member in the base class, plus (potentially) all constructors having to hand a value in at item construction type (of type SfxItemType) to get that member set correctly. This works, but there is no reliable way to guarantee coverage, and there have already been cases with missing SfxItemType - these fallback to '0' and thus all Items with ItemType() == 0 are assumed equal and might be static_cast'ed to the wrong classes. Note that I identified *35* Items that had no correct ItemType set/implemented actually. It also uses 16-bit per incarnated Item at runtime. I thought and realized now a more systematic approach to do that with a pure virtual function at the Item itself. That can also be secured by a clang compiler plugin in the future to keep it working. It uses one virtual function per derived class, no longer space in incarnated Items. Also the constructors will get more simple again. But the main aspect is security - we cannot afford Items potentially being held as equal if they are not. Unfortunately C++ does not offer something like a 'strict pure virtual function' that would force to be overloaded in every derivation, but the used methotology and adding a clang test is reasonably safe. Have now done the cleanup of previous method. Change-Id: I04768285f1e9b73d64b0bb87df401944b5d35678 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/180017 Tested-by: Jenkins Reviewed-by: Armin Le Grand <Armin.Le.Grand@me.com>
2024-01-17ITEM: Remove suspicious extra-Which in ::PutArmin Le Grand (allotropia)
The ::Put methods at SfxItemSet had an extra WhichID parameter that was not really documented, but I would guess often asked why it exists: An extra WhichID, just called 'nWhich' (which makes things NOT clearer). That is 'strange' since the Item given to be put already internally has a WhichID, so why a 2nd one? If you were really interested and read all that code (no, no comments on that anywhere) you might know that this a kind of 'Target-WhichID' under which the Item shall be put to the ItemSet. Since this is unclear for most people it is even dangerous and explains why so many code places just hand over the WhichID requsted from the Item that already gets handed over. To make it short: I removed that. For the 19 places where this was really needed I added a new method besides ::Put called ::PutAsTargetWhich that takes that extra WhichID (now called TargetWhich) and takes the needed actions. These are quite some because that may be combined with the bPassingOwnership flag, see new SfxItemSet::PutImplAsTargetWhich method. This makes usage of ItemSets/Items less dangerous. It also simplifies and thus makes safer the central helpers implCreateItemEntry/implCleanupItemEntry which have some less cases to handle. Debugged the failing UnitTests showed that there is an incarnate Item != SfxVoidItem that causes problems. I checked for errors in the change, but no luck. Afterr some time I found out that a ::Clone implementation caused the problem: These need to also copy the WichID of the original, but the SfxFrameItem failed to do so. This did not cause problems in the former version because implCreateItemEntry was designed to set a missing/ different WhichID. I corrected that in SfxFrameItem, also removed not needed costructor that caused that. Also added a SAL_WARN and a correction in implCreateItemEntry. I could have added an assert (did so for running local UnitTests), but should be enough. NOTE: When hunting for Items except SfxVoidItem that get crerated using a WhichID '0' i learned that this indeed happens: There are some (5) calls to SfxRequest::SetReturnValue that incarnate an SfxBoolItem with WhichID '0' (ZERO). This is not good and I think about how to change that... Change-Id: I9854a14cdc42d1cc19c7b9df65ce74147d680825 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/162124 Tested-by: Jenkins Reviewed-by: Armin Le Grand <Armin.Le.Grand@me.com>
2022-12-18add some SAL_WARN_UNUSED_RESULTCaolán McNamara
commit 817dfb74d9ec9f46ba32be6d5066d534f81072a5 Date: Tue Jul 17 09:45:37 2001 +0000 #89783#: NULL-Ptr possible probably intended pViewFrame = SfxViewFrame::GetFirst() but at this distance in time, just accept the current state of things Change-Id: I8779fef1041843e9f2e6c879cfb475d8ac8251fd Reviewed-on: https://gerrit.libreoffice.org/c/core/+/144401 Tested-by: Caolán McNamara <caolanm@redhat.com> Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2022-07-14clang-tidy modernize-pass-by-value in sfx2Noel Grandin
Change-Id: I7984f0b52809091511dc01005fdbfeafd521b4bf Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137048 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2022-07-04sfx2: replace pWindow m_pWindowHenry Castro
SfxFrame class members Signed-off-by: Henry Castro <hcastro@collabora.com> Change-Id: I1fd272a113763f6330f15ee34095e9e34ce5dd34 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/136753 Tested-by: Jenkins
2022-06-30sfx2: replace pImpl -> m_pImplHenry Castro
Class SfxFrame Signed-off-by: Henry Castro <hcastro@collabora.com> Change-Id: Iad58908e76f3d9891816a9c8dad3d37aa6630722 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/136684 Tested-by: Jenkins
2022-05-19sw: fix assert in SwModule::Notify()Michael Stahl
Apparently it happens when loading a 0-byte file that the SfxObjectShell is still in IsLoading() stage when close() is called. This then causes the SfxEventHintId::LoadFinished event to be emitted during close(), which is not a situation the assert was intended for. Change-Id: I60a260ca1c1e6cbf9502832ba6622de2628763e7 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/134610 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
2021-11-02Revert "tdf#117895: "Edit document properties before saving"..."Caolán McNamara
This reverts commit 3add3e5b70ad991c8351a54b0da62d05e977458f to try and alternative approach Change-Id: Ieb36b78246586cc7f1977c67eab130d2ae025988 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/124605 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2021-09-30loplugin:constparams improve handling of pointer paramsNoel Grandin
Change-Id: I4c0002e72703eded435bfe4985f5b0121bf8524b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/122843 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2020-07-20compact namespace declNoel Grandin
used git grep -lw namespace | xargs perl -i -p0e 's/(\w+)\s*.\{.\s*namespace\s*(\w+)/\1::\2/smg;' to do the initial replace, then compiled and fixed. Change-Id: If69904d75940c851aeffab0e78c4ba02cc968d44 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/98526 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2019-12-14loplugin:expandablemethodsNoel Grandin
Change-Id: Ia8192e03feda9e8ae70e29d8dc98d995f015f9ce Reviewed-on: https://gerrit.libreoffice.org/85135 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2019-12-12use covariant return type for SfxPoolItem::CloneCaolán McNamara
and can then remove some casting Change-Id: Id821c32ca2cbcdb7f57ef7a5fa1960042e630ffc Reviewed-on: https://gerrit.libreoffice.org/85022 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
2019-10-29loplugin:finalclasses sfx2Noel Grandin
Change-Id: I77330d53adb5c6ec66750e57fdc539353b4c9725 Reviewed-on: https://gerrit.libreoffice.org/81657 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2019-03-28tdf#42949 Fix IWYU warnings in include/sfx2/[e-M]*Gabor Kelemen
Found with bin/find-unneeded-includes Only removal proposals are dealt with here. Change-Id: I6e97c7ed6c0211dfafee83b9bdbea672e415fc49 Reviewed-on: https://gerrit.libreoffice.org/69715 Tested-by: Jenkins Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
2018-07-30loplugin:returnconstant in sfx2Noel Grandin
Change-Id: I9a41a2b53669bebfca573fef8d0d755e4621ce37 Reviewed-on: https://gerrit.libreoffice.org/58333 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2018-07-12tdf#117895: "Edit document properties before saving"...Henry Castro
option leaves just-saved document modified; changes are not saved Change-Id: Icad48fe1edcfb4c10c40f297326c23110144df53 Reviewed-on: https://gerrit.libreoffice.org/57211 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2018-04-15remove some unused comphelper includesJochen Nitschke
and fix the fallout Change-Id: I5d0c2040f57a3ac354a7e277592da31d09a5f359 Reviewed-on: https://gerrit.libreoffice.org/52894 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Jochen Nitschke <j.nitschke+logerrit@ok.de>
2018-03-14loplugin:constantparamNoel Grandin
Change-Id: I3ce653c0d9e517229dbbe32cc8d3ec3c206e364d Reviewed-on: https://gerrit.libreoffice.org/51273 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2018-01-04remove SfxUsrAnyItem typedefNoel Grandin
and rename SfxUsrAnyItem class to SfxUnoAnyItem, the choice being made by leaving the most popular one behind Change-Id: If3818ee0966a50e3036d7e2db951910b6282c91f Reviewed-on: https://gerrit.libreoffice.org/47313 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-12-11convert SFXFRAME_HASTITLE to bool fieldNoel Grandin
this is the only flag we are setting in the "type" field, so simplify Change-Id: I6079750b915f55486bf815a27d48f673af59bdb0 Reviewed-on: https://gerrit.libreoffice.org/46214 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-07-28loplugin:constparams handle constructorsNoel Grandin
had to change the structure of the plugin considerably, was too messy to structure it to do the calculations on a per-function basis Change-Id: I4edee7735f726101105c607368124a08dba21086 Reviewed-on: https://gerrit.libreoffice.org/40516 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-07-24loplugin:unusedfields readonly fieldsNoel Grandin
Change-Id: I6629926df06f71ff86e9fb23ae4fc1ae73bc9406 Reviewed-on: https://gerrit.libreoffice.org/40360 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-07-21loplugin:constparams in sfx2Noel Grandin
Change-Id: Id982c8fb5654433e9db10e2da6a86a6c8d90b9b4 Reviewed-on: https://gerrit.libreoffice.org/40261 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-04-25tools: svstream.hxx needs only errcode.hxx & not errinf.hxxChris Sherlock
Change-Id: Ia28e35ae5af4f601e9a586a3deffbcd61702b0ca Reviewed-on: https://gerrit.libreoffice.org/36896 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Chris Sherlock <chris.sherlock79@gmail.com>
2017-03-31tdf#82580 tools: rename Rectangle to tools::RectangleMiklos Vajna
Mostly generated using make check COMPILER_EXTERNAL_TOOL=1 CCACHE_PREFIX=clang-rename-wrapper RENAME_ARGS="-qualified-name=Rectangle -new-name=tools::Rectangle" Except some modules have their own foo::tools namespace, so there have to use ::tools::Rectangle. This commit just moves the class from the global namespace, it does not update pre/postwin.h yet. Change-Id: I42b2de3c6f769fcf28cfe086f98eb31e42a305f2 Reviewed-on: https://gerrit.libreoffice.org/35923 Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk> Tested-by: Jenkins <ci@libreoffice.org>
2017-03-27create SfxInterfaceId o3tl::strong_intNoel Grandin
Change-Id: Ie52f63382a9fb36f9a472801be012b140bfb51f6 Reviewed-on: https://gerrit.libreoffice.org/35722 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2016-11-22loplugin:countusersofdefaultparams in include/sfx2Noel Grandin
Change-Id: I8b5e3ebbfb715d0b6aec2c4137f0ff524b63227e Reviewed-on: https://gerrit.libreoffice.org/31065 Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Tested-by: Noel Grandin <noel.grandin@collabora.co.uk>
2016-11-18includes should be at the top of the fileNoel Grandin
not randomly scattered through the code found with something like: git ls-files *.cpp | xargs grep -Pzl "(?s){.*#include" Change-Id: I9c242fa4ef99e8677f2800d7ec9f16d16e488351 Reviewed-on: https://gerrit.libreoffice.org/30952 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2016-11-14loplugin:unusedmethodsNoel Grandin
Checked a couple of them: StandardCheckVisisbilityRedirector is unused since commit b1f8cf37828d5f37527e54774aa4935610aa6325 Author: Noel Grandin <noel.grandin@collabora.co.uk> Date: Wed Nov 2 10:57:21 2016 +0200 loplugin:singlevalfields SfxQueryStatus is unused since commit 64a708cba9b954afe3331f63c58218eb53b3d0ce Author: Caolán McNamara <caolanm@redhat.com> Date: Sat Nov 5 20:28:27 2016 +0000 Revert "Reverts a commit series that cripple windows ci." Change-Id: If1c9fe26c3ebc573d8c53c8f060b05c27f2711e5 Reviewed-on: https://gerrit.libreoffice.org/30840 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2016-11-03remove pParentFrame from SfxFrameNoel Grandin
Found by the singlevalfields loplugin. Dead as least as far back as commit 93a7b558588be1f12e137329548b706daccc07df Author: Frank Schoenheit [fs] <frank.schoenheit@sun.com> Date: Fri Nov 27 21:16:24 2009 +0100 [CWS autorecovery] merged SfxTopFrame into SfxFrame SfxTopFrame was the only class deriving from the abstract class SfxFrame, so both can effectively be treated as one class. Arguably when that commit was done, SfxFrame should also have been renamed to SfxTopFrame, since that it was it now seems to be. Expanding the nullptr value off that field means that: SfxFrame::GetTopFrame always return this SfxFrame::IsParent always returns false SfxViewFrame::GetTopFrame is now the same as SfxViewFrame::GetFrame SfxViewFrame::GetParentViewFrame now returns null Change-Id: Iac088fa485c3d7299d1553845ced2f5ced3c85f2 Reviewed-on: https://gerrit.libreoffice.org/30485 Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Tested-by: Noel Grandin <noel.grandin@collabora.co.uk>
2016-10-21loplugin:expandablemethodds in include/sfx2Noel Grandin
Change-Id: I1ec3ae33a71d154276e213a68c735476daa606b9
2016-09-22loplugin:unusedmethods in chart2..svxNoel Grandin
Change-Id: Ifb6045885049733415895f58cdd911256f48323c Reviewed-on: https://gerrit.libreoffice.org/29187 Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Tested-by: Noel Grandin <noel.grandin@collabora.co.uk>
2016-05-22tdf#89329: use unique_ptr for pImpl in frameXisco Fauli
Change-Id: I34256941b366e0a3d7c78818b6e8576f4a5669a2 Reviewed-on: https://gerrit.libreoffice.org/25309 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
2016-05-20loplugin:unusedmethods in sfx2, SfxUnoControllerItem goesNoel Grandin
Change-Id: Ibbae76b45da924e44fb91dcb3548106e8b908fbf Reviewed-on: https://gerrit.libreoffice.org/25160 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
2016-05-04No need to explicitly delete ctor the compiler wouldn't implicitly declareStephan Bergmann
Change-Id: Idd0e764765bd76e1f6a2d8ec6e18ebac27b91ec6
2016-05-03C++11: disable ctors with delete in include/Jochen Nitschke
replace the old declare and don't implement pattern with C++11 delete keyword no need to hide this design choice behind access restrictions Change-Id: I7e8430a07189aa48514a4613c3a8c2950b230f49 Reviewed-on: https://gerrit.libreoffice.org/24495 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Michael Stahl <mstahl@redhat.com>
2016-04-13loplugin:passstuffbyref in sfx2Noel Grandin
Change-Id: I8c9d6e972f74ee04c8befda3b4cabb6e9b6b2054
2016-04-12cleanup: remove unused com/sun/star/uno includesJochen Nitschke
Sequence.h(xx), Any.h(xx) and Type.h(xx) and remove unused using-declarations from these files. Add a few missing includes provided by them. Change-Id: I6b91b6d1fdf9d0496dd546c0aab9bdcc6831a5d4 Reviewed-on: https://gerrit.libreoffice.org/23805 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
2016-03-17loplugin:constantparam in sfx2Noel Grandin
Change-Id: I53e690ab8d50fb3ce43ba633fc018e7b66e591cd Reviewed-on: https://gerrit.libreoffice.org/23321 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
2016-03-15loplugin:constantparamNoel Grandin
Change-Id: I270e068b3c83e966e741b0a072fecce9d92d53f5
2016-03-02loplugin:unuseddefaultparam in sfx2Noel Grandin
Change-Id: I37afde801a6468c79259fe51acbdea0614c2c8c5
2016-02-09Remove excess newlinesChris Sherlock
A ridiculously fast way of doing this is: for i in $(pcregrep -l -M -r --include='.*[hc]xx$' \ --exclude-dir=workdir --exclude-dir=instdir '^ {3,}' .) do perl -0777 -i -pe 's/^ {3,}/ /gm' $i done Change-Id: Iebb93eccbee9e4fc5c4380474ba595858a27ac2c Reviewed-on: https://gerrit.libreoffice.org/22224 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Chris Sherlock <chris.sherlock79@gmail.com>
2015-11-115th step to remove tools/rtti.hxxOliver Specht
tools/rtti.hxx removed completed the interface of some Sdr.* Items and removed pseudo items Change-Id: I0cdcd01494be35b97a27d5985aa908affa96048a Reviewed-on: https://gerrit.libreoffice.org/19837 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Oliver Specht <oliver.specht@cib.de>
2015-11-10loplugin:nullptr (automatic rewrite)Stephan Bergmann
Change-Id: I7213b49b09ddcb00841aa5f63343baeab0e65fa4
2015-10-23com::sun::star->css in include/linguistic to include/sfx2Noel Grandin
Change-Id: Id69e293fda98ee6cf2cc3d3296a0cd2e06bd847e Reviewed-on: https://gerrit.libreoffice.org/19527 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
2015-10-12Replace "SAL_OVERRIDE" with "override" in LIBO_INTERNAL_ONLY codeStephan Bergmann
Change-Id: I2ea407acd763ef2d7dae2d3b8f32525523ac8274
2015-08-14remove default value from SfxPoolItem::PutValueNoel Grandin
more useful to make it explicit. Specifically, otherwise my defaultvalue clang plugin would want to remove lots of places that contains #define constants which, while technically the same as the default value, convey semantic information which is quite useful. Change-Id: I918ad5b0e73ba279fa1b1489b62d900339ff71eb
2015-07-24remove unused define TF_NEWDESKTOPNoel Grandin
Change-Id: Ibab48696036d0e7d23c87f11e1e800782dddb366
2015-07-16loplugin:unusedmethods sfx2(part2)Noel Grandin
Change-Id: I82223b72ddb6a9df1ee52a300b083002234602dc Reviewed-on: https://gerrit.libreoffice.org/17075 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
2015-07-16loplugin:unusedmethods sfx2Noel Grandin
Change-Id: I98c455d89f76fbcacf74929a4e8775b4da697f62 Reviewed-on: https://gerrit.libreoffice.org/17069 Reviewed-by: Noel Grandin <noelgrandin@gmail.com> Tested-by: Noel Grandin <noelgrandin@gmail.com>