diff --git a/src/ui/NhekoCursorShape.cpp b/src/ui/NhekoCursorShape.cpp
new file mode 100644
index 00000000..06b0a321
--- /dev/null
+++ b/src/ui/NhekoCursorShape.cpp
@@ -0,0 +1,25 @@
+#include "NhekoCursorShape.h"
+
+#include <QCursor>
+
+NhekoCursorShape::NhekoCursorShape(QQuickItem *parent)
+ : QQuickItem(parent)
+ , currentShape_(Qt::CursorShape::ArrowCursor)
+{}
+
+Qt::CursorShape
+NhekoCursorShape::cursorShape() const
+{
+ return cursor().shape();
+}
+
+void
+NhekoCursorShape::setCursorShape(Qt::CursorShape cursorShape)
+{
+ if (currentShape_ == cursorShape)
+ return;
+
+ currentShape_ = cursorShape;
+ setCursor(cursorShape);
+ emit cursorShapeChanged();
+}
diff --git a/src/ui/NhekoCursorShape.h b/src/ui/NhekoCursorShape.h
new file mode 100644
index 00000000..2eab5e42
--- /dev/null
+++ b/src/ui/NhekoCursorShape.h
@@ -0,0 +1,26 @@
+#pragma once
+
+// see
+// https://stackoverflow.com/questions/27821054/how-to-change-cursor-shape-in-qml-when-mousearea-is-covered-with-another-mousear/29382092#29382092
+
+#include <QQuickItem>
+
+class NhekoCursorShape : public QQuickItem
+{
+ Q_OBJECT
+
+ Q_PROPERTY(Qt::CursorShape cursorShape READ cursorShape WRITE setCursorShape NOTIFY
+ cursorShapeChanged)
+
+public:
+ explicit NhekoCursorShape(QQuickItem *parent = 0);
+
+private:
+ Qt::CursorShape cursorShape() const;
+ void setCursorShape(Qt::CursorShape cursorShape);
+
+ Qt::CursorShape currentShape_;
+
+signals:
+ void cursorShapeChanged();
+};
diff --git a/src/ui/UserProfile.cpp b/src/ui/UserProfile.cpp
index 274ed927..77f6ced5 100644
--- a/src/ui/UserProfile.cpp
+++ b/src/ui/UserProfile.cpp
@@ -314,9 +314,8 @@ UserProfile::changeAvatar()
return;
}
- const auto bin = file.peek(file.size());
- const auto payload = std::string(bin.data(), bin.size());
- const auto dimensions = QImageReader(&file).size();
+ const auto bin = file.peek(file.size());
+ const auto payload = std::string(bin.data(), bin.size());
isLoading_ = true;
emit loadingChanged();
@@ -328,7 +327,6 @@ UserProfile::changeAvatar()
mime.name().toStdString(),
QFileInfo(fileName).fileName().toStdString(),
[this,
- dimensions,
payload,
mimetype = mime.name().toStdString(),
size = payload.size(),
@@ -367,15 +365,15 @@ UserProfile::changeAvatar()
void
UserProfile::updateRoomMemberState(mtx::events::state::Member member)
{
- http::client()->send_state_event(
- roomid_.toStdString(),
- http::client()->user_id().to_string(),
- member,
- [this](mtx::responses::EventId, mtx::http::RequestErr err) {
- if (err)
- nhlog::net()->error("Failed to update room member state : ",
- err->matrix_error.error);
- });
+ http::client()->send_state_event(roomid_.toStdString(),
+ http::client()->user_id().to_string(),
+ member,
+ [](mtx::responses::EventId, mtx::http::RequestErr err) {
+ if (err)
+ nhlog::net()->error(
+ "Failed to update room member state : ",
+ err->matrix_error.error);
+ });
}
void
|