summaryrefslogtreecommitdiff
path: root/openbox/screen.c
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2007-05-10 16:04:08 +0000
committerDana Jansens <danakj@orodu.net>2007-05-10 16:04:08 +0000
commit9a3f05a780f8cbfeb68626552d25c48ab0245ca3 (patch)
treeb643583a54465307cb72fa8e7deb8fa8acec6136 /openbox/screen.c
parentdf45b1e146b31e31f7cdf9142ffc04f44d6c9649 (diff)
don't make interactive desktop cycling switch until you release the mods. this is needed because otherwise focus moves around during the grab and applications get confused. :|
change the pager popup to resize based on the layout so the squares can be bigger
Diffstat (limited to 'openbox/screen.c')
-rw-r--r--openbox/screen.c20
1 files changed, 16 insertions, 4 deletions
diff --git a/openbox/screen.c b/openbox/screen.c
index 51f226a5..9ac0ea98 100644
--- a/openbox/screen.c
+++ b/openbox/screen.c
@@ -641,6 +641,11 @@ void screen_desktop_popup(guint d, gboolean show)
a = screen_physical_area_monitor(0);
pager_popup_position(desktop_cycle_popup, CenterGravity,
a->x + a->width / 2, a->y + a->height / 2);
+ pager_popup_icon_size_multiplier(desktop_cycle_popup,
+ screen_desktop_layout.columns /
+ screen_desktop_layout.rows,
+ screen_desktop_layout.rows/
+ screen_desktop_layout.columns);
pager_popup_max_width(desktop_cycle_popup,
MAX(a->width/3, POPUP_WIDTH));
pager_popup_show(desktop_cycle_popup, screen_desktop_names[d], d);
@@ -650,13 +655,15 @@ void screen_desktop_popup(guint d, gboolean show)
guint screen_cycle_desktop(ObDirection dir, gboolean wrap, gboolean linear,
gboolean dialog, gboolean done, gboolean cancel)
{
- guint d, r, c;
-
- d = screen_desktop;
+ guint r, c;
+ static guint d = (guint)-1;
+ guint ret;
if ((cancel || done) && dialog)
goto show_cycle_dialog;
+ if (d == (guint)-1)
+ d = screen_desktop;
get_row_col(d, &r, &c);
if (linear) {
@@ -772,7 +779,12 @@ show_cycle_dialog:
screen_desktop_popup(d, TRUE);
} else
screen_desktop_popup(0, FALSE);
- return d;
+ ret = d;
+
+ if (!dialog || cancel || done)
+ d = (guint)-1;
+
+ return ret;
}
void screen_update_layout()