mirror of
https://github.com/brl/mutter.git
synced 2024-11-25 01:20:42 -05:00
default to topleft starting corner. (meta_screen_update_workspace_layout):
2002-10-01 Mark McLoughlin <mark@skynet.ie> * src/screen.c: (meta_screen_new): default to topleft starting corner. (meta_screen_update_workspace_layout): handle new property format : orient,x,y,starting corner. Fixes #89373. * src/screen.h: add MetaScreenCorner enum.
This commit is contained in:
parent
437093dee0
commit
791ab07bd4
10
ChangeLog
10
ChangeLog
@ -1,3 +1,13 @@
|
|||||||
|
2002-10-01 Mark McLoughlin <mark@skynet.ie>
|
||||||
|
|
||||||
|
* src/screen.c: (meta_screen_new): default to
|
||||||
|
topleft starting corner.
|
||||||
|
(meta_screen_update_workspace_layout): handle
|
||||||
|
new property format : orient,x,y,starting corner.
|
||||||
|
Fixes #89373.
|
||||||
|
|
||||||
|
* src/screen.h: add MetaScreenCorner enum.
|
||||||
|
|
||||||
2002-10-01 Havoc Pennington <hp@pobox.com>
|
2002-10-01 Havoc Pennington <hp@pobox.com>
|
||||||
|
|
||||||
* src/window.c (constrain_position): always align fullscreen
|
* src/window.c (constrain_position): always align fullscreen
|
||||||
|
48
src/screen.c
48
src/screen.c
@ -524,6 +524,7 @@ meta_screen_new (MetaDisplay *display,
|
|||||||
screen->rows_of_workspaces = 1;
|
screen->rows_of_workspaces = 1;
|
||||||
screen->columns_of_workspaces = -1;
|
screen->columns_of_workspaces = -1;
|
||||||
screen->vertical_workspaces = FALSE;
|
screen->vertical_workspaces = FALSE;
|
||||||
|
screen->starting_corner = META_SCREEN_TOPLEFT;
|
||||||
|
|
||||||
screen->xinerama_infos = NULL;
|
screen->xinerama_infos = NULL;
|
||||||
screen->n_xinerama_infos = 0;
|
screen->n_xinerama_infos = 0;
|
||||||
@ -1059,6 +1060,8 @@ meta_screen_ensure_workspace_popup (MetaScreen *screen)
|
|||||||
|
|
||||||
meta_screen_calc_workspace_layout (screen, len, &rows, &cols);
|
meta_screen_calc_workspace_layout (screen, len, &rows, &cols);
|
||||||
|
|
||||||
|
/* FIXME: handle screen->starting_corner
|
||||||
|
*/
|
||||||
if (screen->vertical_workspaces)
|
if (screen->vertical_workspaces)
|
||||||
{
|
{
|
||||||
int j, k, iter;
|
int j, k, iter;
|
||||||
@ -1242,6 +1245,11 @@ meta_screen_get_current_xinerama (MetaScreen *screen)
|
|||||||
#define _NET_WM_ORIENTATION_HORZ 0
|
#define _NET_WM_ORIENTATION_HORZ 0
|
||||||
#define _NET_WM_ORIENTATION_VERT 1
|
#define _NET_WM_ORIENTATION_VERT 1
|
||||||
|
|
||||||
|
#define _NET_WM_TOPLEFT 0
|
||||||
|
#define _NET_WM_TOPRIGHT 1
|
||||||
|
#define _NET_WM_BOTTOMRIGHT 2
|
||||||
|
#define _NET_WM_BOTTOMLEFT 3
|
||||||
|
|
||||||
void
|
void
|
||||||
meta_screen_update_workspace_layout (MetaScreen *screen)
|
meta_screen_update_workspace_layout (MetaScreen *screen)
|
||||||
{
|
{
|
||||||
@ -1256,7 +1264,7 @@ meta_screen_update_workspace_layout (MetaScreen *screen)
|
|||||||
screen->display->atom_net_desktop_layout,
|
screen->display->atom_net_desktop_layout,
|
||||||
&list, &n_items))
|
&list, &n_items))
|
||||||
{
|
{
|
||||||
if (n_items == 3)
|
if (n_items == 3 || n_items == 4)
|
||||||
{
|
{
|
||||||
int cols, rows;
|
int cols, rows;
|
||||||
|
|
||||||
@ -1273,8 +1281,8 @@ meta_screen_update_workspace_layout (MetaScreen *screen)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
rows = list[1];
|
cols = list[1];
|
||||||
cols = list[2];
|
rows = list[2];
|
||||||
|
|
||||||
if (rows <= 0 && cols <= 0)
|
if (rows <= 0 && cols <= 0)
|
||||||
{
|
{
|
||||||
@ -1292,20 +1300,43 @@ meta_screen_update_workspace_layout (MetaScreen *screen)
|
|||||||
else
|
else
|
||||||
screen->columns_of_workspaces = -1;
|
screen->columns_of_workspaces = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (n_items == 4)
|
||||||
|
{
|
||||||
|
switch (list[3])
|
||||||
|
{
|
||||||
|
case _NET_WM_TOPLEFT:
|
||||||
|
screen->starting_corner = META_SCREEN_TOPLEFT;
|
||||||
|
break;
|
||||||
|
case _NET_WM_TOPRIGHT:
|
||||||
|
screen->starting_corner = META_SCREEN_TOPRIGHT;
|
||||||
|
break;
|
||||||
|
case _NET_WM_BOTTOMRIGHT:
|
||||||
|
screen->starting_corner = META_SCREEN_BOTTOMRIGHT;
|
||||||
|
break;
|
||||||
|
case _NET_WM_BOTTOMLEFT:
|
||||||
|
screen->starting_corner = META_SCREEN_BOTTOMLEFT;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
meta_warning ("Someone set a weird starting corner in _NET_DESKTOP_LAYOUT\n");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
meta_warning ("Someone set _NET_DESKTOP_LAYOUT to %d integers instead of 3\n",
|
meta_warning ("Someone set _NET_DESKTOP_LAYOUT to %d integers instead of 4 "
|
||||||
n_items);
|
"(3 is accepted for backwards compat)\n", n_items);
|
||||||
}
|
}
|
||||||
|
|
||||||
meta_XFree (list);
|
meta_XFree (list);
|
||||||
}
|
}
|
||||||
|
|
||||||
meta_verbose ("Workspace layout rows = %d cols = %d orientation = %d\n",
|
meta_verbose ("Workspace layout rows = %d cols = %d orientation = %d starting corner = %d\n",
|
||||||
screen->rows_of_workspaces,
|
screen->rows_of_workspaces,
|
||||||
screen->columns_of_workspaces,
|
screen->columns_of_workspaces,
|
||||||
screen->vertical_workspaces);
|
screen->vertical_workspaces,
|
||||||
|
screen->starting_corner);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -1448,7 +1479,8 @@ meta_screen_calc_workspace_layout (MetaScreen *screen,
|
|||||||
int cols, rows;
|
int cols, rows;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 3 rows, 4 columns, horizontal layout:
|
* 3 rows, 4 columns, horizontal layout
|
||||||
|
* and starting from top left:
|
||||||
* +--+--+--+--+
|
* +--+--+--+--+
|
||||||
* | 1| 2| 3| 4|
|
* | 1| 2| 3| 4|
|
||||||
* +--+--+--+--+
|
* +--+--+--+--+
|
||||||
|
@ -40,6 +40,14 @@ struct _MetaXineramaScreenInfo
|
|||||||
typedef void (* MetaScreenWindowFunc) (MetaScreen *screen, MetaWindow *window,
|
typedef void (* MetaScreenWindowFunc) (MetaScreen *screen, MetaWindow *window,
|
||||||
gpointer user_data);
|
gpointer user_data);
|
||||||
|
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
META_SCREEN_TOPLEFT,
|
||||||
|
META_SCREEN_TOPRIGHT,
|
||||||
|
META_SCREEN_BOTTOMLEFT,
|
||||||
|
META_SCREEN_BOTTOMRIGHT
|
||||||
|
} MetaScreenCorner;
|
||||||
|
|
||||||
struct _MetaScreen
|
struct _MetaScreen
|
||||||
{
|
{
|
||||||
MetaDisplay *display;
|
MetaDisplay *display;
|
||||||
@ -74,6 +82,7 @@ struct _MetaScreen
|
|||||||
|
|
||||||
int rows_of_workspaces;
|
int rows_of_workspaces;
|
||||||
int columns_of_workspaces;
|
int columns_of_workspaces;
|
||||||
|
MetaScreenCorner starting_corner;
|
||||||
guint vertical_workspaces : 1;
|
guint vertical_workspaces : 1;
|
||||||
|
|
||||||
guint keys_grabbed : 1;
|
guint keys_grabbed : 1;
|
||||||
|
@ -458,6 +458,8 @@ meta_workspace_get_neighbor (MetaWorkspace *workspace,
|
|||||||
|
|
||||||
/* FIXME someone who's better or more patient at math puzzles
|
/* FIXME someone who's better or more patient at math puzzles
|
||||||
* should clean this up. ;-)
|
* should clean this up. ;-)
|
||||||
|
* This'll have to someone with mega patience 'cause you'll
|
||||||
|
* have to handle screen->starting_corner also.
|
||||||
*/
|
*/
|
||||||
if (workspace->screen->vertical_workspaces)
|
if (workspace->screen->vertical_workspaces)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user