More code.

This commit is contained in:
Michael Stapelberg 2009-02-06 18:23:37 +01:00
parent 1276de8974
commit b664456706
2 changed files with 42 additions and 0 deletions

25
data.h
View File

@ -3,7 +3,32 @@
* *
*/ */
/*
* Defines a position in the table
*
*/
typedef struct Cell {
int row;
int column;
} Cell;
/*
* We need to save the height of a font because it is required for each drawing of
* text but relatively hard to get. As soon as a new font needs to be loaded, a
* Font-entry will be filled for later use.
*
*/
typedef struct Font { typedef struct Font {
char *name; char *name;
int height; int height;
} Font; } Font;
/*
* A client is X11-speak for a window.
*
*/
typedef struct Client {
/* TODO: this is NOT final */
Cell old_position; /* if you set a client to floating and set it back to managed,
it does remember its old position and *tries* to get back there */
} Client;

17
mainx.c
View File

@ -440,6 +440,16 @@ static int handleEvent(void *ignored, xcb_connection_t *c, xcb_generic_event_t *
{ {
return format_event(e); return format_event(e);
} }
static int handle_key_press(void *ignored, xcb_connection_t *c, xcb_generic_event_t *e)
{
xcb_key_press_event_t *event = e;
printf("oh yay!\n");
printf("gots press %d\n", event->detail);
/* TODO: try to change the window border of all windows. */
return format_event(e);
}
static void redrawWindow(xcb_connection_t *c, client_window_t *client) static void redrawWindow(xcb_connection_t *c, client_window_t *client)
{ {
printf("redrawing window.\n"); printf("redrawing window.\n");
@ -561,6 +571,8 @@ myfont.height = reply->font_ascent + reply->font_descent;
int i; int i;
for(i = 2; i < 128; ++i) for(i = 2; i < 128; ++i)
xcb_event_set_handler(&evenths, i, handleEvent, 0); xcb_event_set_handler(&evenths, i, handleEvent, 0);
xcb_event_set_handler(&evenths, XCB_KEY_PRESS, handle_key_press, 0);
for(i = 0; i < 256; ++i) for(i = 0; i < 256; ++i)
xcb_event_set_error_handler(&evenths, i, (xcb_generic_error_handler_t) handleEvent, 0); xcb_event_set_error_handler(&evenths, i, (xcb_generic_error_handler_t) handleEvent, 0);
@ -573,6 +585,8 @@ myfont.height = reply->font_ascent + reply->font_descent;
xcb_property_handlers_init(&prophs, &evenths); xcb_property_handlers_init(&prophs, &evenths);
xcb_event_set_map_notify_handler(&evenths, handle_map_notify_event, &prophs); xcb_event_set_map_notify_handler(&evenths, handle_map_notify_event, &prophs);
//xcb_grab_key (xcb_connection_t *c, uint8_t owner_events, xcb_window_t grab_window, uint16_t modifiers, xcb_keycode_t key, uint8_t pointer_mode, uint8_t keyboard_mode)
root = xcb_aux_get_screen(c, screens)->root; root = xcb_aux_get_screen(c, screens)->root;
@ -582,6 +596,9 @@ myfont.height = reply->font_ascent + reply->font_descent;
xcb_change_window_attributes(c, root, mask, values); xcb_change_window_attributes(c, root, mask, values);
} }
/* Grab 'a' */
xcb_grab_key(c, 0, root, 0, 38, XCB_GRAB_MODE_SYNC, XCB_GRAB_MODE_ASYNC);
xcb_flush(c); xcb_flush(c);
manage_existing_windows(c, &prophs, root); manage_existing_windows(c, &prophs, root);