From 6357583c396382dd6ed8ac42004177f204fabe62 Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Thu, 10 Jul 2003 05:44:23 +0000 Subject: [PATCH] rename 'xinerama' stuff to 'monitors' to be more generic and descriptive. --- openbox/client.c | 20 +++---- openbox/client.h | 2 +- openbox/event.c | 4 +- openbox/extensions.c | 3 +- openbox/focus.c | 2 +- openbox/menu.c | 6 +-- openbox/moveresize.c | 2 +- openbox/screen.c | 96 ++++++++++++++++++--------------- openbox/screen.h | 10 ++-- plugins/menu/client_menu.c | 2 + plugins/placement/placement.c | 4 +- plugins/resistance/resistance.c | 4 +- 12 files changed, 81 insertions(+), 74 deletions(-) diff --git a/openbox/client.c b/openbox/client.c index 13b2e9c0..bdf9ed0d 100644 --- a/openbox/client.c +++ b/openbox/client.c @@ -1613,8 +1613,8 @@ void client_configure(Client *self, Corner anchor, int x, int y, int w, int h, 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 @@ void client_configure(Client *self, Corner anchor, int x, int y, int w, int h, } 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 @@ void client_fullscreen(Client *self, gboolean fs, gboolean savearea) 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 @@ void client_maximize(Client *self, gboolean max, int dir, gboolean savearea) 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 @@ void client_set_layer(Client *self, int layer) 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; } diff --git a/openbox/client.h b/openbox/client.h index bee3b5d7..ede9df66 100644 --- a/openbox/client.h +++ b/openbox/client.h @@ -508,6 +508,6 @@ Client *client_find_directional(Client *c, Direction dir); */ void client_set_layer(Client *self, int layer); -guint client_xinerama_area(Client *self); +guint client_monitor(Client *self); #endif diff --git a/openbox/event.c b/openbox/event.c index bb76f2fd..6260e912 100644 --- a/openbox/event.c +++ b/openbox/event.c @@ -595,9 +595,7 @@ static void event_handle_root(XEvent *e) #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: ; diff --git a/openbox/extensions.c b/openbox/extensions.c index 73e610cb..ec53e0a7 100644 --- a/openbox/extensions.c +++ b/openbox/extensions.c @@ -70,7 +70,8 @@ void extensions_xinerama_screens(Rect **xin_areas, guint *nxin) *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 */ diff --git a/openbox/focus.c b/openbox/focus.c index 8b7eb29a..12d30d27 100644 --- a/openbox/focus.c +++ b/openbox/focus.c @@ -250,7 +250,7 @@ static void popup_cycle(Client *c, gboolean show) 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); diff --git a/openbox/menu.c b/openbox/menu.c index f7eef7fb..23bb1128 100644 --- a/openbox/menu.c +++ b/openbox/menu.c @@ -403,8 +403,8 @@ void menu_control_show(Menu *self, int x, int y, Client *client) { 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 @@ void menu_control_mouseover(MenuEntry *self, gboolean enter) { /* 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 - diff --git a/openbox/moveresize.c b/openbox/moveresize.c index 570283c4..63de5c5b 100644 --- a/openbox/moveresize.c +++ b/openbox/moveresize.c @@ -82,7 +82,7 @@ static void popup_coords(char *format, int a, int b) 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); diff --git a/openbox/screen.c b/openbox/screen.c index deb3d3fb..75cc3c4c 100644 --- a/openbox/screen.c +++ b/openbox/screen.c @@ -31,7 +31,7 @@ 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 @@ void screen_startup() 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,11 +228,20 @@ void screen_shutdown() 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; screen_physical_size.height = geometry[1] = h; @@ -510,8 +518,8 @@ void screen_update_areas() 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 @@ void screen_update_areas() 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 @@ void screen_update_areas() 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 @@ void screen_update_areas() /* 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 @@ void screen_update_areas() } } - 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 @@ void screen_update_areas() } } - 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 @@ void screen_update_areas() } 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 @@ void screen_update_areas() 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_area_xinerama(guint desktop, guint head) 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() diff --git a/openbox/screen.h b/openbox/screen.h index 21d05e47..42e3dc17 100644 --- a/openbox/screen.h +++ b/openbox/screen.h @@ -11,11 +11,9 @@ struct Client; /*! 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 @@ void screen_startup(); 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 diff --git a/plugins/menu/client_menu.c b/plugins/menu/client_menu.c index 67c17acd..acb33cd5 100644 --- a/plugins/menu/client_menu.c +++ b/plugins/menu/client_menu.c @@ -56,6 +56,7 @@ void client_send_to_update(Menu *self) } } +#if 0 void client_menu_show(Menu *self, int x, int y, Client *client) { int newy; @@ -82,6 +83,7 @@ void client_menu_show(Menu *self, int x, int y, Client *client) menu_hide(self->open_submenu); } } +#endif void plugin_setup_config() { } diff --git a/plugins/placement/placement.c b/plugins/placement/placement.c index 5f962e47..589e0a30 100644 --- a/plugins/placement/placement.c +++ b/plugins/placement/placement.c @@ -32,8 +32,8 @@ static void place_random(Client *c) 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; diff --git a/plugins/resistance/resistance.c b/plugins/resistance/resistance.c index aa60b2b1..31844752 100644 --- a/plugins/resistance/resistance.c +++ b/plugins/resistance/resistance.c @@ -108,8 +108,8 @@ static void resist_move(Client *c, int *x, int *y) } /* 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; -- 2.45.2