make an obt_root() macro

This commit is contained in:
Dana Jansens 2008-01-31 09:56:59 -05:00
parent ec3a4e3404
commit 73c9a0e06b
16 changed files with 69 additions and 86 deletions

View file

@ -61,6 +61,8 @@ void obt_display_close();
void obt_display_ignore_errors(gboolean ignore);
#define obt_root(screen) (RootWindow(obt_display, screen))
G_END_DECLS
#endif /*__obt_display_h*/

View file

@ -468,7 +468,7 @@ void obt_prop_message(gint screen, Window about, Atom messagetype,
glong data0, glong data1, glong data2, glong data3,
glong data4, glong mask)
{
obt_prop_message_to(RootWindow(obt_display, screen), about, messagetype,
obt_prop_message_to(obt_root(screen), about, messagetype,
data0, data1, data2, data3, data4, mask);
}

View file

@ -165,8 +165,8 @@ void client_set_list(void)
} else
windows = NULL;
OBT_PROP_SETA32(RootWindow(obt_display, ob_screen),
NET_CLIENT_LIST, WINDOW, (gulong*)windows, size);
OBT_PROP_SETA32(obt_root(ob_screen), NET_CLIENT_LIST, WINDOW,
(gulong*)windows, size);
if (windows)
g_free(windows);
@ -1298,7 +1298,7 @@ void client_update_transient_for(ObClient *self)
/* Setting the transient_for to Root is actually illegal, however
applications from time have done this to specify transient for
their group */
if (!target && self->group && t == RootWindow(obt_display, ob_screen))
if (!target && self->group && t == obt_root(ob_screen))
trangroup = TRUE;
} else if (self->group && self->transient)
trangroup = TRUE;

View file

@ -85,8 +85,7 @@ void dock_startup(gboolean reconfig)
attrib.event_mask = DOCK_EVENT_MASK;
attrib.override_redirect = True;
attrib.do_not_propagate_mask = DOCK_NOPROPAGATEMASK;
dock->frame = XCreateWindow(obt_display,
RootWindow(obt_display, ob_screen),
dock->frame = XCreateWindow(obt_display, obt_root(ob_screen),
0, 0, 1, 1, 0,
RrDepth(ob_rr_inst), InputOutput,
RrVisual(ob_rr_inst),
@ -202,7 +201,7 @@ void dock_remove(ObDockApp *app, gboolean reparent)
if (reparent)
XReparentWindow(obt_display, app->icon_win,
RootWindow(obt_display, ob_screen), app->x, app->y);
obt_root(ob_screen), app->x, app->y);
dock->dock_apps = g_list_remove(dock->dock_apps, app);
dock_configure();

View file

@ -159,7 +159,7 @@ static Window event_get_window(XEvent *e)
/* pick a window */
switch (e->type) {
case SelectionClear:
window = RootWindow(obt_display, ob_screen);
window = obt_root(ob_screen);
break;
case MapRequest:
window = e->xmap.window;
@ -314,7 +314,7 @@ static gboolean wanted_focusevent(XEvent *e, gboolean in_client_only)
/* These are the ones we want.. */
if (win == RootWindow(obt_display, ob_screen)) {
if (win == obt_root(ob_screen)) {
/* If looking for a focus in on a client, then always return
FALSE for focus in's to the root window */
if (in_client_only)
@ -368,7 +368,7 @@ static gboolean wanted_focusevent(XEvent *e, gboolean in_client_only)
return FALSE;
/* Focus left the root window revertedto state */
if (win == RootWindow(obt_display, ob_screen))
if (win == obt_root(ob_screen))
return FALSE;
/* These are the ones we want.. */
@ -592,7 +592,7 @@ static void event_process(const XEvent *ec, gpointer data)
obt_display_ignore_errors(TRUE);
if (XGetInputFocus(obt_display, &win, &i) &&
XGetGeometry(obt_display, win, &root, &i,&i,&u,&u,&u,&u) &&
root != RootWindow(obt_display, ob_screen))
root != obt_root(ob_screen))
{
ob_debug_type(OB_DEBUG_FOCUS,
"Focus went to another screen !\n");
@ -633,7 +633,7 @@ static void event_process(const XEvent *ec, gpointer data)
event_handle_dock(dock, e);
else if (menu)
event_handle_menu(menu, e);
else if (window == RootWindow(obt_display, ob_screen))
else if (window == obt_root(ob_screen))
event_handle_root(e);
else if (e->type == MapRequest)
client_manage(window);
@ -700,7 +700,7 @@ static void event_process(const XEvent *ec, gpointer data)
if (e->type == ButtonPress || e->type == ButtonRelease) {
/* If the button press was on some non-root window, or was physically
on the root window, the process it */
if (window != RootWindow(obt_display, ob_screen) ||
if (window != obt_root(ob_screen) ||
e->xbutton.subwindow == None)
{
event_handle_user_input(client, e);

View file

@ -91,8 +91,7 @@ void focus_set_client(ObClient *client)
/* set the NET_ACTIVE_WINDOW hint, but preserve it on shutdown */
if (ob_state() != OB_STATE_EXITING) {
active = client ? client->window : None;
OBT_PROP_SET32(RootWindow(obt_display, ob_screen),
NET_ACTIVE_WINDOW, WINDOW, active);
OBT_PROP_SET32(obt_root(ob_screen), NET_ACTIVE_WINDOW, WINDOW, active);
}
}

View file

@ -67,16 +67,16 @@ void focus_cycle_indicator_startup(gboolean reconfig)
attr.override_redirect = True;
attr.background_pixel = BlackPixel(obt_display, ob_screen);
focus_indicator.top.window =
create_window(RootWindow(obt_display, ob_screen),
create_window(obt_root(ob_screen),
CWOverrideRedirect | CWBackPixel, &attr);
focus_indicator.left.window =
create_window(RootWindow(obt_display, ob_screen),
create_window(obt_root(ob_screen),
CWOverrideRedirect | CWBackPixel, &attr);
focus_indicator.right.window =
create_window(RootWindow(obt_display, ob_screen),
create_window(obt_root(ob_screen),
CWOverrideRedirect | CWBackPixel, &attr);
focus_indicator.bottom.window =
create_window(RootWindow(obt_display, ob_screen),
create_window(obt_root(ob_screen),
CWOverrideRedirect | CWBackPixel, &attr);
stacking_add(INTERNALWINDOW_AS_WINDOW(&focus_indicator.top));

View file

@ -113,8 +113,7 @@ void focus_cycle_popup_startup(gboolean reconfig)
attrib.override_redirect = True;
attrib.border_pixel=RrColorPixel(ob_rr_theme->osd_border_color);
popup.bg = create_window(RootWindow(obt_display, ob_screen),
ob_rr_theme->obwidth,
popup.bg = create_window(obt_root(ob_screen), ob_rr_theme->obwidth,
CWOverrideRedirect | CWBorderPixel, &attrib);
popup.text = create_window(popup.bg, 0, 0, NULL);

View file

@ -101,13 +101,12 @@ ObFrame *frame_new(ObClient *client)
mask |= CWColormap | CWBackPixel | CWBorderPixel;
/* create a colormap with the visual */
self->colormap = attrib.colormap =
XCreateColormap(obt_display,
RootWindow(obt_display, ob_screen),
XCreateColormap(obt_display, obt_root(ob_screen),
visual, AllocNone);
attrib.background_pixel = BlackPixel(obt_display, ob_screen);
attrib.border_pixel = BlackPixel(obt_display, ob_screen);
}
self->window = createWindow(RootWindow(obt_display, ob_screen), visual,
self->window = createWindow(obt_root(ob_screen), visual,
mask, &attrib);
/* create the visible decor windows */
@ -1076,10 +1075,8 @@ void frame_release_client(ObFrame *self)
if (reparent) {
/* according to the ICCCM - if the client doesn't reparent itself,
then we will reparent the window to root for them */
XReparentWindow(obt_display, self->client->window,
RootWindow(obt_display, ob_screen),
self->client->area.x,
self->client->area.y);
XReparentWindow(obt_display, self->client->window, obt_root(ob_screen),
self->client->area.x, self->client->area.y);
}
/* remove all the windows for the frame from the window_map */
@ -1357,7 +1354,7 @@ ObFrameContext frame_context(ObClient *client, Window win, gint x, gint y)
if (moveresize_in_progress)
return OB_FRAME_CONTEXT_MOVE_RESIZE;
if (win == RootWindow(obt_display, ob_screen))
if (win == obt_root(ob_screen))
return OB_FRAME_CONTEXT_ROOT ;
if (client == NULL) return OB_FRAME_CONTEXT_NONE;
if (win == client->window) {

View file

@ -74,8 +74,7 @@ gboolean grab_keyboard_full(gboolean grab)
if (grab) {
if (kgrabs++ == 0) {
ret = XGrabKeyboard(obt_display,
RootWindow(obt_display, ob_screen),
ret = XGrabKeyboard(obt_display, obt_root(ob_screen),
False, GrabModeAsync, GrabModeAsync,
event_curtime) == Success;
if (!ret)
@ -106,8 +105,7 @@ gboolean grab_pointer_full(gboolean grab, gboolean owner_events,
ret = XGrabPointer(obt_display, screen_support_win, owner_events,
GRAB_PTR_MASK,
GrabModeAsync, GrabModeAsync,
(confine ? RootWindow(obt_display, ob_screen) :
None),
(confine ? obt_root(ob_screen) : None),
ob_cursor(cur), event_curtime) == Success;
if (!ret)
--pgrabs;

View file

@ -44,20 +44,20 @@ static void grab_keys(gboolean grab)
{
KeyBindingTree *p;
ungrab_all_keys(RootWindow(obt_display, ob_screen));
ungrab_all_keys(obt_root(ob_screen));
if (grab) {
p = curpos ? curpos->first_child : keyboard_firstnode;
while (p) {
if (p->key)
grab_key(p->key, p->state, RootWindow(obt_display, ob_screen),
grab_key(p->key, p->state, obt_root(ob_screen),
GrabModeAsync);
p = p->next_sibling;
}
if (curpos)
grab_key(config_keyboard_reset_keycode,
config_keyboard_reset_state,
RootWindow(obt_display, ob_screen), GrabModeAsync);
obt_root(ob_screen), GrabModeAsync);
}
}

View file

@ -85,7 +85,7 @@ ObMenuFrame* menu_frame_new(ObMenu *menu, guint show_from, ObClient *client)
self->show_from = show_from;
attr.event_mask = FRAME_EVENTMASK;
self->window = createWindow(RootWindow(obt_display, ob_screen),
self->window = createWindow(obt_root(ob_screen),
CWEventMask, &attr);
XSetWindowBorderWidth(obt_display, self->window, ob_rr_theme->mbwidth);

View file

@ -144,7 +144,7 @@ gint main(gint argc, gchar **argv)
/* Send client message telling the OB process to:
* remote_control = 1 -> reconfigure
* remote_control = 2 -> restart */
OBT_PROP_MSG(ob_screen, RootWindow(obt_display, ob_screen),
OBT_PROP_MSG(ob_screen, obt_root(ob_screen),
OB_CONTROL, remote_control, 0, 0, 0, 0);
obt_display_close(obt_display);
exit(EXIT_SUCCESS);
@ -233,8 +233,7 @@ gint main(gint argc, gchar **argv)
/*
if (config_type != NULL)
PROP_SETS(RootWindow(obt_display, ob_screen),
ob_config, config_type);
PROP_SETS(obt_root(ob_screen), ob_config, config_type);
*/
/* we're done with parsing now, kill it */
@ -257,7 +256,7 @@ gint main(gint argc, gchar **argv)
if (ob_rr_theme == NULL)
ob_exit_with_error(_("Unable to load a theme."));
OBT_PROP_SETS(RootWindow(obt_display, ob_screen),
OBT_PROP_SETS(obt_root(ob_screen),
OB_THEME, utf8, ob_rr_theme->name);
}
@ -300,7 +299,7 @@ gint main(gint argc, gchar **argv)
focus_nothing();
/* focus what was focused if a wm was already running */
if (OBT_PROP_GET32(RootWindow(obt_display, ob_screen),
if (OBT_PROP_GET32(obt_root(ob_screen),
NET_ACTIVE_WINDOW, WINDOW, &xid) &&
(w = window_find(xid)) && WINDOW_IS_CLIENT(w))
{

View file

@ -41,7 +41,7 @@ ObPopup *popup_new(void)
self->iconwm = self->iconhm = 1;
attrib.override_redirect = True;
self->bg = XCreateWindow(obt_display, RootWindow(obt_display, ob_screen),
self->bg = XCreateWindow(obt_display, obt_root(ob_screen),
0, 0, 1, 1, 0, RrDepth(ob_rr_inst),
InputOutput, RrVisual(ob_rr_inst),
CWOverrideRedirect, &attrib);

View file

@ -146,8 +146,7 @@ static gboolean replace_wm(void)
}
/* Send client message indicating that we are now the WM */
obt_prop_message(ob_screen, RootWindow(obt_display, ob_screen),
OBT_PROP_ATOM(MANAGER),
obt_prop_message(ob_screen, obt_root(ob_screen), OBT_PROP_ATOM(MANAGER),
timestamp, wm_sn_atom, screen_support_win, 0, 0,
SubstructureNotifyMask);
@ -164,8 +163,7 @@ gboolean screen_annex(void)
/* create the netwm support window */
attrib.override_redirect = TRUE;
attrib.event_mask = PropertyChangeMask;
screen_support_win = XCreateWindow(obt_display,
RootWindow(obt_display, ob_screen),
screen_support_win = XCreateWindow(obt_display, obt_root(ob_screen),
-100, -100, 1, 1, 0,
CopyFromParent, InputOutput,
CopyFromParent,
@ -180,8 +178,7 @@ gboolean screen_annex(void)
}
obt_display_ignore_errors(TRUE);
XSelectInput(obt_display, RootWindow(obt_display, ob_screen),
ROOT_EVENTMASK);
XSelectInput(obt_display, obt_root(ob_screen), ROOT_EVENTMASK);
obt_display_ignore_errors(FALSE);
if (obt_display_error_occured) {
g_message(_("A window manager is already running on screen %d"),
@ -195,11 +192,10 @@ gboolean screen_annex(void)
/* set the OPENBOX_PID hint */
pid = getpid();
OBT_PROP_SET32(RootWindow(obt_display, ob_screen),
OPENBOX_PID, CARDINAL, pid);
OBT_PROP_SET32(obt_root(ob_screen), OPENBOX_PID, CARDINAL, pid);
/* set supporting window */
OBT_PROP_SET32(RootWindow(obt_display, ob_screen),
OBT_PROP_SET32(obt_root(ob_screen),
NET_SUPPORTING_WM_CHECK, WINDOW, screen_support_win);
/* set properties on the supporting window */
@ -297,7 +293,7 @@ gboolean screen_annex(void)
supported[i++] = OBT_PROP_ATOM(OB_CONTROL);
g_assert(i == num_support);
OBT_PROP_SETA32(RootWindow(obt_display, ob_screen),
OBT_PROP_SETA32(obt_root(ob_screen),
NET_SUPPORTED, ATOM, supported, num_support);
g_free(supported);
@ -331,13 +327,13 @@ static void screen_tell_ksplash(void)
something. oh well. */
e.xclient.type = ClientMessage;
e.xclient.display = obt_display;
e.xclient.window = RootWindow(obt_display, ob_screen);
e.xclient.window = obt_root(ob_screen);
e.xclient.message_type =
XInternAtom(obt_display, "_KDE_SPLASH_PROGRESS", False );
e.xclient.format = 8;
strcpy(e.xclient.data.b, "wm started");
XSendEvent(obt_display, RootWindow(obt_display, ob_screen),
False, SubstructureNotifyMask, &e );
XSendEvent(obt_display, obt_root(ob_screen),
False, SubstructureNotifyMask, &e);
}
void screen_startup(gboolean reconfig)
@ -361,9 +357,7 @@ void screen_startup(gboolean reconfig)
screen_resize();
/* have names already been set for the desktops? */
if (OBT_PROP_GETSS(RootWindow(obt_display, ob_screen),
NET_DESKTOP_NAMES, utf8, &names))
{
if (OBT_PROP_GETSS(obt_root(ob_screen), NET_DESKTOP_NAMES, utf8, &names)) {
g_strfreev(names);
namesexist = TRUE;
}
@ -384,7 +378,7 @@ void screen_startup(gboolean reconfig)
names[i] = g_strdup(it->data);
/* set the root window property */
OBT_PROP_SETSS(RootWindow(obt_display, ob_screen),
OBT_PROP_SETSS(obt_root(ob_screen),
NET_DESKTOP_NAMES, utf8, (const gchar**)names);
g_strfreev(names);
@ -395,7 +389,7 @@ void screen_startup(gboolean reconfig)
this will also set the default names from the config file up for
desktops that don't have names yet */
screen_num_desktops = 0;
if (OBT_PROP_GET32(RootWindow(obt_display, ob_screen),
if (OBT_PROP_GET32(obt_root(ob_screen),
NET_NUMBER_OF_DESKTOPS, CARDINAL, &d))
screen_set_num_desktops(d);
/* restore from session if possible */
@ -406,7 +400,7 @@ void screen_startup(gboolean reconfig)
screen_desktop = screen_num_desktops; /* something invalid */
/* start on the current desktop when a wm was already running */
if (OBT_PROP_GET32(RootWindow(obt_display, ob_screen),
if (OBT_PROP_GET32(obt_root(ob_screen),
NET_CURRENT_DESKTOP, CARDINAL, &d) &&
d < screen_num_desktops)
{
@ -421,7 +415,7 @@ void screen_startup(gboolean reconfig)
/* don't start in showing-desktop mode */
screen_showing_desktop = FALSE;
OBT_PROP_SET32(RootWindow(obt_display, ob_screen),
OBT_PROP_SET32(obt_root(ob_screen),
NET_SHOWING_DESKTOP, CARDINAL, screen_showing_desktop);
if (session_desktop_layout_present &&
@ -440,15 +434,14 @@ void screen_shutdown(gboolean reconfig)
if (reconfig)
return;
XSelectInput(obt_display, RootWindow(obt_display, ob_screen),
NoEventMask);
XSelectInput(obt_display, obt_root(ob_screen), NoEventMask);
/* we're not running here no more! */
OBT_PROP_ERASE(RootWindow(obt_display, ob_screen), OPENBOX_PID);
OBT_PROP_ERASE(obt_root(ob_screen), OPENBOX_PID);
/* not without us */
OBT_PROP_ERASE(RootWindow(obt_display, ob_screen), NET_SUPPORTED);
OBT_PROP_ERASE(obt_root(ob_screen), NET_SUPPORTED);
/* don't keep this mode */
OBT_PROP_ERASE(RootWindow(obt_display, ob_screen), NET_SHOWING_DESKTOP);
OBT_PROP_ERASE(obt_root(ob_screen), NET_SHOWING_DESKTOP);
XDestroyWindow(obt_display, screen_support_win);
@ -473,7 +466,7 @@ void screen_resize(void)
/* Set the _NET_DESKTOP_GEOMETRY hint */
screen_physical_size.width = geometry[0] = w;
screen_physical_size.height = geometry[1] = h;
OBT_PROP_SETA32(RootWindow(obt_display, ob_screen),
OBT_PROP_SETA32(obt_root(ob_screen),
NET_DESKTOP_GEOMETRY, CARDINAL, geometry, 2);
if (ob_state() == OB_STATE_STARTING)
@ -498,12 +491,11 @@ void screen_set_num_desktops(guint num)
old = screen_num_desktops;
screen_num_desktops = num;
OBT_PROP_SET32(RootWindow(obt_display, ob_screen),
NET_NUMBER_OF_DESKTOPS, CARDINAL, num);
OBT_PROP_SET32(obt_root(ob_screen), NET_NUMBER_OF_DESKTOPS, CARDINAL, num);
/* set the viewport hint */
viewport = g_new0(gulong, num * 2);
OBT_PROP_SETA32(RootWindow(obt_display, ob_screen),
OBT_PROP_SETA32(obt_root(ob_screen),
NET_DESKTOP_VIEWPORT, CARDINAL, viewport, num * 2);
g_free(viewport);
@ -599,8 +591,7 @@ void screen_set_desktop(guint num, gboolean dofocus)
if (previous == num) return;
OBT_PROP_SET32(RootWindow(obt_display, ob_screen),
NET_CURRENT_DESKTOP, CARDINAL, num);
OBT_PROP_SET32(obt_root(ob_screen), NET_CURRENT_DESKTOP, CARDINAL, num);
/* This whole thing decides when/how to save the screen_last_desktop so
that it can be restored later if you want */
@ -1089,7 +1080,7 @@ void screen_update_layout(void)
screen_desktop_layout.rows = 1;
screen_desktop_layout.columns = screen_num_desktops;
if (OBT_PROP_GETA32(RootWindow(obt_display, ob_screen),
if (OBT_PROP_GETA32(obt_root(ob_screen),
NET_DESKTOP_LAYOUT, CARDINAL, &data, &num)) {
if (num == 3 || num == 4) {
@ -1134,7 +1125,7 @@ void screen_update_desktop_names(void)
g_strfreev(screen_desktop_names);
screen_desktop_names = NULL;
if (OBT_PROP_GETSS(RootWindow(obt_display, ob_screen),
if (OBT_PROP_GETSS(obt_root(ob_screen),
NET_DESKTOP_NAMES, utf8, &screen_desktop_names))
for (i = 0; screen_desktop_names[i] && i < screen_num_desktops; ++i);
else
@ -1161,7 +1152,7 @@ void screen_update_desktop_names(void)
/* if we changed any names, then set the root property so we can
all agree on the names */
OBT_PROP_SETSS(RootWindow(obt_display, ob_screen), NET_DESKTOP_NAMES,
OBT_PROP_SETSS(obt_root(ob_screen), NET_DESKTOP_NAMES,
utf8, (const gchar**)screen_desktop_names);
}
@ -1229,8 +1220,7 @@ void screen_show_desktop(gboolean show, ObClient *show_only)
}
show = !!show; /* make it boolean */
OBT_PROP_SET32(RootWindow(obt_display, ob_screen),
NET_SHOWING_DESKTOP, CARDINAL, show);
OBT_PROP_SET32(obt_root(ob_screen), NET_SHOWING_DESKTOP, CARDINAL, show);
}
void screen_install_colormap(ObClient *client, gboolean install)
@ -1454,7 +1444,7 @@ void screen_update_areas(void)
/* all the work areas are not used here, only the ones for the first
monitor are */
OBT_PROP_SETA32(RootWindow(obt_display, ob_screen), NET_WORKAREA, CARDINAL,
OBT_PROP_SETA32(obt_root(ob_screen), NET_WORKAREA, CARDINAL,
dims, 4 * screen_num_desktops);
/* the area has changed, adjust all the windows if they need it */
@ -1696,10 +1686,10 @@ Rect* screen_physical_area_active(void)
void screen_set_root_cursor(void)
{
if (sn_app_starting())
XDefineCursor(obt_display, RootWindow(obt_display, ob_screen),
XDefineCursor(obt_display, obt_root(ob_screen),
ob_cursor(OB_CURSOR_BUSYPOINTER));
else
XDefineCursor(obt_display, RootWindow(obt_display, ob_screen),
XDefineCursor(obt_display, obt_root(ob_screen),
ob_cursor(OB_CURSOR_POINTER));
}
@ -1710,12 +1700,12 @@ gboolean screen_pointer_pos(gint *x, gint *y)
guint u;
gboolean ret;
ret = !!XQueryPointer(obt_display, RootWindow(obt_display, ob_screen),
ret = !!XQueryPointer(obt_display, obt_root(ob_screen),
&w, &w, x, y, &i, &i, &u);
if (!ret) {
for (i = 0; i < ScreenCount(obt_display); ++i)
if (i != ob_screen)
if (XQueryPointer(obt_display, RootWindow(obt_display, i),
if (XQueryPointer(obt_display, obt_root(i),
&w, &w, x, y, &i, &i, &u))
break;
}

View file

@ -54,8 +54,8 @@ void stacking_set_list(void)
}
}
OBT_PROP_SETA32(RootWindow(obt_display, ob_screen),
NET_CLIENT_LIST_STACKING, WINDOW, (gulong*)windows, i);
OBT_PROP_SETA32(obt_root(ob_screen), NET_CLIENT_LIST_STACKING, WINDOW,
(gulong*)windows, i);
g_free(windows);
}