i3
drag.h File Reference
#include <config.h>
Include dependency graph for drag.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define DRAGGING_CB(name)
 Macro to create a callback function for dragging.
 

Typedefs

typedef void(* callback_t) (Con *, Rect *, uint32_t, uint32_t, const xcb_button_press_event_t *, const void *)
 Callback for dragging.
 

Enumerations

enum  drag_result_t { DRAGGING = 0 , DRAG_SUCCESS , DRAG_REVERT , DRAG_ABORT }
 This is the return value of a drag operation like drag_pointer. More...
 

Functions

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).
 

Macro Definition Documentation

◆ DRAGGING_CB

#define DRAGGING_CB ( name)
Value:
static void name(Con *con, Rect *old_rect, uint32_t new_x, uint32_t new_y, \
const xcb_button_press_event_t *event, const void *extra)
Stores a rectangle, for example the size of a window, the child window etc.
Definition data.h:185
A 'Con' represents everything from the X11 root window down to a single X11 window.
Definition data.h:643

Macro to create a callback function for dragging.

Definition at line 19 of file drag.h.

Typedef Documentation

◆ callback_t

typedef void(* callback_t) (Con *, Rect *, uint32_t, uint32_t, const xcb_button_press_event_t *, const void *)

Callback for dragging.

Definition at line 15 of file drag.h.

Enumeration Type Documentation

◆ drag_result_t

This is the return value of a drag operation like drag_pointer.

DRAGGING will indicate the drag action is still in progress and can be continued or resolved.

DRAG_SUCCESS will indicate the intention of the drag action should be carried out.

DRAG_REVERT will indicate an attempt should be made to restore the state of the involved windows to their condition before the drag.

DRAG_ABORT will indicate that the intention of the drag action cannot be carried out (e.g. because the window has been unmapped).

Enumerator
DRAGGING 
DRAG_SUCCESS 
DRAG_REVERT 
DRAG_ABORT 

Definition at line 39 of file drag.h.

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: