i3
floating.h
Go to the documentation of this file.
1 /*
2  * vim:ts=4:sw=4:expandtab
3  *
4  * i3 - an improved dynamic tiling window manager
5  * © 2009 Michael Stapelberg and contributors (see also: LICENSE)
6  *
7  * floating.c: Floating windows.
8  *
9  */
10 #pragma once
11 
12 #include <config.h>
13 
14 #include "tree.h"
15 
17 typedef void (*callback_t)(Con *, Rect *, uint32_t, uint32_t, const void *);
18 
20 #define DRAGGING_CB(name) \
21  static void name(Con *con, Rect *old_rect, uint32_t new_x, \
22  uint32_t new_y, const void *extra)
23 
25 typedef enum { BORDER_LEFT = (1 << 0),
26  BORDER_RIGHT = (1 << 1),
27  BORDER_TOP = (1 << 2),
28  BORDER_BOTTOM = (1 << 3) } border_t;
29 
36 void floating_enable(Con *con, bool automatic);
37 
43 void floating_disable(Con *con, bool automatic);
44 
54 void toggle_floating_mode(Con *con, bool automatic);
55 
60 void floating_raise_con(Con *con);
61 
68 
73 void floating_center(Con *con, Rect rect);
74 
79 void floating_move_to_pointer(Con *con);
80 
86 void floating_drag_window(Con *con, const xcb_button_press_event_t *event);
87 
94 void floating_resize_window(Con *con, const bool proportional, const xcb_button_press_event_t *event);
95 
102 void floating_check_size(Con *floating_con);
103 
120 typedef enum {
121  DRAGGING = 0,
125 } drag_result_t;
126 
135 drag_result_t drag_pointer(Con *con, const xcb_button_press_event_t *event,
136  xcb_window_t confine_to, border_t border, int cursor,
137  callback_t callback, const void *extra);
138 
146 void floating_reposition(Con *con, Rect newrect);
147 
155 void floating_resize(Con *floating_con, int x, int y);
156 
162 void floating_fix_coordinates(Con *con, Rect *old_rect, Rect *new_rect);
drag_result_t drag_pointer(Con *con, const xcb_button_press_event_t *event, xcb_window_t confine_to, border_t border, int cursor, callback_t callback, const void *extra)
This function grabs your pointer and keyboard and lets you drag stuff around (borders).
Definition: floating.c:778
void floating_resize_window(Con *con, const bool proportional, const xcb_button_press_event_t *event)
Called when the user clicked on a floating window while holding the floating_modifier and the right m...
Definition: floating.c:625
drag_result_t
This is the return value of a drag operation like drag_pointer.
Definition: floating.h:120
void floating_raise_con(Con *con)
Raises the given container in the list of floating containers.
Definition: floating.c:420
void floating_enable(Con *con, bool automatic)
Enables floating mode for the given container by detaching it from its parent, creating a new contain...
Definition: floating.c:161
void floating_reposition(Con *con, Rect newrect)
Repositions the CT_FLOATING_CON to have the coordinates specified by newrect, but only if the coordin...
Definition: floating.c:862
void floating_drag_window(Con *con, const xcb_button_press_event_t *event)
Called when the user clicked on the titlebar of a floating window.
Definition: floating.c:525
A &#39;Con&#39; represents everything from the X11 root window down to a single X11 window.
Definition: data.h:591
void floating_center(Con *con, Rect rect)
Centers a floating con above the specified rect.
Definition: floating.c:460
bool floating_maybe_reassign_ws(Con *con)
Checks if con’s coordinates are within its workspace and re-assigns it to the actual workspace if no...
Definition: floating.c:431
uint32_t x
Definition: data.h:127
void floating_fix_coordinates(Con *con, Rect *old_rect, Rect *new_rect)
Fixes the coordinates of the floating window whenever the window gets reassigned to a different outpu...
Definition: floating.c:917
void toggle_floating_mode(Con *con, bool automatic)
Calls floating_enable() for tiling containers and floating_disable() for floating containers...
Definition: floating.c:398
border_t
On which border was the dragging initiated?
Definition: floating.h:25
void floating_check_size(Con *floating_con)
Called when a floating window is created or resized.
Definition: floating.c:68
void(* callback_t)(Con *, Rect *, uint32_t, uint32_t, const void *)
Callback for dragging.
Definition: floating.h:17
uint32_t y
Definition: data.h:128
void floating_move_to_pointer(Con *con)
Moves the given floating con to the current pointer position.
Definition: floating.c:469
Stores a rectangle, for example the size of a window, the child window etc.
Definition: data.h:148
void floating_resize(Con *floating_con, int x, int y)
Sets size of the CT_FLOATING_CON to specified dimensions.
Definition: floating.c:888
void floating_disable(Con *con, bool automatic)
Disables floating mode for the given container by re-attaching the container to its old parent...
Definition: floating.c:342