Commit Graph

528 Commits

Author SHA1 Message Date
Noel Grandin
d2d8592160 loplugin:oncevar in vcl
Change-Id: I37a6dacda12e1c2910737d74aa344c7e2e195aeb
Reviewed-on: https://gerrit.libreoffice.org/39328
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-06-28 08:55:28 +02:00
Maxim Monastirsky
d5d020327b Remove sfx2 include from vcl
(And we don't have menus with item ids from sfx2 anymore.)

Change-Id: Ic4d0f3c6a2d15cfda6498617a45ba2e25b5dd7f1
2017-05-18 00:28:49 +03:00
Noel Grandin
dd6d7992d6 loplugin:constantparam
Change-Id: I67d74072c776c32a1f91df94c621efe180baf5dc
Reviewed-on: https://gerrit.libreoffice.org/37481
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-05-12 12:30:53 +02:00
Caolán McNamara
946049692e Resolves: tdf#107693 move CreateAutoMnemonics from Execute to Activate
Change-Id: Id65dfcc40dd20c391e12108abc6a6531e4c96523
2017-05-08 14:16:21 +01:00
Jochen Nitschke
b3eb843766 cleanup tools/debug.hxx includes
with command
> git grep -l tools/debug.hxx |
  xargs grep -L DBG_ |
  xargs sed -i '/#include *\(<\|\"\)tools\/debug.hxx.*/d'

don't change files in includes/ and */pch

Change-Id: Ie429d6a7dca5dfa1073e0f5ba037f7c84bdbec08
Reviewed-on: https://gerrit.libreoffice.org/37349
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-05-08 08:33:01 +02:00
Noel Grandin
185ed3ddb8 teach loplugin:constantparam about simple constructor calls
Change-Id: I7d2a28ab5951fbdb5a427c84e9ac4c1e32ecf9f9
Reviewed-on: https://gerrit.libreoffice.org/37280
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-05-08 08:29:03 +02:00
Maxim Monastirsky
fe0451259d tdf#103158 ctrl+shift should work on key up
Under gtk/gtk3 we send CommandEventId::ModKeyChange on
key down, to support the auto-accelerator feature. But
at least the handler in SwEditWin::Command must get it
on key up, in order to not interfere with other
ctrl+shift+X shortcuts, which work on key down.

To achieve that, we need:

- On key up pass the key that was just released, instead
  of the current state of nothing being pressed.

- Have a flag of whether it's a key down or up event, so
  it can be checked by the application code.

Change-Id: If188d6ccdc3b214a2c3ed20aad291d74d46b358f
Reviewed-on: https://gerrit.libreoffice.org/37275
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Maxim Monastirsky <momonasmon@gmail.com>
2017-05-05 11:27:33 +02:00
Noel Grandin
8f254a45d7 loplugin:checkunusedparams in vcl
Change-Id: I26661684e634aa15a18f78442de15c9db832f319
Reviewed-on: https://gerrit.libreoffice.org/36886
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-04-25 07:00:51 +02:00
Noel Grandin
1c5cae479b loplugin:unusedmethods
Change-Id: Ib7a9b1b0802ca751da258065e89b412b090bb672
Reviewed-on: https://gerrit.libreoffice.org/36718
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-04-20 10:07:10 +02:00
Caolán McNamara
2b83e73fd7 remove freshly unused menu support from src files
Change-Id: I038711a0c4d440d452d5b2ae1bfcba5c9305815b
Reviewed-on: https://gerrit.libreoffice.org/36646
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
2017-04-19 13:42:07 +02:00
Noel Grandin
be8b9b4d29 loplugin:redundantcast find cstyle arithmetic casts
Change-Id: If7c259f0d12a41182f476ddb558f7cb5f76f9577
Reviewed-on: https://gerrit.libreoffice.org/36253
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-04-07 12:16:13 +00:00
Noel Grandin
3d6c84f2d9 loplugin:constantparam
Change-Id: I1996319e5b664dff95f7a9b2346aea6092d333ec
Reviewed-on: https://gerrit.libreoffice.org/36070
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-04-05 06:40:10 +00:00
Aron Budea
2aa43937ec tdf#104686: do not crash if Menu has been somehow disposed
The rare crashes in MenuFloatingWindow::ImplGetStartY() and
MenuFloatingWindow::ImplScroll(bool) likely happen because
of a disposed Menu.

Let's guard against invalid accesses.

Change-Id: Ie31240abbc48c06edd40d0a95f319725cdb3db16
Reviewed-on: https://gerrit.libreoffice.org/36026
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
2017-04-04 15:58:29 +00:00
Miklos Vajna
a5a571307f tdf#82580 tools: rename Rectangle to tools::Rectangle
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-31 06:27:11 +00:00
Maxim Monastirsky
3daa6c66eb Don't use SetDisplayable when enabling Unity mode
because now it tracks the global menu too, but all we need
here is to hide the in-window menubar widget.

Change-Id: Ic3c8c20b88d37430e80b682333ca384bccc3f697
2017-03-09 01:58:23 +02:00
Maxim Monastirsky
fe7c8e4ec1 Closing popup menu should close the parent toolbox
... if that toolbox is in popup mode (e.g. shapes toolbar
dropdowns, or the toolbar overflow floater). Same behavior
was introduced for non menu based dropdowns in
81d4fbc0da ("tdf#42029 Use a
floating toolbar to show clipped items"), and is similar
to what we had already in ToolBox::Select, i.e. when the
user made a selection, the floating windows should close.

This must be done before executing the menu selection
handler, because such handler might execute stuff
synchronously (e.g. MenuBarManager::Select), and if it
will open a modal dialog, the floating toolbox will stay
visible after the dialog shows.

Change-Id: Ie93e71fa4dea80ba444aebccacf6adb926a39224
2017-02-24 01:33:54 +02:00
Stephan Bergmann
18e07fd7d9 loplugin:subtlezeroinit: vcl
Change-Id: I041390c7cea1e246f07e799ee2430c16e86723d8
2017-02-21 07:34:56 +01:00
Maxim Monastirsky
b6994cb75f Use module name when getting labels
Change-Id: I1d5196e1ca888dfb11d5bd6ef4676937dce49fdc
2017-02-21 01:40:19 +02:00
Rohan Kumar
33c51e8002 tdf#95844 Refactor CommandInfoProvider
Instead of a singleton, CommandInfoProvider should just be a set of static methods.

Change-Id: I16d4406e361a72f013d78f18d6bd0ae20c0cc5e9
2017-02-21 01:39:01 +02:00
Maxim Monastirsky
5280121732 Convert RID_MENU_REPORT to xml
The change in PopupMenu::ImplExecute is needed because
MenuBarManager dispatches commands synchronously, and a
command can try to dispose the parent window of the
MenuFloatingWindow (e.g. right clicking inside the report
header, and choosing "Delete Header"), which will lead to
Application::Abort in a debug build. So we must get rid of
the MenuFloatingWindow before handling menu selection.

Change-Id: I1657cd16a005207abc31f4b65595ab78ed235e37
Reviewed-on: https://gerrit.libreoffice.org/34407
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Maxim Monastirsky <momonasmon@gmail.com>
2017-02-18 20:22:08 +00:00
Caolán McNamara
f67dc04cfd Resolves: tdf#101972 skip invalidating labels on alt if autoaccel is disabled
so no Invalidate will be called if auto accelerators are not enabled
so there should be no blinking under windows

Change-Id: Iccc5dad7af41f39ac02d3be93e935f2d926a82a6
2017-02-09 10:28:44 +00:00
Noel Grandin
872cf486c5 Revert "verify SolarMutex when ref-counting VclPtr" series
This reverts the following commits:

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

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

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

    commit e794ce1eef
    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
Noel Grandin
722f4e1d86 tdf#104573 - Assertion failed: SolarMutex not locked
Change-Id: I91d95e73a7e0831f6667f440dd43567ac55b0529
2016-12-13 11:40:58 +02:00
Noel Grandin
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
Noel Grandin
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
Caolán McNamara
6f71fa11c0 vcl makes no use of menu Get/Set DefaultItem
this is exposed through uno however, so move it into VCLXMenu to continue to
support it doing nothing of great value there

Change-Id: I6888e61cbec85faa2d1fcca8731ab42023e594c6
2016-11-24 14:56:13 +00:00
Stephan Bergmann
884e929641 loplugin:vclwidgets
Change-Id: Ia828755baa2c244cb23dc92202c1f9ed2448fe31
2016-11-16 19:18:15 +01:00
Stephan Bergmann
3f7fc4e5d2 Postpone menu destruction
...to avoid use-after-free, as e.g. happens on macOS with -fsanitize=address in
CppunitTest_sw_mailmerge:

> ==29010==ERROR: AddressSanitizer: heap-use-after-free on address 0x60800088faf8 at pc 0x000118ebc153 bp 0x7fff52f81a40 sp 0x7fff52f81a38
> READ of size 8 at 0x60800088faf8 thread T0
> WARNING: failed decoding unknown ioctl 0x20007454
> WARNING: failed decoding unknown ioctl 0x20007452
>     #0 0x118ebc152 in AquaSalMenu::SetSubMenu(SalMenuItem*, SalMenu*, unsigned int) salmenu.cxx:597
>     #1 0x1177bbefc in Menu::SetPopupMenu(unsigned short, PopupMenu*) menu.cxx:803
>     #2 0x138dccb5a in framework::MenuBarManager::RemoveListener() menubarmanager.cxx:552
>     #3 0x138dcb452 in framework::MenuBarManager::Destroy() menubarmanager.cxx:237
>     #4 0x138dcd6d7 in framework::MenuBarManager::dispose() menubarmanager.cxx:267
>     #5 0x138dccfa2 in framework::MenuBarManager::RemoveListener() menubarmanager.cxx:587
>     #6 0x138dcb452 in framework::MenuBarManager::Destroy() menubarmanager.cxx:237
>     #7 0x138dcd6d7 in framework::MenuBarManager::dispose() menubarmanager.cxx:267
>     #8 0x138e06acf in framework::MenuBarWrapper::dispose() menubarwrapper.cxx:103
>     #9 0x1389c0f67 in framework::LayoutManager::impl_clearUpMenuBar() layoutmanager.cxx:226
>     #10 0x1389c497b in framework::LayoutManager::implts_destroyElements() layoutmanager.cxx:447
>     #11 0x1389c3777 in framework::LayoutManager::implts_reset(bool) layoutmanager.cxx:413
>     #12 0x1389edf4b in framework::LayoutManager::frameAction(com::sun::frame::FrameActionEvent const&) layoutmanager.cxx:2811
>     #13 0x138b9e1a8 in (anonymous namespace)::Frame::implts_sendFrameActionEvent(com::sun::frame::FrameAction const&) frame.cxx:3110
>     #14 0x138b8219b in (anonymous namespace)::Frame::setComponent(com::sun::uno::Reference<com::sun::awt::XWindow> const&, com::sun::uno::Reference<com::sun::frame::XController> const&) frame.cxx:1557
>     #15 0x138b88545 in (anonymous namespace)::Frame::close(unsigned char) frame.cxx:1801
>     #16 0x12078429a in SfxFrame::DoClose() frame.cxx:127
>     #17 0x120812990 in SfxViewFrame::Notify(SfxBroadcaster&, SfxHint const&) viewfrm.cxx:1234
>     #18 0x11ab542d5 in SfxBroadcaster::Broadcast(SfxHint const&) SfxBroadcaster.cxx:50
>     #19 0x1203a0682 in SfxModelListener_Impl::notifyClosing(com::sun::lang::EventObject const&) objxtor.cxx:171
>     #20 0x1204453d2 in SfxBaseModel::close(unsigned char) sfxbasemodel.cxx:1372
>     #21 0x1245130d5 in SwXTextDocument::close(unsigned char) unotxdoc.cxx:621
>     #22 0x1247af99b in CloseModelAndDocSh(com::sun::uno::Reference<com::sun::frame::XModel>&, tools::SvRef<SfxObjectShell>&) unomailmerge.cxx:115
>     #23 0x1247af4bf in DeleteTmpFile_Impl(com::sun::uno::Reference<com::sun::frame::XModel>&, tools::SvRef<SfxObjectShell>&, rtl::OUString const&) unomailmerge.cxx:342
>     #24 0x1247b6ad6 in SwXMailMerge::execute(com::sun::uno::Sequence<com::sun:🫘:NamedValue> const&) unomailmerge.cxx:814
>     #25 0x1247b9c62 in non-virtual thunk to SwXMailMerge::execute(com::sun::uno::Sequence<com::sun:🫘:NamedValue> const&) unomailmerge.cxx:434
>     #26 0x11eeab4fd in MMTest::executeMailMerge() mailmerge.cxx:179
>     #27 0x11eea2470 in testMultiPageAnchoredDraws::verify() mailmerge.cxx:336
>     #28 0x11ef3be50 in MMTest::executeMailMergeTest(char const*, char const*, char const*, bool, int, char const*) mailmerge.cxx:87
>     #29 0x11ef38af3 in testMultiPageAnchoredDraws::MailMerge() mailmerge.cxx:334
>     #30 0x11ef557b9 in CppUnit::TestCaller<testMultiPageAnchoredDraws>::runTest() TestCaller.h:166
>     #31 0x10cfff749 in CppUnit::TestCaseMethodFunctor::operator()() const TestCase.cpp:32
>     #32 0x110736b67 in (anonymous namespace)::Protector::protect(CppUnit::Functor const&, CppUnit::ProtectorContext const&) vclbootstrapprotector.cxx:36
>     #33 0x10cfc9c20 in CppUnit::ProtectorChain::ProtectFunctor::operator()() const ProtectorChain.cpp:20
>     #34 0x110498fa7 in (anonymous namespace)::Prot::protect(CppUnit::Functor const&, CppUnit::ProtectorContext const&) unobootstrapprotector.cxx:89
>     #35 0x10cfc9c20 in CppUnit::ProtectorChain::ProtectFunctor::operator()() const ProtectorChain.cpp:20
>     #36 0x10f776880 in (anonymous namespace)::Prot::protect(CppUnit::Functor const&, CppUnit::ProtectorContext const&) unoexceptionprotector.cxx:65
>     #37 0x10cfc9c20 in CppUnit::ProtectorChain::ProtectFunctor::operator()() const ProtectorChain.cpp:20
>     #38 0x10cf64042 in CppUnit::DefaultProtector::protect(CppUnit::Functor const&, CppUnit::ProtectorContext const&) DefaultProtector.cpp:15
>     #39 0x10cfc9c20 in CppUnit::ProtectorChain::ProtectFunctor::operator()() const ProtectorChain.cpp:20
>     #40 0x10cfc7200 in CppUnit::ProtectorChain::protect(CppUnit::Functor const&, CppUnit::ProtectorContext const&) ProtectorChain.cpp:77
>     #41 0x10d06f15a in CppUnit::TestResult::protect(CppUnit::Functor const&, CppUnit::Test*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) TestResult.cpp:181
>     #42 0x10cffd8cd in CppUnit::TestCase::run(CppUnit::TestResult*) TestCase.cpp:91
>     #43 0x10d00097a in CppUnit::TestComposite::doRunChildTests(CppUnit::TestResult*) TestComposite.cpp:64
>     #44 0x10d00045e in CppUnit::TestComposite::run(CppUnit::TestResult*) TestComposite.cpp:23
>     #45 0x10d00097a in CppUnit::TestComposite::doRunChildTests(CppUnit::TestResult*) TestComposite.cpp:64
>     #46 0x10d00045e in CppUnit::TestComposite::run(CppUnit::TestResult*) TestComposite.cpp:23
>     #47 0x10d0990ac in CppUnit::TestRunner::WrappingSuite::run(CppUnit::TestResult*) TestRunner.cpp:47
>     #48 0x10d06da55 in CppUnit::TestResult::runTest(CppUnit::Test*) TestResult.cpp:148
>     #49 0x10d099ebd in CppUnit::TestRunner::run(CppUnit::TestResult&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) TestRunner.cpp:96
>     #50 0x10cc6f509 in (anonymous namespace)::ProtectedFixtureFunctor::run() const cppunittester.cxx:305
>     #51 0x10cc6a0ac in sal_main() cppunittester.cxx:455
>     #52 0x10cc687a6 in main cppunittester.cxx:362
>     #53 0x7fffc9f36254 in start (libdyld.dylib+0x5254)
>
> 0x60800088faf8 is located 88 bytes inside of 96-byte region [0x60800088faa0,0x60800088fb00)
> freed by thread T0 here:
>     #0 0x10d327b6b in wrap__ZdlPv asan_new_delete.cc:179
>     #1 0x118eb3011 in AquaSalMenu::~AquaSalMenu() salmenu.cxx:279
>     #2 0x118eb10de in AquaSalInstance::DestroyMenu(SalMenu*) salmenu.cxx:238
>     #3 0x1177acd1d in Menu::ImplSetSalMenu(SalMenu*) menu.cxx:2342
>     #4 0x1177ab046 in Menu::dispose() menu.cxx:183
>     #5 0x1177d86f5 in PopupMenu::dispose() menu.cxx:2764
>     #6 0x117f99ee2 in VclReferenceBase::disposeOnce() vclreferencebase.cxx:42
>     #7 0x1177bf7d8 in VclPtr<Menu>::disposeAndClear() vclptr.hxx:208
>     #8 0x1177bbbd5 in Menu::SetPopupMenu(unsigned short, PopupMenu*) menu.cxx:788
>     #9 0x138dccb5a in framework::MenuBarManager::RemoveListener() menubarmanager.cxx:552
>     #10 0x138dcb452 in framework::MenuBarManager::Destroy() menubarmanager.cxx:237
>     #11 0x138dcd6d7 in framework::MenuBarManager::dispose() menubarmanager.cxx:267
>     #12 0x138dccfa2 in framework::MenuBarManager::RemoveListener() menubarmanager.cxx:587
>     #13 0x138dcb452 in framework::MenuBarManager::Destroy() menubarmanager.cxx:237
>     #14 0x138dcd6d7 in framework::MenuBarManager::dispose() menubarmanager.cxx:267
>     #15 0x138e06acf in framework::MenuBarWrapper::dispose() menubarwrapper.cxx:103
>     #16 0x1389c0f67 in framework::LayoutManager::impl_clearUpMenuBar() layoutmanager.cxx:226
>     #17 0x1389c497b in framework::LayoutManager::implts_destroyElements() layoutmanager.cxx:447
>     #18 0x1389c3777 in framework::LayoutManager::implts_reset(bool) layoutmanager.cxx:413
>     #19 0x1389edf4b in framework::LayoutManager::frameAction(com::sun::frame::FrameActionEvent const&) layoutmanager.cxx:2811
>     #20 0x138b9e1a8 in (anonymous namespace)::Frame::implts_sendFrameActionEvent(com::sun::frame::FrameAction const&) frame.cxx:3110
>     #21 0x138b8219b in (anonymous namespace)::Frame::setComponent(com::sun::uno::Reference<com::sun::awt::XWindow> const&, com::sun::uno::Reference<com::sun::frame::XController> const&) frame.cxx:1557
>     #22 0x138b88545 in (anonymous namespace)::Frame::close(unsigned char) frame.cxx:1801
>     #23 0x12078429a in SfxFrame::DoClose() frame.cxx:127
>     #24 0x120812990 in SfxViewFrame::Notify(SfxBroadcaster&, SfxHint const&) viewfrm.cxx:1234
>     #25 0x11ab542d5 in SfxBroadcaster::Broadcast(SfxHint const&) SfxBroadcaster.cxx:50
>     #26 0x1203a0682 in SfxModelListener_Impl::notifyClosing(com::sun::lang::EventObject const&) objxtor.cxx:171
>     #27 0x1204453d2 in SfxBaseModel::close(unsigned char) sfxbasemodel.cxx:1372
>     #28 0x1245130d5 in SwXTextDocument::close(unsigned char) unotxdoc.cxx:621
>     #29 0x1247af99b in CloseModelAndDocSh(com::sun::uno::Reference<com::sun::frame::XModel>&, tools::SvRef<SfxObjectShell>&) unomailmerge.cxx:115
>
> previously allocated by thread T0 here:
>     #0 0x10d32752b in wrap__Znwm asan_new_delete.cc:106
>     #1 0x118eafa18 in AquaSalInstance::CreateMenu(bool, Menu*) salmenu.cxx:230
>     #2 0x1177d75e0 in PopupMenu::PopupMenu() menu.cxx:2711
>     #3 0x1177d7664 in PopupMenu::PopupMenu() menu.cxx:2710
>     #4 0x129136557 in VclPtr<PopupMenu> VclPtr<PopupMenu>::Create<>() vclptr.hxx:131
>     #5 0x1291362de in VCLXMenu::ImplCreateMenu(bool) vclxmenu.cxx:73
>     #6 0x1291463ca in VCLXPopupMenu::VCLXPopupMenu() vclxmenu.cxx:901
>     #7 0x129146414 in VCLXPopupMenu::VCLXPopupMenu() vclxmenu.cxx:900
>     #8 0x138dc5e83 in framework::MenuBarManager::FillMenuManager(Menu*, com::sun::uno::Reference<com::sun::frame::XFrame> const&, com::sun::uno::Reference<com::sun::frame::XDispatchProvider> const&, rtl::OUString const&, bool) menubarmanager.cxx:1354
>     #9 0x138dc2316 in framework::MenuBarManager::MenuBarManager(com::sun::uno::Reference<com::sun::uno::XComponentContext> const&, com::sun::uno::Reference<com::sun::frame::XFrame> const&, com::sun::uno::Reference<com::sun::util::XURLTransformer> const&, com::sun::uno::Reference<com::sun::frame::XDispatchProvider> const&, rtl::OUString const&, Menu*, bool, bool) menubarmanager.cxx:140
>     #10 0x138dc72bd in framework::MenuBarManager::MenuBarManager(com::sun::uno::Reference<com::sun::uno::XComponentContext> const&, com::sun::uno::Reference<com::sun::frame::XFrame> const&, com::sun::uno::Reference<com::sun::util::XURLTransformer> const&, com::sun::uno::Reference<com::sun::frame::XDispatchProvider> const&, rtl::OUString const&, Menu*, bool, bool) menubarmanager.cxx:138
>     #11 0x138dc57bc in framework::MenuBarManager::FillMenuManager(Menu*, com::sun::uno::Reference<com::sun::frame::XFrame> const&, com::sun::uno::Reference<com::sun::frame::XDispatchProvider> const&, rtl::OUString const&, bool) menubarmanager.cxx:1304
>     #12 0x138dc2316 in framework::MenuBarManager::MenuBarManager(com::sun::uno::Reference<com::sun::uno::XComponentContext> const&, com::sun::uno::Reference<com::sun::frame::XFrame> const&, com::sun::uno::Reference<com::sun::util::XURLTransformer> const&, com::sun::uno::Reference<com::sun::frame::XDispatchProvider> const&, rtl::OUString const&, Menu*, bool, bool) menubarmanager.cxx:140
>     #13 0x138dc72bd in framework::MenuBarManager::MenuBarManager(com::sun::uno::Reference<com::sun::uno::XComponentContext> const&, com::sun::uno::Reference<com::sun::frame::XFrame> const&, com::sun::uno::Reference<com::sun::util::XURLTransformer> const&, com::sun::uno::Reference<com::sun::frame::XDispatchProvider> const&, rtl::OUString const&, Menu*, bool, bool) menubarmanager.cxx:138
>     #14 0x138e07ba5 in framework::MenuBarWrapper::initialize(com::sun::uno::Sequence<com::sun::uno::Any> const&) menubarwrapper.cxx:181
>     #15 0x138f32e6d in framework::MenuBarFactory::CreateUIElement(rtl::OUString const&, com::sun::uno::Sequence<com::sun:🫘:PropertyValue> const&, char const*, rtl::OUString const&, com::sun::uno::Reference<com::sun::ui::XUIElement> const&, com::sun::uno::Reference<com::sun::uno::XComponentContext> const&) menubarfactory.cxx:154
>     #16 0x138f31848 in framework::MenuBarFactory::createUIElement(rtl::OUString const&, com::sun::uno::Sequence<com::sun:🫘:PropertyValue> const&) menubarfactory.cxx:63
>     #17 0x138f3313a in non-virtual thunk to framework::MenuBarFactory::createUIElement(rtl::OUString const&, com::sun::uno::Sequence<com::sun:🫘:PropertyValue> const&) menubarfactory.cxx:56
>     #18 0x138f56f6e in (anonymous namespace)::UIElementFactoryManager::createUIElement(rtl::OUString const&, com::sun::uno::Sequence<com::sun:🫘:PropertyValue> const&) uielementfactorymanager.cxx:450
>     #19 0x138f5a94a in non-virtual thunk to (anonymous namespace)::UIElementFactoryManager::createUIElement(rtl::OUString const&, com::sun::uno::Sequence<com::sun:🫘:PropertyValue> const&) uielementfactorymanager.cxx:408
>     #20 0x1389ca5da in framework::LayoutManager::implts_createElement(rtl::OUString const&) layoutmanager.cxx:731
>     #21 0x1389d6fb4 in framework::LayoutManager::createElement(rtl::OUString const&) layoutmanager.cxx:1482
>     #22 0x11fbd36f1 in SfxDispatcher::SetMenu_Impl() dispatch.cxx:1216
>     #23 0x11fbc36dc in SfxDispatcher::Update_Impl(bool) dispatch.cxx:1290
>     #24 0x11fb7556d in SfxBindings::NextJob_Impl(Timer*) bindings.cxx:1459
>     #25 0x11fb8ad4c in SfxBindings::NextJob(Timer*) bindings.cxx:1441
>     #26 0x11fb61177 in SfxBindings::LinkStubNextJob(void*, Timer*) bindings.cxx:1439
>     #27 0x11898aea1 in Link<Timer*, void>::Call(Timer*) const link.hxx:84
>     #28 0x11898add6 in Timer::Invoke() timer.cxx:88
>     #29 0x1188dae6d in ImplSchedulerData::Invoke() scheduler.cxx:47

Change-Id: I16d5b11710ee46dbaa77afd94a09ba5f07a311b0
2016-11-07 08:59:16 +01:00
Tomaž Vajngerl
b1426b5b50 tdf#95014 initial support for 32 px icons in toolbar
This adds support for 32 pixel icons - mainly to get them into
the toolbar.

Most changes made are to change the behavior of having only small
and large icons as a boolean choice, but not every code path was
converted to non-boolean choice yet.

Breeze icon theme has the 32px variants so it can be used already.

Change-Id: Iadf832a87826c16b3a83522104dd6c35d61a0f87
Reviewed-on: https://gerrit.libreoffice.org/30398
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
Tested-by: Tomaž Vajngerl <quikee@gmail.com>
2016-10-30 18:00:05 +00:00
Maxim Monastirsky
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:

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

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

Change-Id: I9d455a94590f5eec9b097947f6984f1b3e477b52
2016-10-30 15:50:31 +02:00
Tomaž Vajngerl
484390a096 HiDPI: remove unneeded image scaling when HiDPI is enabled
We don't need to scale images for HiDPI mode anymore - this is now
done automatically when the image is loaded.

Change-Id: Ie285cf4d672f4c098a468d3f7560ee2700365b92
Reviewed-on: https://gerrit.libreoffice.org/30340
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
Tested-by: Tomaž Vajngerl <quikee@gmail.com>
2016-10-29 18:14:23 +00:00
Maxim Monastirsky
89c23b4aae Sub menus no longer need manual disposing
after:

commit ee79a2dd7e
Author: Caolán McNamara <caolanm@redhat.com>
Date:   Fri Jul 29 14:33:22 2016 +0100

    Resolves: tdf#101169 crash using column menu in base

Change-Id: I7c6e54dd5574c61cffd5884d1cf1b63075073001
Reviewed-on: https://gerrit.libreoffice.org/30343
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Maxim Monastirsky <momonasmon@gmail.com>
2016-10-27 22:11:07 +00:00
Maxim Monastirsky
0eebe7387f Don't crash on closing gtk3 popup menu without enabled items
This thing:

GtkSalMenu::ShowNativePopupMenu
Menu::Deactivate
MenuItemList::Remove
GtkInstance::DestroyMenuItem

deletes the SalMenuItem, leaving GtkSalMenu with invalid
pointers.

Change-Id: I22ff10fc62421a800d808a56625ce7144c8e04b4
2016-10-18 17:27:57 +03:00
Stephan Bergmann
cb2b7a951b loplugin:staticmethods: vcl
Change-Id: I9a563100400375cd185729282b3e4f1ff3a44151
2016-10-07 12:07:43 +02:00
Caolán McNamara
3870de04ea drop now unused BitmapItem rsc fields
Change-Id: I02ed667a3573b3374fce069be0d32dbd91292e49
2016-10-06 09:06:20 +01:00
Stephan Bergmann
106ea87205 Remove _TYPED suffix from tools/link.hxx macros
...which was introduced with 3ead3ad52f "Gradually
typed Link" to distinguish the new, typed versions from the old, untyped ones,
but is no longer necessary since 382eb1a23c
"remove untyped Link<>" removed the old versions.

Change-Id: I494025df486a16a45861fcd8192dfe0275b1103c
2016-10-05 07:56:12 +02:00
Andrea Gelmini
14d096e2bf Fix typos
Change-Id: Ie75beb4e282a4d1b784a5847262e39cf9c851527
Reviewed-on: https://gerrit.libreoffice.org/29440
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Tested-by: Noel Grandin <noel.grandin@collabora.co.uk>
2016-10-03 06:15:59 +00:00
Caolán McNamara
1aaba02faf this should always be empty now
Change-Id: I5849ce78407675150ca1fd96388a4569bcd14f4a
2016-09-27 16:09:57 +01:00
Caolán McNamara
4da7971812 Resolves: tdf#102177 focus not restored from context menus
the problem being that the attempt to restore the focus in the document in the
floatingwindow tear down is blocked because the menus have set that window as
modal so the focus isn't set.

The attempt to set the focus in the floatingwindow teardown causes the
SavedFocus in the menufloatingwindow to be dropped, so the extra layer of code
to restore focus after modality is removed doesn't do anything

this is fallout from...

commit dd46727b99
Author: Caolán McNamara <caolanm@redhat.com>
Date:   Tue Apr 5 15:27:38 2016 +0100

    Resolves: tdf#87120 no keyboard navigation inside floating windows

which allows the focus to "truly" enter the menus, triggering the
floatingwindow attempt, which fails but blocks the menufloatingwindow attempt

easiest thing seems to make the restoring modality, and then restore focus,
something that MenuFloatingWindow does before it finishes

Change-Id: I97a4ac71419dcb04709e4667586d8343e89ddbeb
2016-09-27 16:03:54 +01:00
Maxim Monastirsky
02ddfd10e9 tdf#96736 Let MenuBarManager handle the save dropdown
Instead of trying to do everything (icon theme
changes, disabling commands etc.) manually.

Change-Id: Iffd420bf09ccd566e96f39cb9684ab466a7c6555
2016-09-25 18:48:12 +03:00
Jan-Marek Glogowski
843b9d5dba VCL add support for rollover menubars
KDE theme engines can explicitly support rollover menubars via
styleHint( QStyle::SH_MenuBar_MouseTracking ).

So this adds support for this feature to the vcl::Menu.

Change-Id: Ica923ff2d06cfd54e548ba858b3d90f70d9c255a
2016-09-22 20:13:09 +02:00
Noel Grandin
1256980239 convert GradientStyle to scoped enum
Change-Id: Ib740da708612df7a5f4b8c82262b9b1bd436604d
2016-09-05 08:21:46 +02:00
Maxim Monastirsky
671ac3a922 Looks like the menu highlight handler is now unused
Change-Id: I75ff4bce35e7940e07b760f672e08ffe0dd208f8
Reviewed-on: https://gerrit.libreoffice.org/28580
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Maxim Monastirsky <momonasmon@gmail.com>
2016-09-01 09:39:52 +00:00
Maxim Monastirsky
72eb18e520 gtk3: Implement menubar hiding
Change-Id: Ia772f05daa74453fc3dc8fe0c257fdac358cd5c6
Reviewed-on: https://gerrit.libreoffice.org/28490
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Maxim Monastirsky <momonasmon@gmail.com>
2016-08-31 05:55:39 +00:00
Caolán McNamara
0e69b6bcc5 so the global Application GetAutoMnemonic is always true, simplify
Change-Id: I6c23273bd02841f72b489535f8a546e561df94e8
2016-07-10 19:12:39 +01:00
Caolán McNamara
0076e92542 drop commented out FloatWinPopupFlags lines
Change-Id: I6063e0e5fdf53245dee610c72f8b9fa4543d9cae
2016-07-07 14:52:18 +01:00
Noel Grandin
716844c6ab restore loplugin:vclwidget checking for calling clear() on VclPtr fields
Change-Id: I85eda1c33016c1461d897fc0a3b70457209a7405
Reviewed-on: https://gerrit.libreoffice.org/26806
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
2016-07-06 06:38:30 +00:00
Noel Grandin
2a23d9cc4d when disposing popup menus, don't leave dangling pointers
Change-Id: Ia1b49937ba0693a567097367b99b75a3011666bf
Reviewed-on: https://gerrit.libreoffice.org/26960
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
Tested-by: Michael Meeks <michael.meeks@collabora.com>
2016-07-05 21:04:15 +00:00
Noel Grandin
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
Noel Grandin
cf5208b671 Convert PART to scoped enum
Change-Id: If4c2849beb207593d3d450ae3846ed24eaf66ca4
Reviewed-on: https://gerrit.libreoffice.org/26173
Reviewed-by: Jochen Nitschke <j.nitschke+logerrit@ok.de>
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
2016-06-20 09:33:49 +00:00