1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128
|
#include "allincludes.h"
void
W_MapWindow(window)
W_Window window;
{
struct window *win;
#ifdef DEBUG
printf("Mapping %d\n", window);
#endif
win = W_Void2Window(window);
if(win->type != WIN_BORDER && win->borderwin) {
W_MapWindow(win->borderwin);
}
if (win->wm_window)
W_MapWindow(win->wm_window);
if (win->mapped)
return;
win->mapped = 1;
XMapRaised(W_Display, win->window);
}
void
W_UnmapWindow(window)
W_Window window;
{
struct window *win;
#ifdef DEBUG
printf("UnMapping %d\n", window);
#endif
win = W_Void2Window(window);
if (win->mapped == 0)
return;
win->mapped = 0;
XUnmapWindow(W_Display, win->window);
if(win->type != WIN_BORDER && win->borderwin) {
W_UnmapWindow(win->borderwin);
}
if (win->wm_window)
W_UnmapWindow(win->wm_window);
}
int
W_IsMapped(window)
W_Window window;
{
struct window *win;
win = W_Void2Window(window);
if (win == NULL)
return (0);
return (win->mapped);
}
static void
deleteWindow(window)
struct window *window;
{
struct windowlist **rm;
struct windowlist *temp;
rm = &hashtable[hash(window->window)];
while (*rm != NULL && (*rm)->window != window) {
rm = &((*rm)->next);
}
if (*rm == NULL) {
printf("Attempt to delete non-existent window!\n");
return;
}
temp = *rm;
*rm = temp->next;
free((char *) temp);
}
void
W_DestroyWindow(window)
W_Window window;
{
struct window *win;
W_Window wm_window;
#ifdef DEBUG
printf("Destroying %d\n", window);
#endif
win = W_Void2Window(window);
wm_window = win->wm_window;
if(win->fs_window != None)
W_ToggleFullscreen(window);
deleteWindow(win);
XDestroyWindow(W_Display, win->window);
if(win->buffer) XFreePixmap(W_Display, win->buffer);
if(win->type != WIN_BORDER && win->borderwin)
W_DestroyWindow(win->borderwin);
free((char *) win);
if (wm_window)
W_DestroyWindow(wm_window);
}
void
W_ResizeWindow(window, neww, newh) /* TSH 2/93 */
W_Window window;
int neww, newh;
{
struct window *win = W_Void2Window(window);
XResizeWindow(W_Display, win->window,
(unsigned int) neww,
(unsigned int) newh);
/* resize the border to match [BDyess] */
XResizeWindow(W_Display, W_Void2Window(win->borderwin)->window,
(unsigned int) neww + win->border * 2,
(unsigned int) newh + win->border * 2);
}
void
W_Deiconify(window)
W_Window window;
{
struct window *win;
win = W_Void2Window(window);
/* according to ICCCM 4.1.4, this is how you deiconify a window. */
XMapWindow(W_Display, win->window);
}
|