renderer: add more uniforms to the screen shader (#11986)
These are: pointer_shape from the cursor-shape-v1 protocol prepared for v2, along with left_ptr...bottom_right_corner and killing (Hyprland specific)
pointer_shape_previous with
pointer_switch_time to blend between shapes
pointer_size scaled size as used by the normal cursor
pointer_pressed_positions[32] with
pointer_pressed_times[32] and
pointer_pressed_killed(32 bits) for click/touch animations and if they killed something
pointer_inactive_timeout with
pointer_last_active to smoothly fade the pointer out
pointer_hidden to hide it when the cursor is hidden (excluding by cursor:invisible as this config value can be used to turn off the normal cursor, which is useful when drawing it with the screen shader)
This commit is contained in:
parent
474cd004df
commit
46dab01bcc
11 changed files with 215 additions and 25 deletions
|
|
@ -342,3 +342,7 @@ bool CCursorManager::changeTheme(const std::string& name, const int size) {
|
|||
void CCursorManager::syncGsettings() {
|
||||
m_xcursor->syncGsettings();
|
||||
}
|
||||
|
||||
float CCursorManager::getScaledSize() const {
|
||||
return m_size * m_cursorScale;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -55,6 +55,8 @@ class CCursorManager {
|
|||
|
||||
void tickAnimatedCursor();
|
||||
|
||||
float getScaledSize() const;
|
||||
|
||||
private:
|
||||
bool m_ourBufferConnected = false;
|
||||
std::vector<SP<CCursorBuffer>> m_cursorBuffers;
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@
|
|||
#include <cstdint>
|
||||
#include <hyprutils/math/Vector2D.hpp>
|
||||
#include <ranges>
|
||||
#include <algorithm>
|
||||
#include "../../config/ConfigValue.hpp"
|
||||
#include "../../config/ConfigManager.hpp"
|
||||
#include "../../desktop/Window.hpp"
|
||||
|
|
@ -716,7 +717,7 @@ void CInputManager::setClickMode(eClickBehaviorMode mode) {
|
|||
case CLICKMODE_DEFAULT:
|
||||
Debug::log(LOG, "SetClickMode: DEFAULT");
|
||||
m_clickBehavior = CLICKMODE_DEFAULT;
|
||||
g_pHyprRenderer->setCursorFromName("left_ptr");
|
||||
g_pHyprRenderer->setCursorFromName("left_ptr", true);
|
||||
break;
|
||||
|
||||
case CLICKMODE_KILL:
|
||||
|
|
@ -728,7 +729,7 @@ void CInputManager::setClickMode(eClickBehaviorMode mode) {
|
|||
refocus();
|
||||
|
||||
// set cursor
|
||||
g_pHyprRenderer->setCursorFromName("crosshair");
|
||||
g_pHyprRenderer->setCursorFromName("crosshair", true);
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -124,6 +124,8 @@ void CInputManager::onTouchUp(ITouch::SUpEvent e) {
|
|||
void CInputManager::onTouchMove(ITouch::SMotionEvent e) {
|
||||
m_lastInputTouch = true;
|
||||
|
||||
m_lastCursorMovement.reset();
|
||||
|
||||
EMIT_HOOK_EVENT_CANCELLABLE("touchMove", e);
|
||||
if (g_pUnifiedWorkspaceSwipe->isGestureInProgress()) {
|
||||
// Do nothing if this is using a different finger.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue