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 <memory>
11 #include <fcitx-utils/macros.h>
12 #include "fcitxcore_export.h"
13 #include "inputcontext.h"
14 #include "inputpanel.h"
15 
16 namespace fcitx {
17 
18 class InputContextManager;
19 class FocusGroupPrivate;
20 class InputContext;
21 
22 class FCITXCORE_EXPORT FocusGroup {
23  friend class InputContextManagerPrivate;
24  friend class InputContext;
25 
26 public:
27  FocusGroup(const std::string &display, InputContextManager &manager);
28  FocusGroup(const FocusGroup &) = delete;
29  virtual ~FocusGroup();
30 
31  void setFocusedInputContext(InputContext *ic);
32  InputContext *focusedInputContext() const;
33  bool foreach(const InputContextVisitor &visitor);
34 
35  const std::string &display() const;
36  size_t size() const;
37 
38 protected:
39  void addInputContext(InputContext *ic);
40  void removeInputContext(InputContext *ic);
41 
42 private:
43  std::unique_ptr<FocusGroupPrivate> d_ptr;
44  FCITX_DECLARE_PRIVATE(FocusGroup);
45 };
46 } // namespace fcitx
47 
48 #endif // _FCITX_FOCUSGROUP_H_
Class for input panel in UI.
Definition: action.cpp:12
Input Context for Fcitx.
An input context represents a client of Fcitx.
Definition: inputcontext.h:45