make popup dialogs appear on the active monitor with xinerama
This commit is contained in:
parent
2b135c5356
commit
5579b28481
4 changed files with 26 additions and 5 deletions
|
@ -240,7 +240,7 @@ static void popup_render(ObFocusCyclePopup *p, const ObClient *c)
|
||||||
gint ml, mt, mr, mb;
|
gint ml, mt, mr, mb;
|
||||||
gint l, t, r, b;
|
gint l, t, r, b;
|
||||||
gint x, y, w, h;
|
gint x, y, w, h;
|
||||||
Rect *screen_area;
|
Rect *screen_area = NULL;
|
||||||
gint icons_per_row;
|
gint icons_per_row;
|
||||||
gint icon_rows;
|
gint icon_rows;
|
||||||
gint textx, texty, textw, texth;
|
gint textx, texty, textw, texth;
|
||||||
|
@ -252,8 +252,7 @@ static void popup_render(ObFocusCyclePopup *p, const ObClient *c)
|
||||||
const ObFocusCyclePopupTarget *newtarget;
|
const ObFocusCyclePopupTarget *newtarget;
|
||||||
gint newtargetx, newtargety;
|
gint newtargetx, newtargety;
|
||||||
|
|
||||||
/* XXX find the middle monitor? */
|
screen_area = screen_physical_area_monitor_active();
|
||||||
screen_area = screen_physical_area_monitor(0);
|
|
||||||
|
|
||||||
/* get the outside margins */
|
/* get the outside margins */
|
||||||
RrMargins(p->a_bg, &ml, &mt, &mr, &mb);
|
RrMargins(p->a_bg, &ml, &mt, &mr, &mb);
|
||||||
|
|
|
@ -87,6 +87,7 @@ static void set_curpos(KeyBindingTree *newpos)
|
||||||
if (curpos != NULL) {
|
if (curpos != NULL) {
|
||||||
gchar *text = NULL;
|
gchar *text = NULL;
|
||||||
GList *it;
|
GList *it;
|
||||||
|
Rect *a;
|
||||||
|
|
||||||
for (it = curpos->keylist; it; it = g_list_next(it)) {
|
for (it = curpos->keylist; it; it = g_list_next(it)) {
|
||||||
gchar *oldtext = text;
|
gchar *oldtext = text;
|
||||||
|
@ -97,7 +98,8 @@ static void set_curpos(KeyBindingTree *newpos)
|
||||||
g_free(oldtext);
|
g_free(oldtext);
|
||||||
}
|
}
|
||||||
|
|
||||||
popup_position(popup, NorthWestGravity, 10, 10);
|
a = screen_physical_area_monitor_active();
|
||||||
|
popup_position(popup, NorthWestGravity, a->x + 10, a->y + 10);
|
||||||
/* 1 second delay for the popup to show */
|
/* 1 second delay for the popup to show */
|
||||||
popup_delay_show(popup, G_USEC_PER_SEC, text);
|
popup_delay_show(popup, G_USEC_PER_SEC, text);
|
||||||
g_free(text);
|
g_free(text);
|
||||||
|
|
|
@ -731,7 +731,7 @@ void screen_desktop_popup(guint d, gboolean show)
|
||||||
if (!show) {
|
if (!show) {
|
||||||
pager_popup_hide(desktop_cycle_popup);
|
pager_popup_hide(desktop_cycle_popup);
|
||||||
} else {
|
} else {
|
||||||
a = screen_physical_area_monitor(0);
|
a = screen_physical_area_monitor_active();
|
||||||
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,
|
pager_popup_icon_size_multiplier(desktop_cycle_popup,
|
||||||
|
@ -1365,6 +1365,24 @@ Rect *screen_physical_area_monitor(guint head)
|
||||||
return &monitor_area[head];
|
return &monitor_area[head];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Rect *screen_physical_area_monitor_active()
|
||||||
|
{
|
||||||
|
Rect *a;
|
||||||
|
gint x, y;
|
||||||
|
|
||||||
|
if (focus_client)
|
||||||
|
a = screen_physical_area_monitor(client_monitor(focus_client));
|
||||||
|
else {
|
||||||
|
Rect mon;
|
||||||
|
if (screen_pointer_pos(&x, &y))
|
||||||
|
RECT_SET(mon, x, y, 1, 1);
|
||||||
|
else
|
||||||
|
RECT_SET(mon, 0, 0, 1, 1);
|
||||||
|
a = screen_physical_area_monitor(screen_find_monitor(&mon));
|
||||||
|
}
|
||||||
|
return a;
|
||||||
|
}
|
||||||
|
|
||||||
void screen_set_root_cursor()
|
void screen_set_root_cursor()
|
||||||
{
|
{
|
||||||
if (sn_app_starting())
|
if (sn_app_starting())
|
||||||
|
|
|
@ -98,6 +98,8 @@ Rect *screen_physical_area();
|
||||||
|
|
||||||
Rect *screen_physical_area_monitor(guint head);
|
Rect *screen_physical_area_monitor(guint head);
|
||||||
|
|
||||||
|
Rect *screen_physical_area_monitor_active();
|
||||||
|
|
||||||
Rect *screen_area(guint desktop);
|
Rect *screen_area(guint desktop);
|
||||||
|
|
||||||
Rect *screen_area_monitor(guint desktop, guint head);
|
Rect *screen_area_monitor(guint desktop, guint head);
|
||||||
|
|
Loading…
Reference in a new issue