diff options
| author | Brandon Schaefer <brandon.schaefer@canonical.com> | 2013-01-09 11:41:24 -0800 |
|---|---|---|
| committer | Brandon Schaefer <brandon.schaefer@canonical.com> | 2013-01-09 11:41:24 -0800 |
| commit | 8ca6673b30012f18ef35ae71f5214d5dee9d3e85 (patch) | |
| tree | 7918ffa0b9b89929815102eea1bf30bd64e2bbb0 | |
| parent | 17df6c486669db119a192780aeba1a56f48ac8df (diff) | |
* Better way to do this...
(bzr r3024.1.6)
| -rw-r--r-- | unity-shared/BamfApplicationManager.cpp | 16 |
1 files changed, 6 insertions, 10 deletions
diff --git a/unity-shared/BamfApplicationManager.cpp b/unity-shared/BamfApplicationManager.cpp index b210c2b3e..8192265a8 100644 --- a/unity-shared/BamfApplicationManager.cpp +++ b/unity-shared/BamfApplicationManager.cpp @@ -541,15 +541,15 @@ ApplicationWindowPtr Manager::GetActiveWindow() if (!active_win) return result; - std::vector<Window> const& our_xids = nux::XInputWindow::NativeHandleList(); - Window xid = bamf_window_get_xid(active_win); - // If the active window is a dock type, then we want the first visible, non-dock type. - if ((active_win && bamf_window_get_window_type(active_win) == BAMF_WINDOW_DOCK)) + if (bamf_window_get_window_type(active_win) == BAMF_WINDOW_DOCK) { LOG_DEBUG(logger) << "Is a dock, looking at the window stack."; + std::shared_ptr<GList> windows(bamf_matcher_get_window_stack_for_monitor(matcher_, -1), g_list_free); WindowManager& wm = WindowManager::Default(); + active_win = nullptr; + for (GList *l = windows.get(); l; l = l->next) { if (!BAMF_IS_WINDOW(l->data)) @@ -560,20 +560,16 @@ ApplicationWindowPtr Manager::GetActiveWindow() auto win = static_cast<BamfWindow*>(l->data); auto view = static_cast<BamfView*>(l->data); - xid = bamf_window_get_xid(win); + auto xid = bamf_window_get_xid(win); if (bamf_view_is_user_visible(view) && bamf_window_get_window_type(win) != BAMF_WINDOW_DOCK && wm.IsWindowOnCurrentDesktop(xid) && - wm.IsWindowVisible(xid) && - std::find(our_xids.begin(), our_xids.end(), xid) == our_xids.end()) + wm.IsWindowVisible(xid)) { active_win = win; } } - - if (bamf_window_get_window_type(active_win) == BAMF_WINDOW_DOCK) - active_win = nullptr; } auto view = reinterpret_cast<BamfView*>(active_win); |
