Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Bug 621848 - Window loses focus when showing transient windows that do not take focus on map #1

Open
wants to merge 1 commit into from

1 participant

vingtetun
vingtetun

Hello,

This bug has been initially created because of the Firefox bug (https://bugzilla.mozilla.org/show_bug.cgi?id=526941) which use the type _NET_WM_WINDOW_TYPE_UTILITY when opening a panel window that does not steal the focus (the noautofocus attribute of the panel is set to "true" in xul).

Reading the code of src/core/window.c and the comment http://git.gnome.org/browse/metacity/tree/src/core/window.c?id=b272c4ca7f3a784d011eea5c3fd348011f8558b3#n2136 it looks like this code path is mostly designed for transient window but actually window of type _NET_WM_WINDOW_TYPE_UTILITY or of type _NET_WM_WINDOW_TYPE_TOOLBAR are also taking this path which seems unappropriated.

The patch just tweak the "if" to ignore them

vingtetun vingtetun Do not unfocus the parent window if the newly opened window is of
type META_WINDOW_UTILITY or META_WINDOW_TOOLBAR. Closes #621848.
12386de
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Showing 1 unique commit by 2 authors.

Jan 29, 2011
vingtetun vingtetun Do not unfocus the parent window if the newly opened window is of
type META_WINDOW_UTILITY or META_WINDOW_TOOLBAR. Closes #621848.
12386de
This page is out of date. Refresh to see the latest.

Showing 1 changed file with 8 additions and 1 deletion. Show diff stats Hide diff stats

  1. +8 1 src/core/window.c
9 src/core/window.c
@@ -2138,7 +2138,14 @@ meta_window_show (MetaWindow *window)
2138 2138 ( (!place_on_top_on_map && !takes_focus_on_map) ||
2139 2139 window_would_be_covered (window) )
2140 2140 ) {
2141   - if (meta_window_is_ancestor_of_transient (focus_window, window))
  2141 +
  2142 + /* META_WINDOW_UTILITY/META_WINDOW_TOOLBAR are usually small persistent
  2143 + * utility window such as toolbar, palette or toolbox and are not
  2144 + * considered transient since it is usual to keep them open while working
  2145 + */
  2146 + if ((window->type != META_WINDOW_UTILITY &&
  2147 + window->type != META_WINDOW_TOOLBAR) &&
  2148 + meta_window_is_ancestor_of_transient (focus_window, window))
2142 2149 {
2143 2150 /* This happens for error dialogs or alerts; these need to remain on
2144 2151 * top, but it would be confusing to have its ancestor remain

Tip: You can add notes to lines in a file. Hover to the left of a line to make a note

Something went wrong with that request. Please try again.