Skip to content

Commit

Permalink
Implement unique identifiers for each KakouneQt instance
Browse files Browse the repository at this point in the history
  • Loading branch information
falbru committed May 21, 2024
1 parent cdc758c commit 8809937
Show file tree
Hide file tree
Showing 5 changed files with 23 additions and 9 deletions.
12 changes: 7 additions & 5 deletions src/kakounewidget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,20 +3,22 @@
#include "rpc/color.hpp"
#include "statusbar.hpp"

KakouneWidget::KakouneWidget(const QString &session_id, DrawOptions *draw_options, QWidget *parent)
: KakouneWidget(session_id, draw_options, "", parent)
KakouneWidget::KakouneWidget(const QString &session_id, const QUuid &window_id, DrawOptions *draw_options,
QWidget *parent)
: KakouneWidget(session_id, window_id, draw_options, "", parent)
{
}

KakouneWidget::KakouneWidget(const QString &session_id, DrawOptions *draw_options, QString client_arguments,
QWidget *parent)
KakouneWidget::KakouneWidget(const QString &session_id, const QUuid &window_id, DrawOptions *draw_options,
QString client_arguments, QWidget *parent)
: QWidget(parent)
{
m_id = QUuid::createUuid();
m_draw_options = draw_options;

m_client = new KakouneClient(session_id, client_arguments,
{{"KAKQT_SESSION_ID", session_id}, {"KAKQT_WINDOW_ID", m_id.toString()}});
{{"KAKQT_SESSION_ID", window_id.toString()}, {"KAKQT_WINDOW_ID", m_id.toString()}});

connect(m_client, &KakouneClient::refresh, this, &KakouneWidget::clientRefreshed);
connect(m_client, &KakouneClient::finished, this, &KakouneWidget::finished);
connect(m_client, &KakouneClient::setUIOptions, this, &KakouneWidget::setUIOptions);
Expand Down
5 changes: 3 additions & 2 deletions src/kakounewidget.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,10 @@ class KakouneWidget : public QWidget
{
Q_OBJECT
public:
KakouneWidget(const QString &session_id, DrawOptions *draw_options, QWidget *parent = nullptr);
KakouneWidget(const QString &session_id, DrawOptions *draw_options, QString client_arguments,
KakouneWidget(const QString &session_id, const QUuid &window_id, DrawOptions *draw_options,
QWidget *parent = nullptr);
KakouneWidget(const QString &session_id, const QUuid &window_id, DrawOptions *draw_options,
QString client_arguments, QWidget *parent = nullptr);
~KakouneWidget();

void installEventFilter(QObject *filter);
Expand Down
2 changes: 1 addition & 1 deletion src/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ int main(int argc, char *argv[])
QString session_id = generateRandomKakouneSessionId();

MainWindow w(session_id);
KakouneServer server("KakouneQt." + session_id);
KakouneServer server("KakouneQt." + w.getID().toString());
server.bind(&w);

w.show();
Expand Down
9 changes: 8 additions & 1 deletion src/mainwindow.cpp
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
#include "mainwindow.hpp"
#include "keybindings.hpp"
#include <quuid.h>

MainWindow::MainWindow(QString session_id, QWidget *parent) : QMainWindow(parent)
{
m_id = QUuid::createUuid();
resize(1024, 768);

m_draw_options = new DrawOptions();
Expand All @@ -26,9 +28,14 @@ void MainWindow::closeEvent(QCloseEvent *ev)
delete m_session;
}

QUuid MainWindow::getID()
{
return m_id;
}

void MainWindow::newClient(const QString &arguments)
{
KakouneWidget *kakwidget = new KakouneWidget(m_session->getSessionId(), m_draw_options, arguments, m_root);
KakouneWidget *kakwidget = new KakouneWidget(m_session->getSessionId(), m_id, m_draw_options, arguments, m_root);
kakwidget->installEventFilter(new KeyBindingsFilter(this));
connect(kakwidget, &KakouneWidget::finished, m_root, [=]() {
kakwidget->setParent(nullptr);
Expand Down
4 changes: 4 additions & 0 deletions src/mainwindow.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
#include "kakounewidget.hpp"
#include <QMainWindow>
#include <QtWidgets>
#include <quuid.h>

class MainWindow : public QMainWindow
{
Expand All @@ -18,6 +19,8 @@ class MainWindow : public QMainWindow
void focusLeft();
void focusRight();

QUuid getID();

public slots:
void newClient(const QString &arguments);
void focusWindow(const QString &uuid);
Expand All @@ -28,6 +31,7 @@ class MainWindow : public QMainWindow
void updateWindowTitle();

private:
QUuid m_id;
QSplitter *m_root;
KakouneSession *m_session;

Expand Down

0 comments on commit 8809937

Please sign in to comment.