Commit Graph

396 Commits

Author SHA1 Message Date
d266cb32c3 tdf#104621 framework: Redo commit 84f2ff67a7e404febf710b1dc7f66d06745c503f
The fix was silly and wrong, need to check m_xUIElement, not m_aName,
which may be set independently, see the confusing code in
ToolbarLayoutManager::requestToolbar().

Change-Id: I279088cb2516b0a19619b5647f15f738a2624edf
2016-12-15 13:36:24 +01:00
872cf486c5 Revert "verify SolarMutex when ref-counting VclPtr" series
This reverts the following commits:

    commit 722f4e1d86710f2facd37d7e040df9e1fd585e26
    tdf#104573 - Assertion failed: SolarMutex not locked

    commit f04ec99f5e6a543b8191ced61db4710c3c0de356
    tdf#104573 - Assertion failed: SolarMutex not locked

    commit 71b1e3ff6374c23e65200d3bcafca387d29af04f
    tdf#104573 - Assertion failed: SolarMutex not locked when trying

    commit e794ce1eef6730e5a46d5fb0aa6db2895ede85e7
    verify that we hold the SolarMutex when ref-counting VclPtr

IRC discussion:
<noelgrandin> sberg, maybe I should revert this whole "VclPtr assert" series, I don't have mental bandwidth to sort this out properly now
<sberg> noelgrandin, what I fear is that you'll end up adding lots of SolarMutex locks to small places, where the proper fix would be to add it further out; and once such a dreaded recursive SolarMutex lock is in place (but needlessly so, once the proper fix is done), it's hard to clean that up again
<noelgrandin> sberg, yeah, in that case I'll just remove all of this, leave it for another day

Change-Id: Ie4f84b72b79a1b7e80164b5c7693af398c2c569a
Reviewed-on: https://gerrit.libreoffice.org/31946
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2016-12-13 13:04:34 +00:00
84f2ff67a7 framework: fix race in ToolBarManager creation
ToolbarLayoutManager::createToolbar() may be called concurrently on
different threads, and then it can happen that both threads want to
create the same toolbar URL, see that it does not exist in line 457,
then both release the SolarMutex and create a new ToolBarManager
and the first inserts it and then the second overwrites it on line 514
without disposing the first one.

The non-disposed extra ToolBarManager is kept alive because it is
registered as a listener on the Frame.  When the Frame::close() is
called, the ToolbarLayoutManager is disposed, and that disposes all the
ToolBarManagers it knows about, but not the extra one, which is
then un-ref'd and then has a live VclPtr m_pToolBar, which asserts
because the SolarMutex is not locked since commit
e794ce1eef6730e5a46d5fb0aa6db2895ede85e7.

(This commit is thanks to rr, which recorded the
JunitTest_framework_complex execution and allowed debugging this.)

Change-Id: I8f5333e8e36ac8ea347ef545e014ffc10501aebb
2016-12-10 00:03:08 +01:00
e794ce1eef verify that we hold the SolarMutex when ref-counting VclPtr
Change-Id: If0c5a8c99f0f853c9ecad0f1a4a7299d69805b34
Reviewed-on: https://gerrit.libreoffice.org/31755
Reviewed-by: Michael Stahl <mstahl@redhat.com>
Tested-by: Noel Grandin <noel.grandin@collabora.co.uk>
2016-12-08 17:26:41 +00:00
2d48f5fc0a convert VCLEVENT constants to scoped enum
Change-Id: Ic8ccb0a9715ec05182dacddab2c015b0de6a0fba
Reviewed-on: https://gerrit.libreoffice.org/31675
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2016-12-07 07:10:39 +00:00
e6ffb539ee loplugin:vclwidgets check for assigning from VclPt<T> to T*
Inspired by a recent bug report where we were assigning the result
of VclPtr<T>::Create to a raw pointer.

As a consequence, we also need to change various methods that were
returning newly created Window subclasses via raw pointer, to
instead return those via VclPtr

Change-Id: I8118e0195a5b2b4780e646cfb0e151692e54ae2b
Reviewed-on: https://gerrit.libreoffice.org/31318
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Tested-by: Noel Grandin <noel.grandin@collabora.co.uk>
2016-11-29 06:45:42 +00:00
19c3559e87 Resolves: rhbz#1397181 toolbar layout manager not respecting drag cancel
plus restore original mbDockCanceled state after wayland-enforced
cancel otherwise next drag won't work

Change-Id: Idefed25b925b36d0bf72b77609c4fc2eb47f71b9
2016-11-22 14:13:42 +00:00
a6d324f30b Resolves: rhbz#1391418 wayland toolbars can't be docked after undocking
see gnome#768128 for extra details

under wayland, given the misery here I'm going to just disable toggling between
docked and undocked under wayland, and throw away user config on toggling
docked/undocked away from the defaults. You can still drag docked things around
to new docking position, but you can't pull them out of the dock to float.

non-wayland is unaffected

Change-Id: Iaa859f3420e6d1b103a8b93d1ad8f82dbffe75d4
Reviewed-on: https://gerrit.libreoffice.org/30752
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
2016-11-11 08:51:10 +00:00
78b4a1fb01 update vclwidget loplugin to find ref-dropping assigment
Look for places where we are accidentally assigning a returned-by-value
VclPtr<T> to a T*, which generally ends up in a use-after-free.

Change-Id: I4f361eaca88820cdb7aa3b8340212db61580fdd9
Reviewed-on: https://gerrit.libreoffice.org/30749
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2016-11-11 06:55:41 +00:00
7f509501e9 loplugin:oncevar in framework
Change-Id: I7528a4afd59a19b069bcad2106ca80f429ef12e0
Reviewed-on: https://gerrit.libreoffice.org/30525
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2016-11-07 06:38:52 +00:00
94876fe270 Let Menu dispose submenus
(I'm not sure about how good are the changes from ScopedVclPtr
to non-scoped, and disposeAndClear to clear. They aren't really
needed, because of the VclReferenceBase::mbDisposed logic. But
at least they should be safe, as long as we have disposeOnce
calls in Menu's dtor.)

See also previous commits:

4433d95b374c13a3501cdf3a6e273f68eb49873a
("MenuItemData now properly disposes the submenu")

89c23b4aaef931b5d6009efaf44ce6e6c976e8d4
("Sub menus no longer need manual disposing")

Change-Id: I9d455a94590f5eec9b097947f6984f1b3e477b52
2016-10-30 15:50:31 +02:00
7cf9028d3b loplugin:unnecessaryoverride in forms/framework
Change-Id: Ia2aabec5af5559903be09e1ef81d156a7538ab3f
2016-10-05 13:53:28 +02:00
106ea87205 Remove _TYPED suffix from tools/link.hxx macros
...which was introduced with 3ead3ad52f9bb2f9d1d6cf8dfc73a0a25e6778ed "Gradually
typed Link" to distinguish the new, typed versions from the old, untyped ones,
but is no longer necessary since 382eb1a23c390154619c385414bdbe6f6e461173
"remove untyped Link<>" removed the old versions.

Change-Id: I494025df486a16a45861fcd8192dfe0275b1103c
2016-10-05 07:56:12 +02:00
91dd2db17b loplugin:override: No more need for the "MSVC dtor override" workaround
The issue of 362d4f0cd4e50111edfae9d30c90602c37ed65a2 "Explicitly mark
overriding destructors as 'virtual'" appears to no longer be a problem with
MSVC 2013.

(The little change in the rewriting code of compilerplugins/clang/override.cxx
was necessary to prevent an endless loop when adding "override" to

  OOO_DLLPUBLIC_CHARTTOOLS    virtual ~CloseableLifeTimeManager();

in chart2/source/inc/LifeTime.hxx, getting stuck in the leading
OOO_DLLPUBLIC_CHARTTOOLS macro.  Can't remember what that
isAtEndOfImmediateMacroExpansion thing was originally necessary for, anyway.)

Change-Id: I534c634504d7216b9bb632c2775c04eaf27e927e
2016-09-13 13:19:22 +02:00
36313d93ac improve unnecessaryoverride plugin
to ignore ImplicitCastExpr when calling superclass method

Change-Id: I76a3068446acfee85aa1baeb216e57f63c7099c1
Reviewed-on: https://gerrit.libreoffice.org/27279
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
2016-07-19 05:39:46 +00:00
f2f8835bfb loplugin:singlevalfields in framework
Change-Id: I5f5efe2180905343654bdbe4d765e7fd311a2d8a
Reviewed-on: https://gerrit.libreoffice.org/26636
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
2016-06-24 12:18:42 +00:00
aa0d0536a4 tdf#97527 - vcl: reference-count Menu
some places are marked with "dodgy"- need to check those to see
what is going on, because they are leaving dangling pointers behind
in the Menu class

Change-Id: I41d5c7c0fec2f70ce9e3ffdc48cd03d26c0a869b
Reviewed-on: https://gerrit.libreoffice.org/26516
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
2016-06-23 06:28:00 +00:00
bb1e59d596 Simplify OPropertyContainerHelper::registerPropertyNoMember's _pInitialValue
Change-Id: Ibfb27b3eded45e2646dada37ce3663f427985ae9
2016-06-17 19:40:58 +02:00
57f84e5b1f Convert TOOLBOX_MENUTYPE_ to scoped enum
Change-Id: I8eb25fc274b45b8add04dfc03e4b52f130ad04de
Reviewed-on: https://gerrit.libreoffice.org/24827
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
2016-05-10 09:57:14 +00:00
ed467869d8 loplugin:salbool: Automatic rewrite of sal_False/True
Change-Id: Idf27ee5370f1fa24adf22908d9e801c7d40db935
2016-04-20 17:25:42 +02:00
789055bc2a clang-tidy performance-unnecessary-copy-initialization
probably not much performance benefit, but it sure is good at
identifying leftover intermediate variables from previous
refactorings.

Change-Id: I3ce16fe496ac2733c1cb0a35f74c0fc9193cc657
Reviewed-on: https://gerrit.libreoffice.org/24026
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
Tested-by: Noel Grandin <noelgrandin@gmail.com>
2016-04-18 07:37:31 +00:00
eec11a3064 Race between Frame::dispose and timer-triggered LayoutManager::AsyncLayouHdl
Change-Id: I8e9ca61c2a8334697b7a0adef7a2fc20f503f299
2016-04-14 11:19:20 +02:00
d84ef731d8 tdf#94306 replace boost::noncopyable ...
... in modules editeng to oox.
Replace with C++11 delete copy-constructur and
copy-assignment.
Remove boost/noncopyable.hpp includes and
one unused boost/checked_delete.hpp include in linguistic.

Change-Id: I5a38d8e5ac1b4286bdeb3858d56490a53d13fe80
Reviewed-on: https://gerrit.libreoffice.org/23928
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
2016-04-11 07:22:50 +00:00
95b720f6d7 revert to fix tdf#98783 missing menubar
Change-Id: Ia322149a7ed461f528af856d9907fe4620f9e97f
2016-04-06 16:18:41 +01:00
1fb314832e notebookbar: Instantiate the notebookbar via sfx2 infrastructure.
Change-Id: Iaed4596246245560e646d9086e717d5fb516897e
2016-03-30 11:01:30 +02:00
86f504ee01 Related: tdf#98637 make this a tractable problem
This is just too hard, it would all be much easier if the ActionGroup existed
right from the start of the entire process. So smuggle in to the ctor the
toplevel frame that the menubar will be inserted into so we can use its
ActionGroup from the start.

That would suggest that we could then just keep the hierarchy in sync as it is
created rather than finding opportune moments to update /generate it.

Change-Id: I550f94a994210423ab9cea1986e643056cb5bd29
Reviewed-on: https://gerrit.libreoffice.org/23287
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
2016-03-16 09:27:36 +00:00
7da15debe3 loplugin:constantparam in framework
Change-Id: I41c83b6214e3af7b3a40c8e00df5f100e39ebad7
2016-03-10 10:09:59 +02:00
0c622c9885 extra menubar displayed after exiting embedded object edit
when using native gtk3 menubars.

The issue is that MenuBarManager does not own its MenuBar.
And in this embedded menubar situation a new menubar is newed and passed to
m_pInplaceMenuBar but nothing destroys it.

Now with native gtk3 menubars this becomes obvious as the native menubar stays
behind, while in the non-native case the old menubar is replaced by
the new one so while it still leaks the menubar you don't see it.

Change-Id: Id732cb66664a71efc471d7bad35f4de890e1017e
2016-03-02 16:50:07 +00:00
fd3cb8d822 tdf#39440: reduce scope of local variables
Change-Id: I6ba411d2e07240821518281996d543f71acf3259
Reviewed-on: https://gerrit.libreoffice.org/22378
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
2016-02-16 12:47:55 +00:00
f600e14561 framework: replace boost::bind with C++11 lambda or for loop
Change-Id: I3bee504b5a3dce7d89af77c8fcf2f9e24d5119ca
Reviewed-on: https://gerrit.libreoffice.org/22105
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Michael Stahl <mstahl@redhat.com>
2016-02-04 14:25:11 +00:00
64d624b651 Fix typos
Change-Id: I9a5940027423ff0791fa7da0b79b617412ce6b86
Reviewed-on: https://gerrit.libreoffice.org/21209
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
2016-01-10 14:17:20 +00:00
bea8a7ad63 cppcheck: noExplicitConstructor
Change-Id: Ib43e53d5b6c9c130adb765ac9b769f58060ac640
2015-12-29 19:46:23 +00:00
7dd77a1271 Remove unused ToolPanel (aka TaskPane)
Superseded by the Sidebar

Change-Id: I54970d71cd9d42de4f47b223e50dd9474b40632a
Reviewed-on: https://gerrit.libreoffice.org/20724
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
2015-12-17 08:27:55 +00:00
dea1b890cf Fix NotebookBar not showing up when directly opening a document
Change-Id: I6bb154102d5e58e7c7e1f1b0d68629555a6d1697
2015-12-16 10:19:25 +01:00
68d75af9c6 vcl: Initial NotebookBar implementation.
Re-introduced, this is still useful code to have :-)

Change-Id: I91535c13d68261f7195989ec78bd305cf572c87c
2015-12-16 10:19:25 +01:00
a508f639a0 mark UNO structs as SAL_WARN_UNUSED, where possible
Change-Id: Ie3de518f60c9f1313c68df54dbdc1fb2804f1f0d
2015-11-26 13:26:25 +02:00
009face61b Revert "vcl: Initial NotebookBar implementation."
Will use a different approach for NotebookBar.
Also this should not be in 5.1.

This reverts commit 8c1014021dbe9da2e18233d215b970f5359db67b.

Change-Id: Ic699723818a890bf4c3be3a2c045527148bd118b
Reviewed-on: https://gerrit.libreoffice.org/20075
Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
Tested-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
2015-11-20 11:14:24 +00:00
53f66fa679 Fix NotebookBar not showing up when directly opening a document
Change-Id: I6bb154102d5e58e7c7e1f1b0d68629555a6d1697
2015-11-11 08:54:26 +01:00
06c5c63020 loplugin:nullptr (automatic rewrite)
Change-Id: Ie178c474921c1695927a9b01a9972baf09fbb73d
2015-11-10 10:31:27 +01:00
6c80a8fe89 new loplugin: oncevar
Change-Id: If57390510dde4d166be3141b9f658a7453755d3f
Reviewed-on: https://gerrit.libreoffice.org/19815
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
2015-11-09 08:34:40 +00:00
c5376ef685 loplugin:stringconstant: elide explicit ctor usage (manually due to macros)
Change-Id: I4633229b94be1b15dfa14eafe8d7176a1fd253c9
2015-11-06 12:32:17 +01:00
7408498de3 loplugin:stringconstant
Change-Id: I865efc1884b82d430fe7df2e432d43f5425a83d4
2015-11-02 14:50:33 +02:00
5797d29e9e use uno::Reference::set method instead of assignment
Change-Id: Ic979f8a7734d0ef7a915d47a875cdcd460c0cc58
2015-11-02 12:23:16 +02:00
0e6544903b no need to be so verbose in constructing uno::Reference
Change-Id: I187a26e200e9ecaff2adaf53a2ba3f6e87346030
Reviewed-on: https://gerrit.libreoffice.org/19724
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
2015-11-01 15:26:10 +00:00
0e8a40e8b8 calling IsSet() before Call() on Link<> is unnecessary
the Call() already does a check

Found with:
git grep -A 1 -w 'IsSet()'
    | grep -B 1 '.Call('
    | grep ':'
    | cut -d ':' -f 1

Change-Id: Ia7248f5d62640b75f705e539c3d1183e39c0d847
2015-10-15 12:29:01 +02:00
8c1014021d vcl: Initial NotebookBar implementation.
See https://wiki.documentfoundation.org/Development/NotebookBar

Change-Id: I91535c13d68261f7195989ec78bd305cf572c87c
2015-10-15 10:56:32 +02:00
d191d1f9b6 com::sun::star->css in framework
Change-Id: If5a77db83fcbef5ed436f2043ddeb7c515a840dc
Reviewed-on: https://gerrit.libreoffice.org/19356
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
2015-10-14 06:37:16 +00:00
b36963c0a6 Replace "SAL_OVERRIDE" with "override" in LIBO_INTERNAL_ONLY code
Change-Id: I2ea407acd763ef2d7dae2d3b8f32525523ac8274
2015-10-12 17:52:29 +02:00
6fbbb8504a loplugin:mergeclasses
Change-Id: I45ccf880900f46a121c73152615ec3534a47d750
2015-10-07 08:27:26 +02:00
eab0904f0e Fix typos
Change-Id: I81f6f356c1a6873fcc9a3bde487127b673fa9a61
Reviewed-on: https://gerrit.libreoffice.org/18952
Reviewed-by: Oliver Specht <oliver.specht@cib.de>
Tested-by: Oliver Specht <oliver.specht@cib.de>
2015-09-30 12:39:01 +00:00