struct wl_list link; /* seat.tablet_pads */
};
-void tablet_pad_init(struct seat *seat, struct wlr_input_device *wlr_input_device);
+void tablet_pad_create(struct seat *seat, struct wlr_input_device *wlr_input_device);
void tablet_pad_attach_tablet(struct seat *seat);
void tablet_pad_enter_surface(struct seat *seat, struct wlr_surface *wlr_surface);
struct wl_list link; /* seat.tablet_tools */
};
-void tablet_tool_init(struct seat *seat,
+void tablet_tool_create(struct seat *seat,
struct wlr_tablet_tool *wlr_tablet_tool);
bool tablet_tool_has_focused_surface(struct seat *seat);
double slider;
double wheel_delta;
struct {
- struct wl_listener tablet_tool_proximity;
- struct wl_listener tablet_tool_axis;
- struct wl_listener tablet_tool_tip;
- struct wl_listener tablet_tool_button;
struct wl_listener destroy;
} handlers;
struct wl_list link; /* seat.tablets */
};
-void tablet_init(struct seat *seat, struct wlr_input_device *wlr_input_device);
+void tablet_init(struct seat *seat);
+void tablet_finish(struct seat *seat);
+void tablet_create(struct seat *seat, struct wlr_input_device *wlr_input_device);
#endif /* LABWC_TABLET_H */
struct wl_listener touch_motion;
struct wl_listener touch_frame;
+ struct wl_listener tablet_tool_proximity;
+ struct wl_listener tablet_tool_axis;
+ struct wl_listener tablet_tool_tip;
+ struct wl_listener tablet_tool_button;
+
struct wl_list tablets;
struct wl_list tablet_tools;
struct wl_list tablet_pads;
#include "common/scene-helpers.h"
#include "common/surface-helpers.h"
#include "config/mousebind.h"
+#include "config/tablet-tool.h"
#include "dnd.h"
#include "idle.h"
#include "input/gestures.h"
#include "input/touch.h"
+#include "input/tablet.h"
#include "input/tablet-tool.h"
-#include "input/tablet-pad.h"
#include "labwc.h"
#include "layers.h"
#include "menu/menu.h"
gestures_init(seat);
touch_init(seat);
+ tablet_init(seat);
+
seat->request_cursor.notify = request_cursor_notify;
wl_signal_add(&seat->seat->events.request_set_cursor,
&seat->request_cursor);
gestures_finish(seat);
touch_finish(seat);
+ tablet_finish(seat);
+
wl_list_remove(&seat->request_cursor.link);
wl_list_remove(&seat->request_set_shape.link);
wl_list_remove(&seat->request_set_selection.link);
}
void
-tablet_pad_init(struct seat *seat, struct wlr_input_device *wlr_device)
+tablet_pad_create(struct seat *seat, struct wlr_input_device *wlr_device)
{
wlr_log(WLR_DEBUG, "setting up tablet pad");
struct drawing_tablet_pad *pad = znew(*pad);
}
void
-tablet_tool_init(struct seat *seat,
+tablet_tool_create(struct seat *seat,
struct wlr_tablet_tool *wlr_tablet_tool)
{
wlr_log(WLR_DEBUG, "setting up tablet tool");
* Unfortunately `wlr_tool` is only present in the events, so
* use proximity for creating a `wlr_tablet_v2_tablet_tool`.
*/
- tablet_tool_init(tablet->seat, ev->tool);
+ tablet_tool_create(tablet->seat, ev->tool);
}
/*
wl_list_remove(&tablet->link);
tablet_pad_attach_tablet(tablet->seat);
- wl_list_remove(&tablet->handlers.tablet_tool_tip.link);
- wl_list_remove(&tablet->handlers.tablet_tool_button.link);
- wl_list_remove(&tablet->handlers.tablet_tool_proximity.link);
- wl_list_remove(&tablet->handlers.tablet_tool_axis.link);
wl_list_remove(&tablet->handlers.destroy.link);
free(tablet);
}
void
-tablet_init(struct seat *seat, struct wlr_input_device *wlr_device)
+tablet_create(struct seat *seat, struct wlr_input_device *wlr_device)
{
wlr_log(WLR_DEBUG, "setting up tablet");
struct drawing_tablet *tablet = znew(*tablet);
tablet->wheel_delta = 0.0;
wlr_log(WLR_INFO, "tablet dimensions: %.2fmm x %.2fmm",
tablet->tablet->width_mm, tablet->tablet->height_mm);
- CONNECT_SIGNAL(seat->cursor, &tablet->handlers, tablet_tool_axis);
- CONNECT_SIGNAL(seat->cursor, &tablet->handlers, tablet_tool_proximity);
- CONNECT_SIGNAL(seat->cursor, &tablet->handlers, tablet_tool_tip);
- CONNECT_SIGNAL(seat->cursor, &tablet->handlers, tablet_tool_button);
CONNECT_SIGNAL(wlr_device, &tablet->handlers, destroy);
wl_list_insert(&seat->tablets, &tablet->link);
tablet_pad_attach_tablet(tablet->seat);
}
+
+void
+tablet_init(struct seat *seat)
+{
+ CONNECT_SIGNAL(seat->cursor, seat, tablet_tool_axis);
+ CONNECT_SIGNAL(seat->cursor, seat, tablet_tool_proximity);
+ CONNECT_SIGNAL(seat->cursor, seat, tablet_tool_tip);
+ CONNECT_SIGNAL(seat->cursor, seat, tablet_tool_button);
+}
+
+void
+tablet_finish(struct seat *seat)
+{
+ wl_list_remove(&seat->tablet_tool_axis.link);
+ wl_list_remove(&seat->tablet_tool_proximity.link);
+ wl_list_remove(&seat->tablet_tool_tip.link);
+ wl_list_remove(&seat->tablet_tool_button.link);
+}
{
struct input *input = znew(*input);
input->wlr_input_device = dev;
- tablet_init(seat, dev);
+ tablet_create(seat, dev);
wlr_cursor_attach_input_device(seat->cursor, dev);
wlr_log(WLR_INFO, "map tablet to output %s\n", rc.tablet.output_name);
map_input_to_output(seat, dev, rc.tablet.output_name);
{
struct input *input = znew(*input);
input->wlr_input_device = dev;
- tablet_pad_init(seat, dev);
+ tablet_pad_create(seat, dev);
return input;
}