mirror of
https://github.com/labwc/labwc.git
synced 2025-10-29 05:40:24 -04:00
Add interactive.c
This commit is contained in:
parent
d28465dfc3
commit
3b7e2c9e09
5 changed files with 30 additions and 26 deletions
|
|
@ -161,8 +161,9 @@ struct view *view_at(struct server *server, double lx, double ly,
|
|||
struct wlr_surface **surface, double *sx, double *sy,
|
||||
int *view_area);
|
||||
|
||||
void begin_interactive(struct view *view, enum cursor_mode mode,
|
||||
void interactive_begin(struct view *view, enum cursor_mode mode,
|
||||
uint32_t edges);
|
||||
|
||||
void server_new_input(struct wl_listener *listener, void *data);
|
||||
void seat_request_cursor(struct wl_listener *listener, void *data);
|
||||
void seat_request_set_selection(struct wl_listener *listener, void *data);
|
||||
|
|
|
|||
20
src/interactive.c
Normal file
20
src/interactive.c
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
#include "labwc.h"
|
||||
|
||||
void interactive_begin(struct view *view, enum cursor_mode mode, uint32_t edges)
|
||||
{
|
||||
/*
|
||||
* This function sets up an interactive move or resize operation, where
|
||||
* the compositor stops propegating pointer events to clients and
|
||||
* instead consumes them itself, to move or resize windows.
|
||||
*/
|
||||
struct server *server = view->server;
|
||||
server->grabbed_view = view;
|
||||
server->cursor_mode = mode;
|
||||
|
||||
/* Remember view and cursor positions at start of move/resize */
|
||||
server->grab_x = server->cursor->x;
|
||||
server->grab_y = server->cursor->y;
|
||||
server->grab_box = view_geometry(view);
|
||||
server->resize_edges = edges;
|
||||
}
|
||||
|
||||
|
|
@ -1,11 +1,12 @@
|
|||
labwc_sources = files(
|
||||
'deco.c',
|
||||
'interactive.c',
|
||||
'main.c',
|
||||
'server.c',
|
||||
'output.c',
|
||||
'server.c',
|
||||
'view.c',
|
||||
'xdg.c',
|
||||
'xwl.c',
|
||||
'deco.c',
|
||||
)
|
||||
|
||||
subdir('debug')
|
||||
|
|
|
|||
24
src/server.c
24
src/server.c
|
|
@ -3,24 +3,6 @@
|
|||
#define MIN_VIEW_WIDTH (100)
|
||||
#define MIN_VIEW_HEIGHT (60)
|
||||
|
||||
void begin_interactive(struct view *view, enum cursor_mode mode, uint32_t edges)
|
||||
{
|
||||
/*
|
||||
* This function sets up an interactive move or resize operation, where
|
||||
* the compositor stops propegating pointer events to clients and
|
||||
* instead consumes them itself, to move or resize windows.
|
||||
*/
|
||||
struct server *server = view->server;
|
||||
server->grabbed_view = view;
|
||||
server->cursor_mode = mode;
|
||||
|
||||
/* Remember view and cursor positions at start of move/resize */
|
||||
server->grab_x = server->cursor->x;
|
||||
server->grab_y = server->cursor->y;
|
||||
server->grab_box = view_geometry(view);
|
||||
server->resize_edges = edges;
|
||||
}
|
||||
|
||||
static void keyboard_handle_modifiers(struct wl_listener *listener, void *data)
|
||||
{
|
||||
/*
|
||||
|
|
@ -65,7 +47,7 @@ static bool handle_keybinding(struct server *server, xkb_keysym_t sym)
|
|||
}
|
||||
break;
|
||||
case XKB_KEY_F6:
|
||||
begin_interactive(view_front_toplevel(server),
|
||||
interactive_begin(view_front_toplevel(server),
|
||||
TINYWL_CURSOR_MOVE, 0);
|
||||
break;
|
||||
case XKB_KEY_F12:
|
||||
|
|
@ -403,10 +385,10 @@ void server_cursor_button(struct wl_listener *listener, void *data)
|
|||
view_focus(view);
|
||||
switch (view_area) {
|
||||
case LAB_DECO_PART_TOP:
|
||||
begin_interactive(view, TINYWL_CURSOR_MOVE, 0);
|
||||
interactive_begin(view, TINYWL_CURSOR_MOVE, 0);
|
||||
break;
|
||||
case LAB_DECO_PART_LEFT:
|
||||
begin_interactive(view, TINYWL_CURSOR_RESIZE,
|
||||
interactive_begin(view, TINYWL_CURSOR_RESIZE,
|
||||
WLR_EDGE_LEFT);
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -81,7 +81,7 @@ void xdg_toplevel_request_move(struct wl_listener *listener, void *data)
|
|||
* client, to prevent the client from requesting this whenever they
|
||||
* want. */
|
||||
struct view *view = wl_container_of(listener, view, request_move);
|
||||
begin_interactive(view, TINYWL_CURSOR_MOVE, 0);
|
||||
interactive_begin(view, TINYWL_CURSOR_MOVE, 0);
|
||||
}
|
||||
|
||||
void xdg_toplevel_request_resize(struct wl_listener *listener, void *data)
|
||||
|
|
@ -95,7 +95,7 @@ void xdg_toplevel_request_resize(struct wl_listener *listener, void *data)
|
|||
* want. */
|
||||
struct wlr_xdg_toplevel_resize_event *event = data;
|
||||
struct view *view = wl_container_of(listener, view, request_resize);
|
||||
begin_interactive(view, TINYWL_CURSOR_RESIZE, event->edges);
|
||||
interactive_begin(view, TINYWL_CURSOR_RESIZE, event->edges);
|
||||
}
|
||||
|
||||
void xdg_surface_new(struct wl_listener *listener, void *data)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue