mirror of
https://github.com/brl/mutter.git
synced 2024-11-25 01:20:42 -05:00
src/screen.c: (set_supported_hint), (set_work_area_hint): Its
2002-06-25 Mark McLoughlin <mark@skynet.ie> * src/display.[ch]: (meta_display_open): src/screen.c: (set_supported_hint), (set_work_area_hint): Its _NET_WORKAREA, not _NET_WM_WORKAREA silly :-) 2002-06-25 Mark McLoughlin <mark@skynet.ie> * src/screen.[ch]: (update_num_workspaces), recalc workarea hint when new workspaces created. Fixes bug that workarea not calculated until first non-dock window is mapped. (set_work_area_hint), (set_work_area_idle_func), (meta_screen_queue_workarea_recalc): move all this stuff from workspace.c. * src/workspace.c: (meta_workspace_invalidate_work_area): use meta_screen_queue_workarea_recalc.
This commit is contained in:
parent
86b34a45b1
commit
d7b4eec74a
20
ChangeLog
20
ChangeLog
@ -1,3 +1,23 @@
|
|||||||
|
2002-06-25 Mark McLoughlin <mark@skynet.ie>
|
||||||
|
|
||||||
|
* src/display.[ch]: (meta_display_open):
|
||||||
|
src/screen.c: (set_supported_hint), (set_work_area_hint):
|
||||||
|
Its _NET_WORKAREA, not _NET_WM_WORKAREA silly :-)
|
||||||
|
|
||||||
|
2002-06-25 Mark McLoughlin <mark@skynet.ie>
|
||||||
|
|
||||||
|
* src/screen.[ch]:
|
||||||
|
(update_num_workspaces), recalc workarea hint when
|
||||||
|
new workspaces created. Fixes bug that workarea
|
||||||
|
not calculated until first non-dock window is
|
||||||
|
mapped.
|
||||||
|
(set_work_area_hint), (set_work_area_idle_func),
|
||||||
|
(meta_screen_queue_workarea_recalc): move all this
|
||||||
|
stuff from workspace.c.
|
||||||
|
|
||||||
|
* src/workspace.c: (meta_workspace_invalidate_work_area):
|
||||||
|
use meta_screen_queue_workarea_recalc.
|
||||||
|
|
||||||
2002-06-23 Gediminas Paulauskas <menesis@delfi.lt>
|
2002-06-23 Gediminas Paulauskas <menesis@delfi.lt>
|
||||||
|
|
||||||
* src/themes/Bright/metacity-theme-1.xml: Update with border-only
|
* src/themes/Bright/metacity-theme-1.xml: Update with border-only
|
||||||
|
@ -218,7 +218,7 @@ meta_display_open (const char *name)
|
|||||||
"_NET_WM_PING",
|
"_NET_WM_PING",
|
||||||
"_NET_WM_PID",
|
"_NET_WM_PID",
|
||||||
"WM_CLIENT_MACHINE",
|
"WM_CLIENT_MACHINE",
|
||||||
"_NET_WM_WORKAREA",
|
"_NET_WORKAREA",
|
||||||
"_NET_SHOW_DESKTOP",
|
"_NET_SHOW_DESKTOP",
|
||||||
"_NET_DESKTOP_LAYOUT",
|
"_NET_DESKTOP_LAYOUT",
|
||||||
"MANAGER",
|
"MANAGER",
|
||||||
@ -348,7 +348,7 @@ meta_display_open (const char *name)
|
|||||||
display->atom_net_wm_ping = atoms[53];
|
display->atom_net_wm_ping = atoms[53];
|
||||||
display->atom_net_wm_pid = atoms[54];
|
display->atom_net_wm_pid = atoms[54];
|
||||||
display->atom_wm_client_machine = atoms[55];
|
display->atom_wm_client_machine = atoms[55];
|
||||||
display->atom_net_wm_workarea = atoms[56];
|
display->atom_net_workarea = atoms[56];
|
||||||
display->atom_net_show_desktop = atoms[57];
|
display->atom_net_show_desktop = atoms[57];
|
||||||
display->atom_net_desktop_layout = atoms[58];
|
display->atom_net_desktop_layout = atoms[58];
|
||||||
display->atom_manager = atoms[59];
|
display->atom_manager = atoms[59];
|
||||||
|
@ -128,7 +128,7 @@ struct _MetaDisplay
|
|||||||
Atom atom_net_wm_pid;
|
Atom atom_net_wm_pid;
|
||||||
Atom atom_wm_client_machine;
|
Atom atom_wm_client_machine;
|
||||||
Atom atom_net_wm_state_fullscreen;
|
Atom atom_net_wm_state_fullscreen;
|
||||||
Atom atom_net_wm_workarea;
|
Atom atom_net_workarea;
|
||||||
Atom atom_net_show_desktop;
|
Atom atom_net_show_desktop;
|
||||||
Atom atom_net_desktop_layout;
|
Atom atom_net_desktop_layout;
|
||||||
Atom atom_manager;
|
Atom atom_manager;
|
||||||
|
73
src/screen.c
73
src/screen.c
@ -114,7 +114,7 @@ set_supported_hint (MetaScreen *screen)
|
|||||||
atoms[26] = screen->display->atom_net_wm_state_fullscreen;
|
atoms[26] = screen->display->atom_net_wm_state_fullscreen;
|
||||||
atoms[27] = screen->display->atom_net_wm_ping;
|
atoms[27] = screen->display->atom_net_wm_ping;
|
||||||
atoms[28] = screen->display->atom_net_active_window;
|
atoms[28] = screen->display->atom_net_active_window;
|
||||||
atoms[29] = screen->display->atom_net_wm_workarea;
|
atoms[29] = screen->display->atom_net_workarea;
|
||||||
atoms[30] = screen->display->atom_net_show_desktop;
|
atoms[30] = screen->display->atom_net_show_desktop;
|
||||||
atoms[31] = screen->display->atom_net_desktop_layout;
|
atoms[31] = screen->display->atom_net_desktop_layout;
|
||||||
atoms[32] = screen->display->atom_net_desktop_names;
|
atoms[32] = screen->display->atom_net_desktop_names;
|
||||||
@ -815,6 +815,8 @@ update_num_workspaces (MetaScreen *screen)
|
|||||||
meta_workspace_new (screen);
|
meta_workspace_new (screen);
|
||||||
++i;
|
++i;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
meta_screen_queue_workarea_recalc (screen);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -1252,6 +1254,75 @@ meta_create_offscreen_window (Display *xdisplay,
|
|||||||
&attrs);
|
&attrs);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
set_work_area_hint (MetaScreen *screen)
|
||||||
|
{
|
||||||
|
int num_workspaces;
|
||||||
|
GList *tmp_list;
|
||||||
|
unsigned long *data, *tmp;
|
||||||
|
MetaRectangle area;
|
||||||
|
|
||||||
|
num_workspaces = meta_screen_get_n_workspaces (screen);
|
||||||
|
data = g_new (unsigned long, num_workspaces * 4);
|
||||||
|
tmp_list = screen->display->workspaces;
|
||||||
|
tmp = data;
|
||||||
|
|
||||||
|
while (tmp_list != NULL)
|
||||||
|
{
|
||||||
|
MetaWorkspace *workspace = tmp_list->data;
|
||||||
|
|
||||||
|
if (workspace->screen == screen)
|
||||||
|
{
|
||||||
|
meta_workspace_get_work_area (workspace, &area);
|
||||||
|
tmp[0] = area.x;
|
||||||
|
tmp[1] = area.y;
|
||||||
|
tmp[2] = area.width;
|
||||||
|
tmp[3] = area.height;
|
||||||
|
|
||||||
|
tmp += 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
tmp_list = tmp_list->next;
|
||||||
|
}
|
||||||
|
|
||||||
|
meta_error_trap_push (screen->display);
|
||||||
|
XChangeProperty (screen->display->xdisplay, screen->xroot,
|
||||||
|
screen->display->atom_net_workarea,
|
||||||
|
XA_CARDINAL, 32, PropModeReplace,
|
||||||
|
(guchar*) data, num_workspaces*4);
|
||||||
|
g_free (data);
|
||||||
|
return meta_error_trap_pop (screen->display);
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
set_work_area_idle_func (MetaScreen *screen)
|
||||||
|
{
|
||||||
|
meta_topic (META_DEBUG_WORKAREA,
|
||||||
|
"Running work area idle function\n");
|
||||||
|
|
||||||
|
screen->work_area_idle = 0;
|
||||||
|
|
||||||
|
set_work_area_hint (screen);
|
||||||
|
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
meta_screen_queue_workarea_recalc (MetaScreen *screen)
|
||||||
|
{
|
||||||
|
/* Recompute work area in an idle */
|
||||||
|
if (screen->work_area_idle == 0)
|
||||||
|
{
|
||||||
|
meta_topic (META_DEBUG_WORKAREA,
|
||||||
|
"Adding work area hint idle function\n");
|
||||||
|
screen->work_area_idle =
|
||||||
|
g_idle_add_full (META_PRIORITY_WORK_AREA_HINT,
|
||||||
|
(GSourceFunc) set_work_area_idle_func,
|
||||||
|
screen,
|
||||||
|
NULL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
meta_screen_calc_workspace_layout (MetaScreen *screen,
|
meta_screen_calc_workspace_layout (MetaScreen *screen,
|
||||||
int num_workspaces,
|
int num_workspaces,
|
||||||
|
@ -111,6 +111,7 @@ const MetaXineramaScreenInfo* meta_screen_get_xinerama_for_window (MetaScreen *s
|
|||||||
|
|
||||||
void meta_screen_update_workspace_layout (MetaScreen *screen);
|
void meta_screen_update_workspace_layout (MetaScreen *screen);
|
||||||
void meta_screen_update_workspace_names (MetaScreen *screen);
|
void meta_screen_update_workspace_names (MetaScreen *screen);
|
||||||
|
void meta_screen_queue_workarea_recalc (MetaScreen *screen);
|
||||||
|
|
||||||
Window meta_create_offscreen_window (Display *xdisplay,
|
Window meta_create_offscreen_window (Display *xdisplay,
|
||||||
Window parent);
|
Window parent);
|
||||||
@ -121,7 +122,3 @@ void meta_screen_calc_workspace_layout (MetaScreen *screen,
|
|||||||
int *c);
|
int *c);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -29,7 +29,6 @@ void meta_workspace_queue_calc_showing (MetaWorkspace *workspace);
|
|||||||
|
|
||||||
static int set_number_of_spaces_hint (MetaScreen *screen);
|
static int set_number_of_spaces_hint (MetaScreen *screen);
|
||||||
static int set_active_space_hint (MetaScreen *screen);
|
static int set_active_space_hint (MetaScreen *screen);
|
||||||
static int set_work_area_hint (MetaScreen *screen);
|
|
||||||
|
|
||||||
MetaWorkspace*
|
MetaWorkspace*
|
||||||
meta_workspace_new (MetaScreen *screen)
|
meta_workspace_new (MetaScreen *screen)
|
||||||
@ -343,63 +342,6 @@ set_active_space_hint (MetaScreen *screen)
|
|||||||
return meta_error_trap_pop (screen->display);
|
return meta_error_trap_pop (screen->display);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
|
||||||
set_work_area_hint (MetaScreen *screen)
|
|
||||||
{
|
|
||||||
int num_workspaces;
|
|
||||||
GList *tmp_list;
|
|
||||||
unsigned long *data, *tmp;
|
|
||||||
MetaRectangle area;
|
|
||||||
|
|
||||||
num_workspaces = meta_screen_get_n_workspaces (screen);
|
|
||||||
data = g_new (unsigned long, num_workspaces * 4);
|
|
||||||
tmp_list = screen->display->workspaces;
|
|
||||||
tmp = data;
|
|
||||||
|
|
||||||
while (tmp_list != NULL)
|
|
||||||
{
|
|
||||||
MetaWorkspace *workspace = tmp_list->data;
|
|
||||||
|
|
||||||
if (workspace->screen == screen)
|
|
||||||
{
|
|
||||||
meta_workspace_get_work_area (workspace, &area);
|
|
||||||
tmp[0] = area.x;
|
|
||||||
tmp[1] = area.y;
|
|
||||||
tmp[2] = area.width;
|
|
||||||
tmp[3] = area.height;
|
|
||||||
|
|
||||||
tmp += 4;
|
|
||||||
}
|
|
||||||
|
|
||||||
tmp_list = tmp_list->next;
|
|
||||||
}
|
|
||||||
|
|
||||||
meta_error_trap_push (screen->display);
|
|
||||||
XChangeProperty (screen->display->xdisplay, screen->xroot,
|
|
||||||
screen->display->atom_net_wm_workarea,
|
|
||||||
XA_CARDINAL, 32, PropModeReplace,
|
|
||||||
(guchar*) data, num_workspaces*4);
|
|
||||||
g_free (data);
|
|
||||||
return meta_error_trap_pop (screen->display);
|
|
||||||
}
|
|
||||||
|
|
||||||
static gboolean
|
|
||||||
set_work_area_idle_func (void *data)
|
|
||||||
{
|
|
||||||
MetaScreen *screen;
|
|
||||||
|
|
||||||
meta_topic (META_DEBUG_WORKAREA,
|
|
||||||
"Running work area idle function\n");
|
|
||||||
|
|
||||||
screen = data;
|
|
||||||
|
|
||||||
screen->work_area_idle = 0;
|
|
||||||
|
|
||||||
set_work_area_hint (screen);
|
|
||||||
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
meta_workspace_invalidate_work_area (MetaWorkspace *workspace)
|
meta_workspace_invalidate_work_area (MetaWorkspace *workspace)
|
||||||
{
|
{
|
||||||
@ -434,17 +376,7 @@ meta_workspace_invalidate_work_area (MetaWorkspace *workspace)
|
|||||||
|
|
||||||
g_list_free (windows);
|
g_list_free (windows);
|
||||||
|
|
||||||
/* Recompute work area in an idle */
|
meta_screen_queue_workarea_recalc (workspace->screen);
|
||||||
if (workspace->screen->work_area_idle == 0)
|
|
||||||
{
|
|
||||||
meta_topic (META_DEBUG_WORKAREA,
|
|
||||||
"Adding work area hint idle function\n");
|
|
||||||
workspace->screen->work_area_idle =
|
|
||||||
g_idle_add_full (META_PRIORITY_WORK_AREA_HINT,
|
|
||||||
set_work_area_idle_func,
|
|
||||||
workspace->screen,
|
|
||||||
NULL);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
Loading…
Reference in New Issue
Block a user