]> git.sur5r.net Git - i3/i3/blobdiff - include/handlers.h
Re-implement support for the urgency hint, extend t/13-urgent.t
[i3/i3] / include / handlers.h
index 74e29e4b73760ccd369dcb2488e2910581aea552..73cafe4b42a44b4fd15eb0f1586ad08599ab9251 100644 (file)
@@ -3,7 +3,7 @@
  *
  * i3 - an improved dynamic tiling window manager
  *
- * (c) 2009 Michael Stapelberg and contributors
+ * © 2009-2010 Michael Stapelberg and contributors
  *
  * See file LICENSE for license information.
  *
 #ifndef _HANDLERS_H
 #define _HANDLERS_H
 
-/**
- * Due to bindings like Mode_switch + <a>, we need to bind some keys in
- * XCB_GRAB_MODE_SYNC.  Therefore, we just replay all key presses.
- *
- */
-int handle_key_release(void *ignored, xcb_connection_t *conn,
-                       xcb_key_release_event_t *event);
+#include <xcb/randr.h>
+
+
+void add_ignore_event(const int sequence);
 
 /**
  * There was a key press. We compare this key code with our bindings table and
@@ -35,6 +32,24 @@ int handle_key_press(void *ignored, xcb_connection_t *conn,
 int handle_enter_notify(void *ignored, xcb_connection_t *conn,
                         xcb_enter_notify_event_t *event);
 
+#if 0
+/**
+ * When the user moves the mouse but does not change the active window
+ * (e.g. when having no windows opened but moving mouse on the root screen
+ * and crossing virtual screen boundaries), this callback gets called.
+ *
+ */
+int handle_motion_notify(void *ignored, xcb_connection_t *conn,
+                         xcb_motion_notify_event_t *event);
+
+/**
+ * Called when the keyboard mapping changes (for example by using Xmodmap),
+ * we need to update our key bindings then (re-translate symbols).
+ *
+ */
+int handle_mapping_notify(void *ignored, xcb_connection_t *conn,
+                          xcb_mapping_notify_event_t *event);
+
 /**
  * Checks if the button press was on a stack window, handles focus setting and
  * returns true if so, or false otherwise.
@@ -42,14 +57,14 @@ int handle_enter_notify(void *ignored, xcb_connection_t *conn,
  */
 int handle_button_press(void *ignored, xcb_connection_t *conn,
                         xcb_button_press_event_t *event);
-
+#endif
 /**
  * A new window appeared on the screen (=was mapped), so let’s manage it.
  *
  */
 int handle_map_request(void *prophs, xcb_connection_t *conn,
                        xcb_map_request_event_t *event);
-
+#if 0
 /**
  * Configuration notifies are only handled because we need to set up ignore
  * for the following enter notify events
@@ -57,6 +72,14 @@ int handle_map_request(void *prophs, xcb_connection_t *conn,
  */
 int handle_configure_event(void *prophs, xcb_connection_t *conn, xcb_configure_notify_event_t *event);
 
+/**
+ * Gets triggered upon a RandR screen change event, that is when the user
+ * changes the screen configuration in any way (mode, position, …)
+ *
+ */
+int handle_screen_change(void *prophs, xcb_connection_t *conn,
+                         xcb_generic_event_t *e);
+
 /**
  * Configure requests are received when the application wants to resize
  * windows on their own.
@@ -67,7 +90,7 @@ int handle_configure_event(void *prophs, xcb_connection_t *conn, xcb_configure_n
  */
 int handle_configure_request(void *prophs, xcb_connection_t *conn,
                              xcb_configure_request_event_t *event);
-
+#endif
 /**
  * Our window decorations were unmapped. That means, the window will be killed
  * now, so we better clean up before.
@@ -75,6 +98,18 @@ int handle_configure_request(void *prophs, xcb_connection_t *conn,
  */
 int handle_unmap_notify_event(void *data, xcb_connection_t *conn, xcb_unmap_notify_event_t *event);
 
+/**
+ * A destroy notify event is sent when the window is not unmapped, but
+ * immediately destroyed (for example when starting a window and immediately
+ * killing the program which started it).
+ *
+ * We just pass on the event to the unmap notify handler (by copying the
+ * important fields in the event data structure).
+ *
+ */
+int handle_destroy_notify_event(void *data, xcb_connection_t *conn,
+                                xcb_destroy_notify_event_t *event);
+
 /**
  * Called when a window changes its title
  *
@@ -82,17 +117,9 @@ int handle_unmap_notify_event(void *data, xcb_connection_t *conn, xcb_unmap_noti
 int handle_windowname_change(void *data, xcb_connection_t *conn, uint8_t state,
                              xcb_window_t window, xcb_atom_t atom,
                              xcb_get_property_reply_t *prop);
-
 /**
- * We handle legacy window names (titles) which are in COMPOUND_TEXT
- * encoding. However, we just pass them along, so when containing non-ASCII
- * characters, those will be rendering incorrectly. In order to correctly
- * render unicode window titles in i3, an application has to set _NET_WM_NAME,
- * which is in UTF-8 encoding.
- *
- * On every update, a message is put out to the user, so he may improve the
- * situation and update applications which display filenames in their title to
- * correctly use _NET_WM_NAME and therefore support unicode.
+ * Handles legacy window name updates (WM_NAME), see also src/window.c,
+ * window_update_name_legacy().
  *
  */
 int handle_windowname_change_legacy(void *data, xcb_connection_t *conn,
@@ -100,6 +127,7 @@ int handle_windowname_change_legacy(void *data, xcb_connection_t *conn,
                                     xcb_atom_t atom, xcb_get_property_reply_t
                                     *prop);
 
+#if 0
 /**
  * Store the window classes for jumping to them later.
  *
@@ -108,14 +136,13 @@ int handle_windowclass_change(void *data, xcb_connection_t *conn, uint8_t state,
                               xcb_window_t window, xcb_atom_t atom,
                               xcb_get_property_reply_t *prop);
 
-
+#endif
 /**
  * Expose event means we should redraw our windows (= title bar)
  *
  */
 int handle_expose_event(void *data, xcb_connection_t *conn,
                         xcb_expose_event_t *event);
-
 /**
  * Handle client messages (EWMH)
  *
@@ -123,6 +150,7 @@ int handle_expose_event(void *data, xcb_connection_t *conn,
 int handle_client_message(void *data, xcb_connection_t *conn,
                           xcb_client_message_event_t *event);
 
+#if 0
 /**
  * Handles _NET_WM_WINDOW_TYPE changes
  *
@@ -143,6 +171,15 @@ int handle_normal_hints(void *data, xcb_connection_t *conn, uint8_t state,
                         xcb_window_t window, xcb_atom_t name,
                         xcb_get_property_reply_t *reply);
 
+#endif
+/**
+ * Handles the WM_HINTS property for extracting the urgency state of the window.
+ *
+ */
+int handle_hints(void *data, xcb_connection_t *conn, uint8_t state, xcb_window_t window,
+                  xcb_atom_t name, xcb_get_property_reply_t *reply);
+#if 0
+
 /**
  * Handles the transient for hints set by a window, signalizing that this
  * window is a popup window for some other window.
@@ -154,4 +191,14 @@ int handle_transient_for(void *data, xcb_connection_t *conn, uint8_t state,
                          xcb_window_t window, xcb_atom_t name,
                          xcb_get_property_reply_t *reply);
 
+/**
+ * Handles changes of the WM_CLIENT_LEADER atom which specifies if this is a
+ * toolwindow (or similar) and to which window it belongs (logical parent).
+ *
+ */
+int handle_clientleader_change(void *data, xcb_connection_t *conn,
+                               uint8_t state, xcb_window_t window,
+                               xcb_atom_t name, xcb_get_property_reply_t *prop);
+#endif
+
 #endif