all repos — openbox @ 6357583c396382dd6ed8ac42004177f204fabe62

openbox fork - make it a bit more like ryudo

rename 'xinerama' stuff to 'monitors' to be more generic and descriptive.
Dana Jansens danakj@orodu.net
commit

6357583c396382dd6ed8ac42004177f204fabe62

parent

416b9d5f5f53468f954abbdffbc40003032c7f9a

M openbox/client.copenbox/client.c

@@ -1613,8 +1613,8 @@ #endif

Rect *a; guint i; - i = client_xinerama_area(self); - a = screen_physical_area_xinerama(i); + i = client_monitor(self); + a = screen_physical_area_monitor(i); #ifdef VIDMODE if (i == 0 && /* primary head */

@@ -1640,7 +1640,7 @@ user = FALSE; /* ignore that increment etc shit when in fullscreen */

} else { Rect *a; - a = screen_area_xinerama(self->desktop, client_xinerama_area(self)); + a = screen_area_monitor(self->desktop, client_monitor(self)); /* set the size and position if maximized */ if (self->max_horz) {

@@ -1845,7 +1845,7 @@ gint32 *dimensions;

Rect *a; /* pick some fallbacks... */ - a = screen_area_xinerama(self->desktop, 0); + a = screen_area_monitor(self->desktop, 0); x = a->x + a->width / 4; y = a->y + a->height / 4; w = a->width / 2;

@@ -2004,7 +2004,7 @@ gint32 *dimensions;

Rect *a; /* pick some fallbacks... */ - a = screen_area_xinerama(self->desktop, 0); + a = screen_area_monitor(self->desktop, 0); if (dir == 0 || dir == 1) { /* horz */ x = a->x + a->width / 4; w = a->width / 2;

@@ -2566,17 +2566,17 @@ client_calc_layer(self);

client_change_state(self); /* reflect this in the state hints */ } -guint client_xinerama_area(Client *self) +guint client_monitor(Client *self) { guint i; - for (i = 0; i < screen_num_xin_areas; ++i) { - Rect *area = screen_physical_area_xinerama(i); + for (i = 0; i < screen_num_monitors; ++i) { + Rect *area = screen_physical_area_monitor(i); if (RECT_INTERSECTS_RECT(*area, self->frame->area)) break; } - if (i == screen_num_xin_areas) i = 0; - g_assert(i < screen_num_xin_areas); + if (i == screen_num_monitors) i = 0; + g_assert(i < screen_num_monitors); return i; }
M openbox/client.hopenbox/client.h

@@ -508,6 +508,6 @@ > 0 indicates the client should be placed above other clients.

*/ void client_set_layer(Client *self, int layer); -guint client_xinerama_area(Client *self); +guint client_monitor(Client *self); #endif
M openbox/event.copenbox/event.c

@@ -595,9 +595,7 @@ case ConfigureNotify:

#ifdef XRANDR XRRUpdateConfiguration(e); #endif - if (e->xconfigure.width != screen_physical_size.width || - e->xconfigure.height != screen_physical_size.height) - screen_resize(e->xconfigure.width, e->xconfigure.height); + screen_resize(); break; default: ;
M openbox/extensions.copenbox/extensions.c

@@ -70,7 +70,8 @@ {

*nxin = 1; *xin_areas = g_new(Rect, *nxin + 1); RECT_SET((*xin_areas)[0], 0, 0, - screen_physical_size.width, screen_physical_size.height); + WidthOfScreen(ScreenOfDisplay(ob_display, ob_screen)), + HeightOfScreen(ScreenOfDisplay(ob_display, ob_screen))); } /* returns one extra with the total area in it */
M openbox/focus.copenbox/focus.c

@@ -250,7 +250,7 @@ Rect *a;

Client *p = c; char *title; - a = screen_physical_area_xinerama(0); + a = screen_physical_area_monitor(0); popup_position(focus_cycle_popup, CenterGravity, a->x + a->width / 2, a->y + a->height / 2); /* popup_size(focus_cycle_popup, a->height/2, a->height/16);
M openbox/menu.copenbox/menu.c

@@ -403,8 +403,8 @@ Rect *a = NULL;

g_assert(!self->invalid); - for (i = 0; i < screen_num_xin_areas; ++i) { - a = screen_physical_area_xinerama(i); + for (i = 0; i < screen_num_monitors; ++i) { + a = screen_physical_area_monitor(i); if (RECT_CONTAINS(*a, x, y)) break; }

@@ -449,7 +449,7 @@

/* need to get the width. is this bad?*/ menu_render(self->submenu); - a = screen_physical_area_xinerama(self->parent->xin_area); + a = screen_physical_area_monitor(self->parent->xin_area); if (self->submenu->size.width + x >= a->x + a->width) x = self->parent->location.x - self->submenu->size.width -
M openbox/moveresize.copenbox/moveresize.c

@@ -82,7 +82,7 @@ char *text;

Rect *area; text = g_strdup_printf(format, a, b); - area = screen_physical_area_xinerama(0); + area = screen_physical_area_monitor(0); popup_position(popup, NorthWestGravity, POPUP_X + area->x, POPUP_Y + area->y); popup_show(popup, text, NULL);
M openbox/screen.copenbox/screen.c

@@ -31,7 +31,7 @@ SubstructureNotifyMask | SubstructureRedirectMask | \

ButtonPressMask | ButtonReleaseMask | ButtonMotionMask) guint screen_num_desktops = 0; -guint screen_num_xin_areas = 0; +guint screen_num_monitors = 0; guint screen_desktop = 0; Size screen_physical_size; gboolean screen_showing_desktop;

@@ -40,7 +40,7 @@ char **screen_desktop_names = NULL;

static Rect **area = NULL; /* array of desktop holding array of xinerama areas */ -static Rect *xin_areas = NULL; +static Rect *monitor_area = NULL; static Window support_window = None; #ifdef USE_LIBSN

@@ -178,8 +178,7 @@ GSList *it;

guint i; /* get the initial size */ - screen_resize(WidthOfScreen(ScreenOfDisplay(ob_display, ob_screen)), - HeightOfScreen(ScreenOfDisplay(ob_display, ob_screen))); + screen_resize(); /* set the names */ screen_desktop_names = g_new(char*,

@@ -229,10 +228,19 @@ g_free(*r);

g_free(area); } -void screen_resize(int w, int h) +void screen_resize() { + static int oldw = 0, oldh = 0; + int w, h; GList *it; guint32 geometry[2]; + + w = WidthOfScreen(ScreenOfDisplay(ob_display, ob_screen)); + h = HeightOfScreen(ScreenOfDisplay(ob_display, ob_screen)); + + if (w == oldw && h == oldh) return; + + oldw = w; oldh = h; /* Set the _NET_DESKTOP_GEOMETRY hint */ screen_physical_size.width = geometry[0] = w;

@@ -510,8 +518,8 @@ Rect **old_area = area;

Rect **rit; GList *it; - g_free(xin_areas); - extensions_xinerama_screens(&xin_areas, &screen_num_xin_areas); + g_free(monitor_area); + extensions_xinerama_screens(&monitor_area, &screen_num_monitors); if (area) { for (i = 0; area[i]; ++i)

@@ -521,7 +529,7 @@ }

area = g_new(Rect*, screen_num_desktops + 2); for (i = 0; i < screen_num_desktops + 1; ++i) - area[i] = g_new(Rect, screen_num_xin_areas + 1); + area[i] = g_new(Rect, screen_num_monitors + 1); area[i] = NULL; dims = g_new(guint32, 4 * screen_num_desktops);

@@ -532,18 +540,18 @@ Strut s;

int l, r, t, b; /* calc the xinerama areas */ - for (x = 0; x < screen_num_xin_areas; ++x) { - area[i][x] = xin_areas[x]; + for (x = 0; x < screen_num_monitors; ++x) { + area[i][x] = monitor_area[x]; if (x == 0) { - l = xin_areas[x].x; - t = xin_areas[x].y; - r = xin_areas[x].x + xin_areas[x].width - 1; - b = xin_areas[x].y + xin_areas[x].height - 1; + l = monitor_area[x].x; + t = monitor_area[x].y; + r = monitor_area[x].x + monitor_area[x].width - 1; + b = monitor_area[x].y + monitor_area[x].height - 1; } else { - l = MIN(l, xin_areas[x].x); - t = MIN(t, xin_areas[x].y); - r = MAX(r, xin_areas[x].x + xin_areas[x].width - 1); - b = MAX(b, xin_areas[x].y + xin_areas[x].height - 1); + l = MIN(l, monitor_area[x].x); + t = MIN(t, monitor_area[x].y); + r = MAX(r, monitor_area[x].x + monitor_area[x].width - 1); + b = MAX(b, monitor_area[x].y + monitor_area[x].height - 1); } } RECT_SET(area[i][x], l, t, r - l + 1, b - t + 1);

@@ -559,10 +567,10 @@ int o;

/* find the left-most xin heads, i do this in 2 loops :| */ o = area[i][0].x; - for (x = 1; x < screen_num_xin_areas; ++x) + for (x = 1; x < screen_num_monitors; ++x) o = MIN(o, area[i][x].x); - for (x = 0; x < screen_num_xin_areas; ++x) { + for (x = 0; x < screen_num_monitors; ++x) { int edge = o + s.left - area[i][x].x; if (edge > 0) { area[i][x].x += edge;

@@ -570,18 +578,18 @@ area[i][x].width -= edge;

} } - area[i][screen_num_xin_areas].x += s.left; - area[i][screen_num_xin_areas].width -= s.left; + area[i][screen_num_monitors].x += s.left; + area[i][screen_num_monitors].width -= s.left; } if (s.top) { int o; /* find the left-most xin heads, i do this in 2 loops :| */ o = area[i][0].y; - for (x = 1; x < screen_num_xin_areas; ++x) + for (x = 1; x < screen_num_monitors; ++x) o = MIN(o, area[i][x].y); - for (x = 0; x < screen_num_xin_areas; ++x) { + for (x = 0; x < screen_num_monitors; ++x) { int edge = o + s.top - area[i][x].y; if (edge > 0) { area[i][x].y += edge;

@@ -589,47 +597,47 @@ area[i][x].height -= edge;

} } - area[i][screen_num_xin_areas].y += s.top; - area[i][screen_num_xin_areas].height -= s.top; + area[i][screen_num_monitors].y += s.top; + area[i][screen_num_monitors].height -= s.top; } if (s.right) { int o; /* find the bottom-most xin heads, i do this in 2 loops :| */ o = area[i][0].x + area[i][0].width - 1; - for (x = 1; x < screen_num_xin_areas; ++x) + for (x = 1; x < screen_num_monitors; ++x) o = MAX(o, area[i][x].x + area[i][x].width - 1); - for (x = 0; x < screen_num_xin_areas; ++x) { + for (x = 0; x < screen_num_monitors; ++x) { int edge = (area[i][x].x + area[i][x].width - 1) - (o - s.right); if (edge > 0) area[i][x].width -= edge; } - area[i][screen_num_xin_areas].width -= s.right; + area[i][screen_num_monitors].width -= s.right; } if (s.bottom) { int o; /* find the bottom-most xin heads, i do this in 2 loops :| */ o = area[i][0].y + area[i][0].height - 1; - for (x = 1; x < screen_num_xin_areas; ++x) + for (x = 1; x < screen_num_monitors; ++x) o = MAX(o, area[i][x].y + area[i][x].height - 1); - for (x = 0; x < screen_num_xin_areas; ++x) { + for (x = 0; x < screen_num_monitors; ++x) { int edge = (area[i][x].y + area[i][x].height - 1) - (o - s.bottom); if (edge > 0) area[i][x].height -= edge; } - area[i][screen_num_xin_areas].height -= s.bottom; + area[i][screen_num_monitors].height -= s.bottom; } /* XXX when dealing with partial struts, if its in a single xinerama area, then only subtract it from that area's space - for (x = 0; x < screen_num_xin_areas; ++x) { + for (x = 0; x < screen_num_monitors; ++x) { GList *it;

@@ -662,10 +670,10 @@ client_reconfigure(c);

} if (i < screen_num_desktops) { /* don't set these for the 'all desktops' area */ - dims[(i * 4) + 0] = area[i][screen_num_xin_areas].x; - dims[(i * 4) + 1] = area[i][screen_num_xin_areas].y; - dims[(i * 4) + 2] = area[i][screen_num_xin_areas].width; - dims[(i * 4) + 3] = area[i][screen_num_xin_areas].height; + dims[(i * 4) + 0] = area[i][screen_num_monitors].x; + dims[(i * 4) + 1] = area[i][screen_num_monitors].y; + dims[(i * 4) + 2] = area[i][screen_num_monitors].width; + dims[(i * 4) + 3] = area[i][screen_num_monitors].height; } } PROP_SETA32(ob_root, net_workarea, cardinal,

@@ -676,12 +684,12 @@ }

Rect *screen_area(guint desktop) { - return screen_area_xinerama(desktop, screen_num_xin_areas); + return screen_area_monitor(desktop, screen_num_monitors); } -Rect *screen_area_xinerama(guint desktop, guint head) +Rect *screen_area_monitor(guint desktop, guint head) { - if (head > screen_num_xin_areas) + if (head > screen_num_monitors) return NULL; if (desktop >= screen_num_desktops) { if (desktop == DESKTOP_ALL)

@@ -693,14 +701,14 @@ }

Rect *screen_physical_area() { - return screen_physical_area_xinerama(screen_num_xin_areas); + return screen_physical_area_monitor(screen_num_monitors); } -Rect *screen_physical_area_xinerama(guint head) +Rect *screen_physical_area_monitor(guint head) { - if (head > screen_num_xin_areas) + if (head > screen_num_monitors) return NULL; - return &xin_areas[head]; + return &monitor_area[head]; } static void set_root_cursor()
M openbox/screen.hopenbox/screen.h

@@ -11,11 +11,9 @@

/*! The number of available desktops */ extern guint screen_num_desktops; /*! The number of virtual "xinerama" screens/heads */ -extern guint screen_num_xin_areas; +extern guint screen_num_monitors; /*! The current desktop */ extern guint screen_desktop; -/*! The size of the screen */ -extern Size screen_physical_size; /*! Are we in showing-desktop mode? */ extern gboolean screen_showing_desktop;

@@ -45,7 +43,7 @@ /*! Free resources */

void screen_shutdown(); /*! Figure out the new size of the screen and adjust stuff for it */ -void screen_resize(int w, int h); +void screen_resize(); /*! Change the number of available desktops */ void screen_set_num_desktops(guint num);

@@ -70,10 +68,10 @@ void screen_update_areas();

Rect *screen_physical_area(); -Rect *screen_physical_area_xinerama(guint head); +Rect *screen_physical_area_monitor(guint head); Rect *screen_area(guint desktop); -Rect *screen_area_xinerama(guint desktop, guint head); +Rect *screen_area_monitor(guint desktop, guint head); #endif
M plugins/menu/client_menu.cplugins/menu/client_menu.c

@@ -56,6 +56,7 @@ menu_render_full(self);

} } +#if 0 void client_menu_show(Menu *self, int x, int y, Client *client) { int newy;

@@ -82,6 +83,7 @@ } else if (self->shown && self->open_submenu) {

menu_hide(self->open_submenu); } } +#endif void plugin_setup_config() { }
M plugins/placement/placement.cplugins/placement/placement.c

@@ -32,8 +32,8 @@ Rect *area;

if (ob_state == State_Starting) return; - area = screen_area_xinerama(c->desktop, - g_random_int_range(0, screen_num_xin_areas)); + area = screen_area_monitor(c->desktop, + g_random_int_range(0, screen_num_monitors)); l = area->x; t = area->y;
M plugins/resistance/resistance.cplugins/resistance/resistance.c

@@ -108,8 +108,8 @@ if (snapx && snapy) break;

} /* get the screen boundaries */ - for (i = 0; i < screen_num_xin_areas; ++i) { - area = screen_area_xinerama(c->desktop, i); + for (i = 0; i < screen_num_monitors; ++i) { + area = screen_area_monitor(c->desktop, i); if (!RECT_INTERSECTS_RECT(*area, c->frame->area)) continue;