give the dock a strut and use it

This commit is contained in:
Dana Jansens 2003-05-16 19:15:56 +00:00
parent 66d3006671
commit 7a166a3838
3 changed files with 57 additions and 1 deletions

View file

@ -11,11 +11,15 @@
static Dock *dock;
Strut dock_strut;
void dock_startup()
{
XSetWindowAttributes attrib;
int i;
STRUT_SET(dock_strut, 0, 0, 0, 0);
dock = g_new0(struct Dock, 1);
dock->obwin.type = Window_Dock;
@ -273,6 +277,49 @@ void dock_configure()
}
}
/* set the strut */
switch (config_dock_pos) {
case DockPos_Floating:
STRUT_SET(dock_strut, 0, 0, 0, 0);
break;
case DockPos_TopLeft:
if (config_dock_horz)
STRUT_SET(dock_strut, 0, dock->h, 0, 0);
else
STRUT_SET(dock_strut, dock->w, 0, 0, 0);
break;
case DockPos_Top:
STRUT_SET(dock_strut, 0, dock->h, 0, 0);
break;
case DockPos_TopRight:
if (config_dock_horz)
STRUT_SET(dock_strut, 0, dock->h, 0, 0);
else
STRUT_SET(dock_strut, 0, 0, dock->w, 0);
break;
case DockPos_Left:
STRUT_SET(dock_strut, dock->w, 0, 0, 0);
break;
case DockPos_Right:
STRUT_SET(dock_strut, 0, 0, dock->w, 0);
break;
case DockPos_BottomLeft:
if (config_dock_horz)
STRUT_SET(dock_strut, 0, 0, 0, dock->h);
else
STRUT_SET(dock_strut, dock->w, 0, 0, 0);
break;
case DockPos_Bottom:
STRUT_SET(dock_strut, 0, 0, 0, dock->h);
break;
case DockPos_BottomRight:
if (config_dock_horz)
STRUT_SET(dock_strut, 0, 0, 0, dock->h);
else
STRUT_SET(dock_strut, 0, 0, dock->w, 0);
break;
}
/* not used for actually sizing shit */
dock->w -= theme_bwidth * 2;
dock->h -= theme_bwidth * 2;
@ -290,6 +337,8 @@ void dock_configure()
/* but they are useful outside of this function! */
dock->w += theme_bwidth * 2;
dock->h += theme_bwidth * 2;
screen_update_struts();
}
void dock_app_configure(DockApp *app, int w, int h)

View file

@ -2,9 +2,10 @@
#define __dock_h
#include "timer.h"
#include "render/render.h"
#include "window.h"
#include "stacking.h"
#include "geom.h"
#include "render/render.h"
#include <glib.h>
#include <X11/Xlib.h>
@ -51,6 +52,8 @@ typedef struct DockApp {
int h;
} DockApp;
extern Strut dock_strut;
void dock_startup();
void dock_shutdown();

View file

@ -497,6 +497,10 @@ void screen_update_struts()
/* apply to the 'all desktops' strut */
STRUT_ADD(strut[screen_num_desktops], c->strut);
}
for (i = 0; i < screen_num_desktops; ++i)
STRUT_ADD(strut[i], dock_strut);
screen_update_area();
}