i3
drag.c File Reference
#include "all.h"
Include dependency graph for drag.c:

Go to the source code of this file.

Data Structures

struct  drag_x11_cb
 

Functions

static bool threshold_exceeded (uint32_t x1, uint32_t y1, uint32_t x2, uint32_t y2)
 
static bool drain_drag_events (EV_P, struct drag_x11_cb *dragloop)
 
static void xcb_drag_prepare_cb (EV_P_ ev_prepare *w, int revents)
 
drag_result_t drag_pointer (Con *con, const xcb_button_press_event_t *event, xcb_window_t confine_to, int cursor, bool use_threshold, callback_t callback, const void *extra)
 This function grabs your pointer and keyboard and lets you drag stuff around (borders).
 

Function Documentation

◆ drag_pointer()

drag_result_t drag_pointer ( Con * con,
const xcb_button_press_event_t * event,
xcb_window_t confine_to,
int cursor,
bool use_threshold,
callback_t callback,
const void * extra )

This function grabs your pointer and keyboard and lets you drag stuff around (borders).

Every time you move your mouse, an XCB_MOTION_NOTIFY event will be received and the given callback will be called with the parameters specified (client, the original event), the original rect of the client, and the new coordinates (x, y).

If use_threshold is set, dragging only starts after the user moves the pointer past a certain threshold. That is, the cursor will not be set and the callback will not be called until then.

Definition at line 176 of file drag.c.

References drag_x11_cb::callback, drag_x11_cb::con, conn, DRAG_ABORT, DRAGGING, ELOG, drag_x11_cb::event, drag_x11_cb::extra, main_loop, main_set_x11_cb(), drag_x11_cb::old_rect, drag_x11_cb::prepare, Con::rect, drag_x11_cb::result, root, xcb_drag_prepare_cb(), drag_x11_cb::xcursor, and xcursor_get_cursor().

Referenced by floating_drag_window(), floating_resize_window(), resize_graphical_handler(), and tiling_drag().

Here is the call graph for this function:

◆ drain_drag_events()

◆ threshold_exceeded()

static bool threshold_exceeded ( uint32_t x1,
uint32_t y1,
uint32_t x2,
uint32_t y2 )
static

Definition at line 43 of file drag.c.

References logical_px().

Referenced by drain_drag_events(), and resize_graphical_handler().

Here is the call graph for this function:

◆ xcb_drag_prepare_cb()

static void xcb_drag_prepare_cb ( EV_P_ ev_prepare * w,
int revents )
static

Definition at line 157 of file drag.c.

References drain_drag_events().

Referenced by drag_pointer().

Here is the call graph for this function: