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
This commit is contained in:
parent
df45b1e146
commit
9a3f05a780
4 changed files with 38 additions and 10 deletions
|
@ -1546,8 +1546,7 @@ void action_desktop_dir(union ActionData *data)
|
||||||
data->desktopdir.inter.final,
|
data->desktopdir.inter.final,
|
||||||
data->desktopdir.inter.cancel);
|
data->desktopdir.inter.cancel);
|
||||||
if (!data->sendtodir.inter.any.interactive ||
|
if (!data->sendtodir.inter.any.interactive ||
|
||||||
!data->sendtodir.inter.final ||
|
(data->sendtodir.inter.final && !data->sendtodir.inter.cancel))
|
||||||
data->sendtodir.inter.cancel)
|
|
||||||
{
|
{
|
||||||
if (d != screen_desktop) screen_set_desktop(d, TRUE);
|
if (d != screen_desktop) screen_set_desktop(d, TRUE);
|
||||||
}
|
}
|
||||||
|
@ -1566,8 +1565,7 @@ void action_send_to_desktop_dir(union ActionData *data)
|
||||||
data->sendtodir.inter.final,
|
data->sendtodir.inter.final,
|
||||||
data->sendtodir.inter.cancel);
|
data->sendtodir.inter.cancel);
|
||||||
if (!data->sendtodir.inter.any.interactive ||
|
if (!data->sendtodir.inter.any.interactive ||
|
||||||
!data->sendtodir.inter.final ||
|
(data->sendtodir.inter.final && !data->sendtodir.inter.cancel))
|
||||||
data->sendtodir.inter.cancel)
|
|
||||||
{
|
{
|
||||||
client_set_desktop(c, d, data->sendtodir.follow);
|
client_set_desktop(c, d, data->sendtodir.follow);
|
||||||
if (data->sendtodir.follow && d != screen_desktop)
|
if (data->sendtodir.follow && d != screen_desktop)
|
||||||
|
|
|
@ -39,6 +39,7 @@ ObPopup *popup_new()
|
||||||
self->x = self->y = self->textw = self->h = 0;
|
self->x = self->y = self->textw = self->h = 0;
|
||||||
self->a_bg = RrAppearanceCopy(ob_rr_theme->osd_hilite_bg);
|
self->a_bg = RrAppearanceCopy(ob_rr_theme->osd_hilite_bg);
|
||||||
self->a_text = RrAppearanceCopy(ob_rr_theme->osd_hilite_label);
|
self->a_text = RrAppearanceCopy(ob_rr_theme->osd_hilite_label);
|
||||||
|
self->iconwm = self->iconhm = 1;
|
||||||
|
|
||||||
attrib.override_redirect = True;
|
attrib.override_redirect = True;
|
||||||
self->bg = XCreateWindow(ob_display, RootWindow(ob_display, ob_screen),
|
self->bg = XCreateWindow(ob_display, RootWindow(ob_display, ob_screen),
|
||||||
|
@ -172,7 +173,7 @@ void popup_delay_show(ObPopup *self, gulong usec, gchar *text)
|
||||||
h = self->h;
|
h = self->h;
|
||||||
texth = h - emptyy;
|
texth = h - emptyy;
|
||||||
} else
|
} else
|
||||||
h = texth + emptyy;
|
h = texth * self->iconhm + emptyy;
|
||||||
|
|
||||||
if (self->textw)
|
if (self->textw)
|
||||||
textw = self->textw;
|
textw = self->textw;
|
||||||
|
@ -182,7 +183,8 @@ void popup_delay_show(ObPopup *self, gulong usec, gchar *text)
|
||||||
|
|
||||||
emptyx = l + r + ob_rr_theme->paddingx * 2;
|
emptyx = l + r + ob_rr_theme->paddingx * 2;
|
||||||
if (self->hasicon) {
|
if (self->hasicon) {
|
||||||
iconw = iconh = texth;
|
iconw = texth * self->iconwm;
|
||||||
|
iconh = texth * self->iconhm;
|
||||||
textx += iconw + ob_rr_theme->paddingx;
|
textx += iconw + ob_rr_theme->paddingx;
|
||||||
if (textw)
|
if (textw)
|
||||||
emptyx += ob_rr_theme->paddingx; /* between the icon and text */
|
emptyx += ob_rr_theme->paddingx; /* between the icon and text */
|
||||||
|
@ -322,6 +324,12 @@ void icon_popup_delay_show(ObIconPopup *self, gulong usec,
|
||||||
popup_delay_show(self->popup, usec, text);
|
popup_delay_show(self->popup, usec, text);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void icon_popup_icon_size_multiplier(ObIconPopup *self, guint wm, guint hm)
|
||||||
|
{
|
||||||
|
if (wm != 0) self->popup->iconwm = wm;
|
||||||
|
if (hm != 0) self->popup->iconhm = hm;
|
||||||
|
}
|
||||||
|
|
||||||
static void pager_popup_draw_icon(gint px, gint py, gint w, gint h,
|
static void pager_popup_draw_icon(gint px, gint py, gint w, gint h,
|
||||||
gpointer data)
|
gpointer data)
|
||||||
{
|
{
|
||||||
|
@ -492,3 +500,9 @@ void pager_popup_delay_show(ObPagerPopup *self, gulong usec,
|
||||||
|
|
||||||
popup_delay_show(self->popup, usec, text);
|
popup_delay_show(self->popup, usec, text);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void pager_popup_icon_size_multiplier(ObPagerPopup *self, guint wm, guint hm)
|
||||||
|
{
|
||||||
|
if (wm != 0) self->popup->iconwm = wm;
|
||||||
|
if (hm != 0) self->popup->iconhm = hm;
|
||||||
|
}
|
||||||
|
|
|
@ -49,6 +49,8 @@ struct _ObPopup
|
||||||
gint h;
|
gint h;
|
||||||
gint minw;
|
gint minw;
|
||||||
gint maxw;
|
gint maxw;
|
||||||
|
guint iconwm; /* icon width multiplier. multiplied by the normal width */
|
||||||
|
guint iconhm; /* icon height multiplier. multipled by the normal height */
|
||||||
gboolean mapped;
|
gboolean mapped;
|
||||||
gboolean delay_mapped;
|
gboolean delay_mapped;
|
||||||
|
|
||||||
|
@ -120,6 +122,7 @@ void icon_popup_delay_show(ObIconPopup *self, gulong usec,
|
||||||
#define icon_popup_text_width_to_strings(p, s, n) \
|
#define icon_popup_text_width_to_strings(p, s, n) \
|
||||||
popup_text_width_to_strings((p)->popup,(s),(n))
|
popup_text_width_to_strings((p)->popup,(s),(n))
|
||||||
#define icon_popup_set_text_align(p, j) popup_set_text_align((p)->popup,(j))
|
#define icon_popup_set_text_align(p, j) popup_set_text_align((p)->popup,(j))
|
||||||
|
void icon_popup_icon_size_multiplier(ObIconPopup *self, guint wm, guint hm);
|
||||||
|
|
||||||
ObPagerPopup *pager_popup_new();
|
ObPagerPopup *pager_popup_new();
|
||||||
void pager_popup_free(ObPagerPopup *self);
|
void pager_popup_free(ObPagerPopup *self);
|
||||||
|
@ -138,5 +141,6 @@ void pager_popup_delay_show(ObPagerPopup *self, gulong usec,
|
||||||
#define pager_popup_text_width_to_strings(p, s, n) \
|
#define pager_popup_text_width_to_strings(p, s, n) \
|
||||||
popup_text_width_to_strings((p)->popup,(s),(n))
|
popup_text_width_to_strings((p)->popup,(s),(n))
|
||||||
#define pager_popup_set_text_align(p, j) popup_set_text_align((p)->popup,(j))
|
#define pager_popup_set_text_align(p, j) popup_set_text_align((p)->popup,(j))
|
||||||
|
void pager_popup_icon_size_multiplier(ObPagerPopup *self, guint wm, guint hm);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -641,6 +641,11 @@ void screen_desktop_popup(guint d, gboolean show)
|
||||||
a = screen_physical_area_monitor(0);
|
a = screen_physical_area_monitor(0);
|
||||||
pager_popup_position(desktop_cycle_popup, CenterGravity,
|
pager_popup_position(desktop_cycle_popup, CenterGravity,
|
||||||
a->x + a->width / 2, a->y + a->height / 2);
|
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,
|
pager_popup_max_width(desktop_cycle_popup,
|
||||||
MAX(a->width/3, POPUP_WIDTH));
|
MAX(a->width/3, POPUP_WIDTH));
|
||||||
pager_popup_show(desktop_cycle_popup, screen_desktop_names[d], d);
|
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,
|
guint screen_cycle_desktop(ObDirection dir, gboolean wrap, gboolean linear,
|
||||||
gboolean dialog, gboolean done, gboolean cancel)
|
gboolean dialog, gboolean done, gboolean cancel)
|
||||||
{
|
{
|
||||||
guint d, r, c;
|
guint r, c;
|
||||||
|
static guint d = (guint)-1;
|
||||||
d = screen_desktop;
|
guint ret;
|
||||||
|
|
||||||
if ((cancel || done) && dialog)
|
if ((cancel || done) && dialog)
|
||||||
goto show_cycle_dialog;
|
goto show_cycle_dialog;
|
||||||
|
|
||||||
|
if (d == (guint)-1)
|
||||||
|
d = screen_desktop;
|
||||||
get_row_col(d, &r, &c);
|
get_row_col(d, &r, &c);
|
||||||
|
|
||||||
if (linear) {
|
if (linear) {
|
||||||
|
@ -772,7 +779,12 @@ show_cycle_dialog:
|
||||||
screen_desktop_popup(d, TRUE);
|
screen_desktop_popup(d, TRUE);
|
||||||
} else
|
} else
|
||||||
screen_desktop_popup(0, FALSE);
|
screen_desktop_popup(0, FALSE);
|
||||||
return d;
|
ret = d;
|
||||||
|
|
||||||
|
if (!dialog || cancel || done)
|
||||||
|
d = (guint)-1;
|
||||||
|
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
void screen_update_layout()
|
void screen_update_layout()
|
||||||
|
|
Loading…
Reference in a new issue