ClientManager: move the Client inner class detail in the cpp file
This commit is contained in:
parent
32e6184210
commit
cb26948ad3
|
@ -7,6 +7,30 @@
|
||||||
namespace Kakoune
|
namespace Kakoune
|
||||||
{
|
{
|
||||||
|
|
||||||
|
struct ClientManager::Client
|
||||||
|
{
|
||||||
|
Client(std::unique_ptr<UserInterface>&& ui, Window& window,
|
||||||
|
String name)
|
||||||
|
: user_interface(std::move(ui)),
|
||||||
|
input_handler(*user_interface),
|
||||||
|
name(std::move(name))
|
||||||
|
{
|
||||||
|
assert(not this->name.empty());
|
||||||
|
context().change_editor(window);
|
||||||
|
}
|
||||||
|
Client(Client&&) = delete;
|
||||||
|
Client& operator=(Client&& other) = delete;
|
||||||
|
|
||||||
|
Context& context() { return input_handler.context(); }
|
||||||
|
|
||||||
|
std::unique_ptr<UserInterface> user_interface;
|
||||||
|
InputHandler input_handler;
|
||||||
|
String name;
|
||||||
|
};
|
||||||
|
|
||||||
|
ClientManager::ClientManager() = default;
|
||||||
|
ClientManager::~ClientManager() = default;
|
||||||
|
|
||||||
String ClientManager::generate_name() const
|
String ClientManager::generate_name() const
|
||||||
{
|
{
|
||||||
for (int i = 0; true; ++i)
|
for (int i = 0; true; ++i)
|
||||||
|
@ -32,10 +56,7 @@ void ClientManager::create_client(std::unique_ptr<UserInterface>&& ui,
|
||||||
Buffer& buffer = **BufferManager::instance().begin();
|
Buffer& buffer = **BufferManager::instance().begin();
|
||||||
m_clients.emplace_back(new Client{std::move(ui), get_unused_window_for_buffer(buffer),
|
m_clients.emplace_back(new Client{std::move(ui), get_unused_window_for_buffer(buffer),
|
||||||
generate_name()});
|
generate_name()});
|
||||||
|
|
||||||
InputHandler* input_handler = &m_clients.back()->input_handler;
|
|
||||||
Context* context = &m_clients.back()->context();
|
Context* context = &m_clients.back()->context();
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
CommandManager::instance().execute(init_commands, *context);
|
CommandManager::instance().execute(init_commands, *context);
|
||||||
|
|
|
@ -12,6 +12,9 @@ struct client_removed{};
|
||||||
class ClientManager : public Singleton<ClientManager>
|
class ClientManager : public Singleton<ClientManager>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
ClientManager();
|
||||||
|
~ClientManager();
|
||||||
|
|
||||||
void create_client(std::unique_ptr<UserInterface>&& ui,
|
void create_client(std::unique_ptr<UserInterface>&& ui,
|
||||||
const String& init_cmd);
|
const String& init_cmd);
|
||||||
|
|
||||||
|
@ -30,23 +33,7 @@ private:
|
||||||
void remove_client_by_context(Context& context);
|
void remove_client_by_context(Context& context);
|
||||||
String generate_name() const;
|
String generate_name() const;
|
||||||
|
|
||||||
struct Client
|
struct Client;
|
||||||
{
|
|
||||||
Client(std::unique_ptr<UserInterface>&& ui, Window& window,
|
|
||||||
String name)
|
|
||||||
: user_interface(std::move(ui)),
|
|
||||||
input_handler(*user_interface),
|
|
||||||
name(std::move(name)) { context().change_editor(window); }
|
|
||||||
Client(Client&&) = delete;
|
|
||||||
Client& operator=(Client&& other) = delete;
|
|
||||||
|
|
||||||
Context& context() { return input_handler.context(); }
|
|
||||||
|
|
||||||
std::unique_ptr<UserInterface> user_interface;
|
|
||||||
InputHandler input_handler;
|
|
||||||
String name;
|
|
||||||
};
|
|
||||||
|
|
||||||
std::vector<std::unique_ptr<Client>> m_clients;
|
std::vector<std::unique_ptr<Client>> m_clients;
|
||||||
std::vector<std::unique_ptr<Window>> m_windows;
|
std::vector<std::unique_ptr<Window>> m_windows;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue
Block a user