Fcitx
focusgroup.h
1 /*
2  * SPDX-FileCopyrightText: 2016-2016 CSSlayer <wengxt@gmail.com>
3  *
4  * SPDX-License-Identifier: LGPL-2.1-or-later
5  *
6  */
7 #ifndef _FCITX_FOCUSGROUP_H_
8 #define _FCITX_FOCUSGROUP_H_
9 
10 #include <cstddef>
11 #include <memory>
12 #include <string>
13 #include <fcitx-utils/macros.h>
14 #include <fcitx/fcitxcore_export.h>
15 #include <fcitx/inputcontext.h>
16 #include <fcitx/inputpanel.h>
17 
18 namespace fcitx {
19 
20 class InputContextManager;
21 class FocusGroupPrivate;
22 class InputContext;
23 
24 class FCITXCORE_EXPORT FocusGroup {
25  friend class InputContextManagerPrivate;
26  friend class InputContext;
27 
28 public:
29  FocusGroup(const std::string &display, InputContextManager &manager);
30  FocusGroup(const FocusGroup &) = delete;
31  virtual ~FocusGroup();
32 
33  void setFocusedInputContext(InputContext *ic);
34  InputContext *focusedInputContext() const;
35  bool foreach(const InputContextVisitor &visitor);
36 
37  const std::string &display() const;
38  size_t size() const;
39 
40 protected:
41  void addInputContext(InputContext *ic);
42  void removeInputContext(InputContext *ic);
43 
44 private:
45  std::unique_ptr<FocusGroupPrivate> d_ptr;
46  FCITX_DECLARE_PRIVATE(FocusGroup);
47 };
48 } // namespace fcitx
49 
50 #endif // _FCITX_FOCUSGROUP_H_
Class for input panel in UI.
Definition: action.cpp:17
Input Context for Fcitx.
An input context represents a client of Fcitx.
Definition: inputcontext.h:47