workaround segfault in compiler on macos-clang-intel
[LibreOffice.git] / include / sfx2 / userinputinterception.hxx
blob2ed1eb0b8f5cd80d74f9a765d0bfd63448ad6800
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
20 #ifndef INCLUDED_SFX2_USERINPUTINTERCEPTION_HXX
21 #define INCLUDED_SFX2_USERINPUTINTERCEPTION_HXX
23 #include <config_options.h>
24 #include <sfx2/dllapi.h>
26 #include <memory>
28 namespace com::sun::star::awt { class XKeyHandler; }
29 namespace com::sun::star::awt { class XMouseClickHandler; }
30 namespace com::sun::star::uno { template <typename > class Reference; }
31 namespace osl { class Mutex; }
33 class NotifyEvent;
35 namespace cppu { class OWeakObject; }
38 namespace sfx2
42 //= UserInputInterception
44 struct UserInputInterception_Data;
45 /** helper class for implementing the XUserInputInterception interface
46 for a controller implementation
48 class UNLESS_MERGELIBS_MORE(SFX2_DLLPUBLIC) UserInputInterception
50 public:
51 UserInputInterception( ::cppu::OWeakObject& _rControllerImpl, ::osl::Mutex& _rMutex );
52 ~UserInputInterception();
53 UserInputInterception(const UserInputInterception&) = delete;
54 UserInputInterception& operator=( const UserInputInterception& ) = delete;
56 // delegator functions for your XUserInputInterception implementation
57 /// @throws css::uno::RuntimeException
58 void addKeyHandler( const css::uno::Reference< css::awt::XKeyHandler >& xHandler );
59 /// @throws css::uno::RuntimeException
60 void removeKeyHandler( const css::uno::Reference< css::awt::XKeyHandler >& xHandler );
61 /// @throws css::uno::RuntimeException
62 void addMouseClickHandler( const css::uno::Reference< css::awt::XMouseClickHandler >& xHandler );
63 /// @throws css::uno::RuntimeException
64 void removeMouseClickHandler( const css::uno::Reference< css::awt::XMouseClickHandler >& xHandler );
66 // state
67 bool hasKeyHandlers() const;
68 bool hasMouseClickListeners() const;
70 // forwarding a NotifyEvent to the KeyListeners respectively MouseClickListeners
71 bool handleNotifyEvent( const NotifyEvent& _rEvent );
73 private:
74 ::std::unique_ptr< UserInputInterception_Data > m_pData;
78 } // namespace sfx2
81 #endif // INCLUDED_SFX2_USERINPUTINTERCEPTION_HXX
83 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */