mirror of
https://github.com/brl/mutter.git
synced 2024-11-22 08:00:42 -05:00
Patch from Vytautas Liuolia to react to _NET_STARTUP_ID changes, as
2006-08-07 Elijah Newren <newren gmail com> Patch from Vytautas Liuolia to react to _NET_STARTUP_ID changes, as proposed for the new startup-notification/EWMH spec. #347515 * src/window-props.c (reload_net_startup_id): be sure to act on the new id instead of just recording it * src/window.[ch] (window_activate, meta_window_activate, meta_window_activate_with_workspace, meta_window_client_message): change window_activate() to take a workspace parameter instead of hardcoding to the current workspace, add meta_window_activate_with_workspace() function needed by reload_net_startup_id().
This commit is contained in:
parent
3917d818f5
commit
adc46fc970
15
ChangeLog
15
ChangeLog
@ -1,3 +1,18 @@
|
|||||||
|
2006-08-07 Elijah Newren <newren gmail com>
|
||||||
|
|
||||||
|
Patch from Vytautas Liuolia to react to _NET_STARTUP_ID changes,
|
||||||
|
as proposed for the new startup-notification/EWMH spec. #347515
|
||||||
|
|
||||||
|
* src/window-props.c (reload_net_startup_id): be sure to act on
|
||||||
|
the new id instead of just recording it
|
||||||
|
|
||||||
|
* src/window.[ch] (window_activate, meta_window_activate,
|
||||||
|
meta_window_activate_with_workspace, meta_window_client_message):
|
||||||
|
change window_activate() to take a workspace parameter instead of
|
||||||
|
hardcoding to the current workspace, add
|
||||||
|
meta_window_activate_with_workspace() function needed by
|
||||||
|
reload_net_startup_id().
|
||||||
|
|
||||||
2006-08-07 Thomas Thurman <thomas@thurman.org.uk>
|
2006-08-07 Thomas Thurman <thomas@thurman.org.uk>
|
||||||
|
|
||||||
* src/frames.h: add new MetaButtonSpace struct; use it for
|
* src/frames.h: add new MetaButtonSpace struct; use it for
|
||||||
|
@ -687,6 +687,9 @@ static void
|
|||||||
reload_net_startup_id (MetaWindow *window,
|
reload_net_startup_id (MetaWindow *window,
|
||||||
MetaPropValue *value)
|
MetaPropValue *value)
|
||||||
{
|
{
|
||||||
|
guint32 timestamp = window->net_wm_user_time;
|
||||||
|
MetaWorkspace *workspace = NULL;
|
||||||
|
|
||||||
g_free (window->startup_id);
|
g_free (window->startup_id);
|
||||||
|
|
||||||
if (value->type != META_PROP_VALUE_INVALID)
|
if (value->type != META_PROP_VALUE_INVALID)
|
||||||
@ -694,6 +697,22 @@ reload_net_startup_id (MetaWindow *window,
|
|||||||
else
|
else
|
||||||
window->startup_id = NULL;
|
window->startup_id = NULL;
|
||||||
|
|
||||||
|
/* Update timestamp and workspace on a running window */
|
||||||
|
if (!window->constructing)
|
||||||
|
{
|
||||||
|
window->initial_timestamp_set = 0;
|
||||||
|
window->initial_workspace_set = 0;
|
||||||
|
|
||||||
|
meta_screen_apply_startup_properties (window->screen, window);
|
||||||
|
|
||||||
|
if (window->initial_timestamp_set)
|
||||||
|
timestamp = window->initial_timestamp;
|
||||||
|
if (window->initial_workspace_set)
|
||||||
|
workspace = meta_screen_get_workspace_by_index (window->screen, window->initial_workspace);
|
||||||
|
|
||||||
|
meta_window_activate_with_workspace (window, timestamp, workspace);
|
||||||
|
}
|
||||||
|
|
||||||
meta_verbose ("New _NET_STARTUP_ID \"%s\" for %s\n",
|
meta_verbose ("New _NET_STARTUP_ID \"%s\" for %s\n",
|
||||||
window->startup_id ? window->startup_id : "unset",
|
window->startup_id ? window->startup_id : "unset",
|
||||||
window->desc);
|
window->desc);
|
||||||
|
29
src/window.c
29
src/window.c
@ -2489,7 +2489,8 @@ unminimize_window_and_all_transient_parents (MetaWindow *window)
|
|||||||
static void
|
static void
|
||||||
window_activate (MetaWindow *window,
|
window_activate (MetaWindow *window,
|
||||||
guint32 timestamp,
|
guint32 timestamp,
|
||||||
MetaClientType source_indication)
|
MetaClientType source_indication,
|
||||||
|
MetaWorkspace *workspace)
|
||||||
{
|
{
|
||||||
gboolean can_ignore_outdated_timestamps;
|
gboolean can_ignore_outdated_timestamps;
|
||||||
meta_topic (META_DEBUG_FOCUS,
|
meta_topic (META_DEBUG_FOCUS,
|
||||||
@ -2529,11 +2530,11 @@ window_activate (MetaWindow *window,
|
|||||||
/* disable show desktop mode unless we're a desktop component */
|
/* disable show desktop mode unless we're a desktop component */
|
||||||
maybe_leave_show_desktop_mode (window);
|
maybe_leave_show_desktop_mode (window);
|
||||||
|
|
||||||
/* Get window on current workspace */
|
/* Get window on current or given workspace */
|
||||||
if (!meta_window_located_on_workspace (window,
|
if (workspace == NULL)
|
||||||
window->screen->active_workspace))
|
workspace = window->screen->active_workspace;
|
||||||
meta_window_change_workspace (window,
|
if (!meta_window_located_on_workspace (window, workspace))
|
||||||
window->screen->active_workspace);
|
meta_window_change_workspace (window, workspace);
|
||||||
|
|
||||||
if (window->shaded)
|
if (window->shaded)
|
||||||
meta_window_unshade (window);
|
meta_window_unshade (window);
|
||||||
@ -2562,7 +2563,19 @@ meta_window_activate (MetaWindow *window,
|
|||||||
* we were such. If we change the pager behavior later, we could revisit
|
* we were such. If we change the pager behavior later, we could revisit
|
||||||
* this and just add extra flags to window_activate.
|
* this and just add extra flags to window_activate.
|
||||||
*/
|
*/
|
||||||
window_activate (window, timestamp, META_CLIENT_TYPE_PAGER);
|
window_activate (window, timestamp, META_CLIENT_TYPE_PAGER, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
meta_window_activate_with_workspace (MetaWindow *window,
|
||||||
|
guint32 timestamp,
|
||||||
|
MetaWorkspace *workspace)
|
||||||
|
{
|
||||||
|
/* We're not really a pager, but the behavior we want is the same as if
|
||||||
|
* we were such. If we change the pager behavior later, we could revisit
|
||||||
|
* this and just add extra flags to window_activate.
|
||||||
|
*/
|
||||||
|
window_activate (window, timestamp, META_CLIENT_TYPE_APPLICATION, workspace);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Manually fix all the weirdness explained in the big comment at the
|
/* Manually fix all the weirdness explained in the big comment at the
|
||||||
@ -4743,7 +4756,7 @@ meta_window_client_message (MetaWindow *window,
|
|||||||
/* Client using older EWMH _NET_ACTIVE_WINDOW without a timestamp */
|
/* Client using older EWMH _NET_ACTIVE_WINDOW without a timestamp */
|
||||||
timestamp = meta_display_get_current_time (window->display);
|
timestamp = meta_display_get_current_time (window->display);
|
||||||
|
|
||||||
window_activate (window, timestamp, source_indication);
|
window_activate (window, timestamp, source_indication, NULL);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -401,6 +401,10 @@ void meta_window_unstick (MetaWindow *window);
|
|||||||
|
|
||||||
void meta_window_activate (MetaWindow *window,
|
void meta_window_activate (MetaWindow *window,
|
||||||
guint32 current_time);
|
guint32 current_time);
|
||||||
|
void meta_window_activate_with_workspace (MetaWindow *window,
|
||||||
|
guint32 current_time,
|
||||||
|
MetaWorkspace *workspace);
|
||||||
|
|
||||||
void meta_window_make_fullscreen (MetaWindow *window);
|
void meta_window_make_fullscreen (MetaWindow *window);
|
||||||
void meta_window_unmake_fullscreen (MetaWindow *window);
|
void meta_window_unmake_fullscreen (MetaWindow *window);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user