Implement fullscreen (_NET_WM_STATE_FULLSCREEN)

This commit is contained in:
Michael Stapelberg
2009-02-14 08:38:07 +01:00
parent 031cf4ccda
commit df7621d5a5
8 changed files with 140 additions and 6 deletions

View File

@ -9,6 +9,7 @@
*
*/
#include <xcb/xcb.h>
#include <stdbool.h>
#ifndef _DATA_H
#define _DATA_H
@ -57,6 +58,8 @@ struct Workspace {
int current_row;
int current_col;
Client *fullscreen_client;
/* This is a two-dimensional dynamic array of Container-pointers. Ive always wanted
* to be a three-star programmer :) */
Container ***table;
@ -118,6 +121,14 @@ struct Client {
char *name;
int name_len;
/* fullscreen is pretty obvious */
bool fullscreen;
/* After leaving fullscreen mode, a client needs to be reconfigured (configuration =
setting X, Y, width and height). By setting the force_reconfigure flag, render_layout()
will reconfigure the client. */
bool force_reconfigure;
/* XCB contexts */
xcb_window_t frame; /* Our window: The frame around the client */
xcb_gcontext_t titlegc; /* The titlebars graphic context inside the frame */
@ -147,6 +158,9 @@ struct Container {
int width;
int height;
/* Backpointer to the workspace this container is in */
Workspace *workspace;
/* Ensure MODE_DEFAULT maps to 0 because we use calloc for initialization later */
enum { MODE_DEFAULT = 0, MODE_STACK = 1 } mode;
CIRCLEQ_HEAD(client_head, Client) clients;