mirror of
https://github.com/hyprwm/wlroots-hyprland.git
synced 2024-12-28 12:29:48 +01:00
2e6eb097b6
Whenever a new surface is created, we have to update the cursor focus, even if there's no input event. So, we generate one motion event, and reuse the code to update the proper cursor focus. We need to do this for all surface roles - toplevels, popups, subsurfaces. Fixes #1162
37 lines
974 B
C
37 lines
974 B
C
#ifndef ROOTSTON_INPUT_H
|
|
#define ROOTSTON_INPUT_H
|
|
|
|
#include <wayland-server.h>
|
|
#include <wlr/types/wlr_cursor.h>
|
|
#include <wlr/types/wlr_input_device.h>
|
|
#include <wlr/types/wlr_seat.h>
|
|
#include "rootston/config.h"
|
|
#include "rootston/cursor.h"
|
|
#include "rootston/server.h"
|
|
#include "rootston/view.h"
|
|
|
|
struct roots_input {
|
|
struct roots_config *config;
|
|
struct roots_server *server;
|
|
|
|
struct wl_listener new_input;
|
|
|
|
struct wl_list seats;
|
|
};
|
|
|
|
struct roots_input *input_create(struct roots_server *server,
|
|
struct roots_config *config);
|
|
void input_destroy(struct roots_input *input);
|
|
|
|
struct roots_seat *input_seat_from_wlr_seat(struct roots_input *input,
|
|
struct wlr_seat *seat);
|
|
|
|
bool input_view_has_focus(struct roots_input *input, struct roots_view *view);
|
|
|
|
struct roots_seat *input_get_seat(struct roots_input *input, char *name);
|
|
|
|
struct roots_seat *input_last_active_seat(struct roots_input *input);
|
|
|
|
void input_update_cursor_focus(struct roots_input *input);
|
|
|
|
#endif
|