summaryrefslogtreecommitdiff
path: root/sfx2/source/control
AgeCommit message (Collapse)Author
2023-11-19WIP: async popup menusJan-Marek Glogowski
A first patch to get some feedback. Asnyc LO popup menus are still buggy, as I'm not sure where to call the PopupMenu::Finish for them. Also the XDialogClosedListener is currently just for convenience and might want some separate notifier. Fun fact, that ImplExecute / ImplPopup is called for submenu, but then doesn't execute. And generally the naming of some variables is IMHO wrong; I might also prefix Menu members with "m_" for easier readability. Change-Id: Id8b413aa6b4699201e58db0113649c6b224d33b6
2023-11-14Resolves tdf#158084 - Start Center hover colorHeiko Tietze
Selected colors removed since hovering leads to selection (or execution) and does not need a special color Transparency for reccent documents and templates in start center increased to make the difference to selected more clear Change-Id: Iab52150cd5a93e2f6ff716921b2aa7d093018b3e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159407 Tested-by: Jenkins Reviewed-by: Heiko Tietze <heiko.tietze@documentfoundation.org>
2023-11-13Resolves tdf#158084 - Use system colors in start centerHeiko Tietze
StartCenterThumbnailsHighlightColor and StartCenterThumbnailsHighlightTextColor removed in favor of StyleSettings.GetHighlightColor and .GetActiveColor Change-Id: I7005b17f6c48525c791f23ea99b7b68e7a67531b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159286 Tested-by: Jenkins Reviewed-by: Heiko Tietze <heiko.tietze@documentfoundation.org>
2023-11-09lok: notebookbar: fix unit-copy-paste in onlineSzymon Kłos
we can't remove hack in SfxDispatcher::Update_Impl yet because this made unit-copy-paste test in online broken reverts part of: commit 1a6d16cb14342f9a66f99960e96027af6e5369ef lok: notebookbar: query SID_NOTEBOOKBAR only when requested to switch UI Signed-off-by: Szymon Kłos <szymon.klos@collabora.com> Change-Id: I8cd801bbc912f2ab3f710f5c7133445f07c4e5de Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159039 Tested-by: Jenkins Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
2023-11-07ITEM: Get away from classic 'poolable' Item flagArmin Le Grand (allotropia)
To understand this, some look back in history will be needed to see why it is as it is today. In some (reworked) comments 'poolable' is described as flag to hold Items in the ItemPool, also always having only one incarnation of each possible Item. This is not the original intention, but a side-effect. The reason is what the binary format in the office did: To save a document, the Objects & the Pool were saved, *not* individual Items *together* with the objects. The Pool was completely (binary) saved (and loaded) in one run. Temporary IDs were used to represent at the objects in file which Items were referenced. This *required* to have only one incarnation per item to have a minimal binary file size, thus this high effort was put into this. At doc load, the pool was loaded, all Items were set to RefCount 5000, the references from the objects were restored and then for each Item the RefCount was lowered by 5000 again and - if being zero - deleted. Items for UI were marked 'non-poolable' to *not* safe them with the document, so poolable was a flag to decide if that Info/Item was to be saved with the document - or more direct: if it is Model Data. Items are small, so if we prefer runtime it is okay to no longer being strict with this, anyways does not happen often and has only marginal memory effects - compared to runtime effects/savings. Other problems which this caused: One example is that objects in the UNDO stack were still in the pool, so e.g. deleted pictures were saved with the document despite no longer being used (!). That is the reason we have an UndoItemPool and a method MigrateItemPool to move stuff to that Pool when objects go to the UNDO stack - all of this is also no longer needed. Cleaning this up means to ideally have all items in the SfxItemSet, no longer at the Pool. The Pool should be reduced to a 'Default-Item- Holder' and a 'Slot-to-whichId-mapper'. This needs thorough cleanups/removals, but will be worth it because that massive simplification(s) will increase safety an runtime and make migrating to the goal of completely type-based ItemSet stuff easier for the future. Hopefully only view code in the office working with items will have to be changed for this. In this 1st step I already found that some 'compromizes' will be needed: - There are still Items that have to be at the pool to make the Surrogate-stuff working. This gives back all Items in a Pool of a type and is used in ca. 80 cases. Each one looks at these Items *without* context (e.g. a SfxItemSet at an Object would be a context), so if e.g. a dialog is open that temporarily uses Items of that type you would also get these - without knowing about it... To make that work there is still a mechanism to have Items at the Pool, but now just *registering* (and un-reg) them without any sort/search/ remove needs. Also only for Items that need that, so I evaluated the GetItemSurrogates calls and added some asserts when GetItemSurrogates tries to access an unregistered item type which needs to be added. - Another caveat is that there are about 250 places that directly put Items to the Pool (not all remove these, that is done at pool deletion, so some kind of silent 'garbage-collection' is in place). To have an overview I renamed the accessing methods to separate them from the same functionality at the SfxItemSet, which had the same names. An implementation does still add these directly to the pool, there is no way to cleanup those usages for now. In principle all these should be changed to hold the data at an SfxItemSet. I am still hunting problems. But you can build the office, all apps work (including chart) and you can do speed comparisons already. There are test throwing errors, so I hunt these now. It is hard to give an estimation about how much more changes/corrections will be needed. Completed adaptions to new registered Items at Pool, that reduces the failing tests. Still many that I need to hunt. Added stuff to work around that 'compromize' in ScDocumentPool: It overloads ::PutImpl of the pool to implement special handling for a single Item in SC, the ScPatternAttr. In former code that method was used from SfxItemSet and ::PutImpl at the pool directly, so it was only used in one place. I am not sure if it was used from the SfxItemSet functionality, but better offer it for now. To not waste too much runtime the callbacks depend on the boolean 'NewItemCallback' at the SfxPoolItem, it gets set for that single Item in SC and only then the callbacks trigger. I hope to get rid of those again, e.g. newItem_UseDirect is only needed since we have no 'real' StaticPoolDefaults currently - another thing that needs to be cleaned up in a next step. Since usages of impl(Create|Cleanup)ItemEntry and Direct(Put|Remove)ItemInPoolImpl got more and more similar I decided to unify that: move impl(Create|Cleanup)ItemEntry to tooling, make it globally available in svl and use it also directly for Direct(Put|Remove)ItemInPoolImpl. This slightly increases the failing tests again, but only since in Direct(Put|Remove)ItemInPoolImpl that fallback (e.g. tryToGetEqualItem) was used before, thus this is the same class of errors (SfxPoolItem ptr-compare) as the others which I will need to find anyways. Also fixed some missing stuff. Have now idenified and redirected all SfxPoolItem ptr-compares to be able to debug these - one cause for the remaining errors is probably that before with bPoolable those often were sufficient, but are no longer. Used the [loplugin:itemcompare] and a local clang build to do so, see https://gerrit.libreoffice.org/c/core/+/157172 Stabilized Direct(Put|Remove)ItemInPoolImpl forwards, added parameter to implCreateItemEntry to signal that it gets called from DirectPool stuff - currently needed. Hopefully when getting rid of that DirectPool stuff we can remove that again Added two more debug functionalities: - Added a SerialNumber to allow targeted debugging for deterministic cases - Added registering & listing of still-allocated SfxPoolItems at office shutdown Found PtrComp error in thints.cxx - POC, thanks to areSfxPoolItemPtrsEqual. Will hopefully help more with other tests Found some wrong asserts/warnings where I was too careful and not finding something/succeeding is OK, fixes some UnitTests for SC For SC I now just tried to replace all areSfxPoolItemPtrsEqual with the full-ptr-content compare SfxPoolItem::areSame. I also needed to experiment/adapt the newItem_Callback solution but got it working. Did that replacement now for SW too, found some places where the direct ptr compare is OK. Continued for the rest of occurrences, now all 160 places evaluated. Also done some cleanups. Massive cleanups of stuff no longer needed with this paradigm change. Also decided to keep tryToGetEqualItem/ITEM_CLASSIC_MODE for now. It is used for *one* Item (ScPatternAttr/ATTR_PATTERN) in SC that already needs many exceptions. Also useful for testing if errors come up on this change to test if it is related to this. Added forwarding of target Pool for ::Clone in SvxSetItem and SvxSetItem, simplified SfxStateCache::SetState_Impl and returned to simple ptr compares in SfxPoolItem::areSame to not do the test in areSfxPoolItemPtrsEqual. Debugged through UITest_calc_tests9 and found that in tdf133629 where BoxStyle is applied to fully selected empty calc the Item- reuse fallback has to be used not only for ATTR_PATTERN, see comment @implCreateItemEntry. Maybe more... Problem with test_tdf156611_insert_hyperlink_like_excel. Found that in ScEditShell::GetFirstURLFieldFromCell the correct SvxURLField is found and returned as ptr, but it's usage crashes. That is due to the SfxItemSet aEditSet used there gets destroyed at function return what again deletes the SvxFieldItem that is holding the SvxURLField that gets returned. This shows a more general problem: There is no 'SfxPoolItemHolder' that safely holds a single SfxPoolItem - like a SfxItemSet for a single Item (if Items would be shared_ptrs, that would be a safe return value). That will be needed in the future, but for now use another solution: Since I see no reason why EE_FEATURE_FIELD should not be shareable I wil change this for ow in the SfxItemInfo for EditCharAttribField. That way the Item returned will be shared (RefCnt > 1) and thus not be deleted. I changed the return value for GetURLField() and GetFirstURLFieldFromCell() in ScEditShell: At least for GetFirstURLFieldFromCell the return type/value was not safe: The SvxFieldItem accessed there and held in the local temporary SfxItemSet may be deleted with it, so return value can be corrupted/deleted. To avoid that, return a Clone of SvxFieldData as a unique_ptr. With all that UnitTest debugging and hunting and to get the paradigm change working to no longer rely on shared/pooled items I lost a little bit focus on speed, so I made an optimization round for the two central methods implCreateItemEntry/implCleanupItemEntry to get back to the speed improvements that I detected when starting this change. It was mainly lost due to that 'strange' chained pool stuff we have, so I added to detect the target pool (the one at which the WhichID is registered) directly and only once. Next thing to cleanup will/should be the pool and it's concept, all this is not needed and really costs runtime. Since implCreateItemEntry/implCleanupItemEntry are executed millions of times, each cycle counts here. Had an error in the last changes: pool::*_Impl methods use index instead of WhichID - most of them. Another bad trap, I really need to cleanup pool stuff next. Change-Id: I6295f332325b33268ec396ed46f8d0a1026e2d69 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157559 Tested-by: Jenkins Reviewed-by: Armin Le Grand <Armin.Le.Grand@me.com>
2023-11-06lok: notebookbar: query SID_NOTEBOOKBAR only when requested to switch UISzymon Kłos
commit 5bd2931b57a6cb4ac1f39d7ddae874ac693cfab0 tdf#102063 Notebookbar wont appear on launch introduced some Query hack to SfxDispatcher::Update_Impl what causes many updates on lots of different actions. It breaks multi-view state of notebookbar in LOK case, so don't do that. It should be reviewed for regular case too. Change-Id: I8f26bddc6cff991c56a1172893d83b90fb225acd Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158937 Tested-by: Jenkins Reviewed-by: Szymon Kłos <szymon.klos@collabora.com>
2023-10-24suppress more IndexHint accessibility warningNoel Grandin
Change-Id: I45bc0bf74f4ebeeb4155006e67309cd476ebc3c7 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158388 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-10-18LOK: send state of protected cellsPranam Lashkari
Change-Id: I432a3af50b6089faa80a28804d95d816af6cd278 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/154936 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-by: Szymon Kłos <szymon.klos@collabora.com> Reviewed-by: Pranam Lashkari <lpranam@collabora.com> (cherry picked from commit 5f13751cefd725cb2a38e66c9484046e6141c6c2) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158150 Tested-by: Jenkins
2023-10-11Drop o3tl::span, can use C++20 std::span directly nowStephan Bergmann
Change-Id: Ic21ff7bf48f07f7277979d52e99d2c5c268de83f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157825 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2023-10-08SfxRequest doesn't need to inherit from SfxHintCaolán McNamara
or anything Change-Id: Ibfedb7dce6503b5593111380c53fc0ef6c7e93af Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157680 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2023-09-25tdf#155698 - Start Center: Retain pinned items when clearing the listAndreas Heinisch
Change-Id: Ife54845e020977cdb80a7fcc1fa63333afc17b32 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157169 Tested-by: Jenkins Reviewed-by: Andreas Heinisch <andreas.heinisch@yahoo.de>
2023-09-18fix emscripten buildSarper Akdemir
Change-Id: I15df992e410f741a22d1f140b85e57a97195a5f6 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157020 Tested-by: Jenkins Reviewed-by: Sarper Akdemir <sarper.akdemir.extern@allotropia.de>
2023-09-13loplugin:unusedmethodsNoel Grandin
Change-Id: I00f228451574ca9f9e352d233c7f326c88e90a95 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/156892 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-09-11ITEM: Diverse further changes/cleanups/preparationArmin Le Grand (allotropia)
Added a counter for SfxItemSet usages, similar to the already added one for SfxPoolItems to allow quick info about evtl. problems/drawbacks of changes. Replaced enum SfxItemKind in favour of settable boolean flags directly at SfxPoolItem. These are organized as bitfield, do not need more space as the enum and allow to be set separately and multiple ones at the same time. Flags for PoolDefault/StaticDefault/DeleteOnIdle use this now and are quickly accessible booleans. It is not a problem that theoretically the flags for PoolDefault/StaticDefault could now both be set - this is internal to SfxItem stuff and not accessible from normal code, so can be managed. Added for debug build a bitfield boolean m_bDeleted that will be set in the SfxPoolItem destructor. Of course it's usability will depend on the freed space not yet being re-used, but will hopefully help in the debugger to detect reasons for failure (would have helped at least me before). Added for replacement of virtual method IsVoidItem() another bitfield bool m_bIsVoidItem that is set in the constructors of SfxVoidItem. Also had to add some constructors to do that which were defaulted before. This is mainly because the base class SfxPoolItem does *not* have a copy-constructor that copies the members (flags/RefCnt/WhichID) and we should keep that 'indirect reset' when Cloning. isVoidItem() is now a simple boolean member access - the bitfield does the needed masking. This spares one entry in the virtual function table of SfxPoolItem which is derived more than 500 times. Used the results of the experiment at https://gerrit.libreoffice.org/c/core/+/156774 to change some accesses to IsVoidItem() to use SfxItemState instead. This is for preparation of splitting up the two usages of SfxVoidItems, see commit text in the experiment. If this shows problems in the future those six places documented there may have to be changed back to use the new isVoidItem(), but should also check the ptr this time to be non-zero. Removed SFX_ITEMS_SPECIAL that is no more used anywhere. Change-Id: Ib687ca2362d72a4651c75aee0c67029088f68947 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/156805 Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Tested-by: Jenkins Reviewed-by: Armin Le Grand <Armin.Le.Grand@me.com>
2023-09-06tdf#156959 - Remove pinned icons from thumbnail view itemAndreas Heinisch
Remove pinned icons from thumbnail view item and pushed it down to the recent documents view item. This avoids that the pinned icon will be shown in a simple thumbnail view, e.g., in the thumbnail view of the side pane in base. In addition, fixed an error with the number of elements in the thumbnail view in the start center when items are pinned, i.e., removed a spurious new line. Change-Id: I76026bfa9239f709aa60ff12efabe28cb09f0d76 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/156625 Tested-by: Jenkins Reviewed-by: Andreas Heinisch <andreas.heinisch@yahoo.de>
2023-09-01SAL_WARN->SAL_INFO in SfxDispatcherNoel Grandin
nobody cares if child window slot is missing Change-Id: I24978daa9a2770e8f0bd44b5b816f94b8d01da0d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/156407 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-09-01tdf#156538 follow up: Use better tooltip activation rectangleJim Raykowski
This patch corrects the tooltip only being shown when the mouse pointer is in the top third of the window when using gtk3. Change-Id: I9d705c064bc4654ed660842215ffd59edc14891b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/156358 Tested-by: Jenkins Reviewed-by: Jim Raykowski <raykowj@gmail.com>
2023-08-31use concrete type for ThumbnailView::mxAccessibleNoel Grandin
avoid some unnecessary casting Change-Id: Id3c4d8b91ec04beb1fed61050066e2b79d01d2df Reviewed-on: https://gerrit.libreoffice.org/c/core/+/156288 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-08-30use concrete type for ThumbnailViewItem::mxAccNoel Grandin
avoid some unnecessary casting Change-Id: I86d48cb463f4e9a1661025fa6e1f4f8c03d61eaf Reviewed-on: https://gerrit.libreoffice.org/c/core/+/156287 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-08-18ITEM: preparations for more/easier changesArmin Le Grand (allotropia)
This change is not about speed improvements but diverse preparations to make changes/reading/understanding easier. It does not change speed AFAIK. Added a global static debug-only counter to allow getting an overview over number of all allocated SfxPoolItem's and the still alloated ones at office shutdown. The values are used in Application::~Application to make a short info statement. It allows to be able to quickly detect if an error in future changes may lead to memory losses - these would show in dramaitically higher numbers then (hopefully) immediately. Moved SfxVoidItem to own source/header. Added container library interface support to SfxItemSet, adapted already some methods to use it - not all possible, I will commit & get status from gerrit 1st if all still works and then continue. Changed INVALID_POOL_ITEM from -1 to use a global unique incarnation of an isolated derivation from SfxPoolItem. It allows to avoid the (-1) pointer hack. Since still just pointers are compared it's not worse. NOTE: That way, more 'special' SfxPoolItem's may be used for more States - a candidate is e.g. SfxVoidItem(0) which represents ::DISABLED state -- unfortunately not only, it is also used (mainly for UI stuff) with 'real' WhichIDs - hard to sort out, will have to stay that way for now AFAIK. Changed INVALID_POOL_ITEM stuff to use a static extern incarnated item in combination with a inline method to return it, called GetGlobalStaticInvalidItemInstance(). Isolated create/cleanup of a SfxPoolItem entry in SfxItemSet to further modularize/simplify that. It is currently from constructor & destructor but already shows that PoolDefaults are handled differently - probably an error. Still, for now, do no change in behaviour (yet). Got regular 'killed by the Kill-Wrapper' messages from gerrit, seems to have to do with UITest_sw_findReplace. That python/c++ scripting stuff is hard to debug, but finally I identified the problem has to do with the INVALID_POOL_ITEM change. It was in SfxItemSet::InvalidateAllItems() where still a (-1) was used -> chaos in detecting invalid items. Change-Id: I595e1f25ab660c35c4f2d19c233d1dfadfe25214 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155675 Tested-by: Jenkins Reviewed-by: Armin Le Grand <Armin.Le.Grand@me.com>
2023-08-17tdf#156699 a11y: Set a11y name for SvxCharViewMichael Weghorn
Set the character name as a11y name for the `SvXCharView`. Also add a check for the string to be non-empty in `SvxCharView::GetDecimalValueAndCharName`, since `SfxCharmapContainer::updateRecentCharControl` sets the text to an empty string, and calling `OUString::iterateCodePoint` on that empts string would trigger an assert now that `SvxCharView::SetText` tries to retrieve the character name right away. This makes NVDA on Windows announce the focused character by its name in the Special Characters dialog and the Special Characters toolbar group button. Orca with the gtk3 VCL plugin now announces the focused character in the Special Characters dialog, but not yet in the toolbar group button. Change-Id: I79c8e0c2de6e817a467a405dc7d9e103cba07dfe Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155757 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-08-17tdf#156699 sfx2: Extract helper method to get char value + nameMichael Weghorn
It will be reused in an upcoming commit to set the a11y name for the `SvxCharView`. Change-Id: Ib5938e5363571e547ee00cac8432f919b60cd97a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155756 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-08-16tdf#156538 Enhancement to show character information in the insertJim Raykowski
special characters control This patch makes a tooltip show when the mouse pointer is over a character window in the special characters control. It also adds a label that is used to display character information of the highlighted character. Code for creating the character information text shown in the tooltip and label was referenced from SvxCharacterMap. Change-Id: I4b62e63b27310cbe9e9661ff51c2db206e9e3507 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155547 Tested-by: Jenkins Reviewed-by: Jim Raykowski <raykowj@gmail.com>
2023-08-13Revert "clang-tidy bugprone-parent-virtual-call in sfx2"Noel Grandin
This reverts commit 0f3b36bd2749f360df84d1594c01e619ba0f4930. There are some odd things gone in with some of these changes that I do understand. Reverting until I have worked it out. Change-Id: Ifa383ee7ed2db4f81e2b0ac593e652288a07514f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155596 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-08-12clang-tidy bugprone-parent-virtual-call in sfx2Noel Grandin
Change-Id: Id1e32a696dd97d1bded467834e5fbd14345d02c1 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155619 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-08-09Resolves: tdf#156661 only set a fixed height for the single row caseCaolán McNamara
of the insert special character dialog. The character popdown uses multiple rows instead. Change-Id: If3c5578a018a31dbdb0a0d9785f18b570e13112f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155502 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
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-30Send Calc pivot table command state changes to LOKAron Budea
Change-Id: I0d9e04b0a0452f66cb9703d9f34fe6cb44d724c5 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/154506 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-by: Aron Budea <aron.budea@collabora.com> (cherry picked from commit b62f9f484a0fc9215e34153daac4a8bdb9698d4b) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155034 Tested-by: Jenkins
2023-07-28SfxMedium::GetItemSet never returns nullptrMike Kaganski
Change-Id: Ibfc98a49022aa09ebf5315e5d3328308c1e51d66 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/154997 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2023-07-26lok: sfx2: fix change state "SheetRightToLeft" 2nd attemptAron Budea
This reverts commit 71e5f7e43471cc479ea1e818c813170a389964e6, and adds SheetRightToLeft in a different place. Change-Id: Id7001d06b247713de2e4dfe5076d156988e932d4 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/152808 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-by: Henry Castro <hcastro@collabora.com> (cherry picked from commit f44aed75f1c1f64c07651376fd2f638f61e0c3b1) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/154928 Tested-by: Aron Budea <aron.budea@collabora.com> Reviewed-by: Aron Budea <aron.budea@collabora.com>
2023-07-23tdf#147911 Implement set_item_help_id for context menu itemsRafael Lima
This patch adds the method set_item_help_id for weld::Menu (similarly to what we already have for weld::Toolbar). This way, it is possible to define help IDs for each entry in context menus that are created during runtime. This is necessary to fix various bug tickets that request F1 to redirect to the corresponding help page when a context menu item has focus. This currently works for context menus created from XML files, but fails for context menus created during runtime. Besides implementing the new method, this patch fixes bug 147911 (see changes in file templatedlglocalview.cxx) to showcase how set_item_help_id can be used. NOTE: Pressing F1 in context menus only work with "gen" and "win"... unfortunately it does not work in kf5 and gtk3 due to a separate bug (see bug 156376). Change-Id: Ic9bb1bca3e646cb4d0b879d8672c5dcc9c19c4c9 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/154699 Tested-by: Jenkins Tested-by: Caolán McNamara <caolan.mcnamara@collabora.com> Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2023-07-23vcl: Use GetTextArray() when drawing mnemonicsKhaled Hosny
Instead of using a different function to get the character width, use the same function used for getting the character widths elsewhere. Change-Id: I21428f34bb0f3a60fa17f5e8ecc3420545356337 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/154609 Tested-by: Jenkins Reviewed-by: خالد حسني <khaled@libreoffice.org>
2023-06-29m_aMouseClickHdl is deadNoel Grandin
It was added in commit c706fde1c4ecc6974bcf32ce33aacf3093355ae1 Resolves: tdf#156067 merge special char dialog/popup logic But is never assigned a useful value Change-Id: I476b00a96c53298414239509b2ca5452f0bf08c5 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/153743 Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com> Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-06-29loplugin:unusedmethodsNoel Grandin
Change-Id: I95ab7581dec35b113cb657ce8e5ee27c89c73593 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/153746 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-06-29loplugin:unusedfields make it a little smarterNoel Grandin
around dealing with operator[] on map data-types Change-Id: Idd6654948ae2d03d634fcf30a8d98530a78ab4ca Reviewed-on: https://gerrit.libreoffice.org/c/core/+/153740 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-06-28Resolves: tdf#156067 merge special char dialog/popup logicCaolán McNamara
there was some cut and paste done to create the popup at some point, so put it back together and reuse the "delete recent" etc which is missing from the popup case Change-Id: Idc33d83ea04b46b0255e77bcecf565dc8174e426 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/153647 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2023-06-26LOK: send state of DataFilterAutoFilterPranam Lashkari
Change-Id: Ib71dcdb6b02f3c1e9e1c552a718cb03e7cd9a4b4 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/153532 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-by: Aron Budea <aron.budea@collabora.com> (cherry picked from commit 0407d4290617dc717abed3ea48f1abf3cf1d750f) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/153602 Tested-by: Jenkins
2023-06-21tdf#122270 sd: refresh notebookbar after switch to/from master viewJustin Luth
Although the state of the uno items was changing, the notebookbar was not refreshing to display the new state. Change-Id: Ifda5e6dcfa1d569ba75d0c94cdf0bc94c63977d5 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/153360 Tested-by: Jenkins Reviewed-by: Justin Luth <jluth@mail.com>
2023-06-20lok: sfx2: fix change state "SheetRightToLeft"Henry Castro
The UNO command "SheetRightToLeft" can be disabled Signed-off-by: Henry Castro <hcastro@collabora.com> Change-Id: I54742c9d52eb52e36154e0aac2cdf440771eb177 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/152502 Tested-by: Caolán McNamara <caolan.mcnamara@collabora.com> Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com> (cherry picked from commit fc8270f06eca5ba2ba25673a424b36d9e352f62a) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/152546 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/153267 Tested-by: Jenkins
2023-06-12sc: fix freeze row/column panesHenry Castro
The UNO command state has changed to Point (row, tab) and Point (col, tab), Otherwise, if the row or column has the same value for all sheets, the state cache will not report any changes to the client side. Signed-off-by: Henry Castro <hcastro@collabora.com> Change-Id: I2080f5e664825d81c4fa4dbb2c5d782f188dae64 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/151344 Tested-by: Andras Timar <andras.timar@collabora.com> Reviewed-by: Andras Timar <andras.timar@collabora.com> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/151975 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/152908 Tested-by: Jenkins
2023-06-06tdf#38742 - Start Center: introduce push pins to favorite documentsAndreas Heinisch
Change-Id: I879e4d93e1da222d9acabb776552ca1cf819574b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/152136 Tested-by: Andreas Heinisch <andreas.heinisch@yahoo.de> Reviewed-by: Andreas Heinisch <andreas.heinisch@yahoo.de>
2023-06-05tdf#152431 Fix line count resets to zero after 65535Bogdan B
GetLineCount was a sal_uInt16 value, that allows only 65535 lines to be counted. This is changed to sal_Int32 and also the underlying data type for the lines number is changed from sal_uLong to sal_Int32, but not for pages number. With this change, the maximum possible line number is now increased to 2^31-1 = 2,147,483,647. Change-Id: Ibee2d24e638204133f0ef085564016543f73d351 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/143173 Tested-by: Jenkins Reviewed-by: Hossein <hossein@libreoffice.org>
2023-06-02Resolves tdf#155200 - Don't scale overlay images in start centerHeiko Tietze
Thumbnails don't change their size so overlay must not too Change-Id: I83ff2bb60ec619686b583180ebabe194c4a77b23 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/152193 Tested-by: Jenkins Reviewed-by: Heiko Tietze <heiko.tietze@documentfoundation.org>
2023-05-25merge some stringaddsNoel Grandin
found with a lightly tweaked version of the loplugin:stringadd and some hand-holding. Change-Id: I146aadcaf665e98fea89a9cad2df4dc3935622f4 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/152275 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-05-04tdf#153587 Display CTRL+F in the keyboard shortcuts listJuergen Funk
* Add the missing entry to Accelerators.xcu * Handle vnd.sun.star.findbar:-command the same as .uno commands Change-Id: I69d441d63a6b0478a07c9ef10665b7d59d3334b8 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/151322 Reviewed-by: Samuel Mehrbrodt <samuel.mehrbrodt@allotropia.de> Tested-by: Samuel Mehrbrodt <samuel.mehrbrodt@allotropia.de>
2023-04-30Use getXWeak in sfx2Mike Kaganski
Change-Id: I364f13308adf8b3257e53da2bc6576088bb958f0 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/150867 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2023-04-28optimise find/insert calls to mapsNoel Grandin
Instead of doing two lookups, we can just call insert and then update the mapped-to value if the insert actually succeeded. Change-Id: I3df3b98f0debe6bf74c739dd5850e7714d9c2789 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/151030 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-04-26Related: tdf#155017 Stop after the first pop in case the shell was not on stackMike Kaganski
After commit 271f17a6022c64cbbe9befbc66a9eaaa0567d569 (tdf#155017: make sure that the correct shell is popped from SfxDispatcher, 2023-04-26). This restores the previous logic for a hypothetical case of a pop without POP_UNTIL scheduled for a shell, which was not on the stack (so that it wasn't removed in the code added in the commit mentioned above); I haven't a reproducer, but it definitely can happen, given how things work here. So I try to avoid breaking it even further :-) Change-Id: Ied0a1406881fbefe3cf069f816c50da03a41dcd0 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/151034 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2023-04-26tdf#155017: make sure that the correct shell is popped from SfxDispatcherMike Kaganski
Honestly, I don't quite understand the idea of using the stack of shells in SfxDispatcher, when the order of addition of shells there does not match the order of removal. After opening the bugdoc, SfxDispatcher has these shells in xImp->aStack (from top to bottom): [8] SwWebView [7] SwWebTableShell [6] SwWebTextShell [5] SwWebListShell [4] FmFormShell [3] SwWebDocShell [2] SfxViewFrame [1] SwModule [0] SfxApplication SfxViewFrame dtor calls ReleaseObjectShell_Impl. * First of all, it calls PopShellAndSubShells_Impl for SfxViewShell; * Then it calls SfxDispatcher::Pop for SfxObjectShell; * Then it calls SfxDispatcher::RemoveShell_Impl for SfxModule; * Then SfxObjectShell is destroyed; * And finally, SfxDispatcher::SetDisableFlags is called. PopShellAndSubShells_Impl (for SfxViewShell) finds the passed SwWebView at the top of the stack (pos. 8), and removes it. SfxDispatcher::Pop for SfxObjectShell queues removal of the passed SwWebDocShell *without* SfxDispatcherPopFlags::POP_UNTIL mode. SfxDispatcher::RemoveShell_Impl first calls Flush, which actually executes the queued actions. At this point, an SwWebTableShell (pos. 7) is the top of the stack; SfxDispatcher::FlushImpl will pop it, and stop (because there was no SfxDispatcherPopFlags::POP_UNTIL at the previous step), so the intended removal of SwWebDocShell (which is at pos. 3) will not happen. Then RemoveShell_Impl will proceed searching for the specific shell (SwModule), and removing specifically that (at pos. 1). At the moment of destruction of object shell, the dispatcher's stack looks like this: [5] SwWebTextShell [4] SwWebListShell [3] FmFormShell [2] SwWebDocShell <-- The problem is here [1] SfxViewFrame [0] SfxApplication and pos.2 points to a destructed object. Finally, SetDisableFlags iterates all the shells still in the stack, setting their flags - and obviously accessing already destroyed object. In debug builds, this crashes reliably; in release builds, where dtors do not fill memory, the access of the just-destroyed objects likely often goes unnoticed. In different documents, the order and the set of shells there is different, e.g. an empty Writer document would have view shell just above object shell, resulting in correct removal of the object shell. I don't know what strategy is intended here. I decided to implement a small change, that makes sure that without POP_UNTIL, popping a shell removes exactly that shell that was requested for removal. Change-Id: I670d024056a5b32d5485f00a4799a8b0bacb6485 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/151003 Tested-by: Mike Kaganski <mike.kaganski@collabora.com> Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2023-04-24loplugin:unnecessarygetstr extend to more std::string checkingNoel Grandin
suggested by mike kaganski Change-Id: I5f5f254142767aca45a6101abdd84a0163ca6a34 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/150936 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>