This commit is contained in:
markt 2006-07-29 06:28:58 +00:00
parent 98fba4fd1a
commit f66d91cf22
4 changed files with 17 additions and 56 deletions

View file

@ -1,5 +1,11 @@
(Format: Year/Month/Day) (Format: Year/Month/Day)
Changes for 1.0rc3: Changes for 1.0rc3:
*06/07/29:
* Make _NET_CLIENT_LIST report windows in creation order - still need to fix
_NET_CLIENT_LIST_STACKING (Mark)
FocusControl.hh Ewmh.cc
* Set _NET_WM_DESKTOP appropriately on remembered windows (Mark)
Window.cc Ewmh.cc
*06/07/27: *06/07/27:
* Don't change the order of creating windows with transients on restart. * Don't change the order of creating windows with transients on restart.
Rather, just move the transient to the end of the list. This preserves the Rather, just move the transient to the end of the list. This preserves the

View file

@ -31,6 +31,7 @@
#include "WinClientUtil.hh" #include "WinClientUtil.hh"
#include "fluxbox.hh" #include "fluxbox.hh"
#include "FbWinFrameTheme.hh" #include "FbWinFrameTheme.hh"
#include "FocusControl.hh"
#include "FbTk/App.hh" #include "FbTk/App.hh"
#include "FbTk/FbWindow.hh" #include "FbTk/FbWindow.hh"
@ -366,29 +367,10 @@ void Ewmh::updateClientClose(WinClient &winclient){
} }
void Ewmh::updateClientList(BScreen &screen) { void Ewmh::updateClientList(BScreen &screen) {
size_t num=0;
BScreen::Workspaces::const_iterator workspace_it = std::list<WinClient *> creation_order_list = screen.focusControl().creationOrderList();
screen.getWorkspacesList().begin();
const BScreen::Workspaces::const_iterator workspace_it_end =
screen.getWorkspacesList().end();
for (; workspace_it != workspace_it_end; ++workspace_it) {
Workspace::Windows::iterator win_it =
(*workspace_it)->windowList().begin();
Workspace::Windows::iterator win_it_end =
(*workspace_it)->windowList().end();
for (; win_it != win_it_end; ++win_it) {
num += (*win_it)->numClients();
}
}
// and count icons
BScreen::Icons::const_iterator icon_it = screen.iconList().begin();
BScreen::Icons::const_iterator icon_it_end = screen.iconList().end();
for (; icon_it != icon_it_end; ++icon_it) {
num += (*icon_it)->numClients();
}
size_t num = creation_order_list.size();
Window *wl = FB_new_nothrow Window[num]; Window *wl = FB_new_nothrow Window[num];
if (wl == 0) { if (wl == 0) {
_FB_USES_NLS; _FB_USES_NLS;
@ -397,39 +379,12 @@ void Ewmh::updateClientList(BScreen &screen) {
return; return;
} }
//start the iterator from begining
workspace_it = screen.getWorkspacesList().begin();
int win=0; int win=0;
for (; workspace_it != workspace_it_end; ++workspace_it) { std::list<WinClient *>::iterator client_it = creation_order_list.begin();
std::list<WinClient *>::iterator client_it_end = creation_order_list.end();
for (; client_it != client_it_end; ++client_it)
wl[win++] = (*client_it)->window();
// Fill in array of window ID's
Workspace::Windows::const_iterator it =
(*workspace_it)->windowList().begin();
Workspace::Windows::const_iterator it_end =
(*workspace_it)->windowList().end();
for (; it != it_end; ++it) {
if ((*it)->numClients() == 1) {
wl[win++] = (*it)->clientWindow();
} else {
// add every client in fluxboxwindow to list window list
std::list<WinClient *>::iterator client_it =
(*it)->clientList().begin();
std::list<WinClient *>::iterator client_it_end =
(*it)->clientList().end();
for (; client_it != client_it_end; ++client_it)
wl[win++] = (*client_it)->window();
}
}
}
// plus iconified windows
icon_it = screen.iconList().begin();
for (; icon_it != icon_it_end; ++icon_it) {
FluxboxWindow::ClientList::iterator client_it = (*icon_it)->clientList().begin();
FluxboxWindow::ClientList::iterator client_it_end = (*icon_it)->clientList().end();
for (; client_it != client_it_end; ++client_it)
wl[win++] = (*client_it)->window();
}
//number of windows to show in client list //number of windows to show in client list
num = win; num = win;
@ -703,9 +658,7 @@ void Ewmh::updateHints(FluxboxWindow &win) {
} }
void Ewmh::updateWorkspace(FluxboxWindow &win) { void Ewmh::updateWorkspace(FluxboxWindow &win) {
long workspace = win.isInitialized() ? long workspace = win.workspaceNumber();
win.workspaceNumber() :
win.screen().currentWorkspaceID();
if (win.isStuck()) if (win.isStuck())
workspace = -1; // appear on all desktops/workspaces workspace = -1; // appear on all desktops/workspaces

View file

@ -94,6 +94,8 @@ public:
WinClient *lastFocusedWindow(int workspace); WinClient *lastFocusedWindow(int workspace);
WinClient *lastFocusedWindow(FluxboxWindow &group, WinClient *ignore_client); WinClient *lastFocusedWindow(FluxboxWindow &group, WinClient *ignore_client);
FocusedWindows &creationOrderList() { return m_creation_order_list; }
void removeClient(WinClient &client); void removeClient(WinClient &client);
void shutdown(); void shutdown();

View file

@ -424,7 +424,7 @@ void FluxboxWindow::init() {
m_last_focus_time.tv_sec = m_last_focus_time.tv_usec = 0; m_last_focus_time.tv_sec = m_last_focus_time.tv_usec = 0;
m_blackbox_attrib.workspace = m_workspace_number = ~0; m_blackbox_attrib.workspace = m_workspace_number = m_screen.currentWorkspaceID();
m_blackbox_attrib.flags = m_blackbox_attrib.attrib = m_blackbox_attrib.stack = 0; m_blackbox_attrib.flags = m_blackbox_attrib.attrib = m_blackbox_attrib.stack = 0;
m_blackbox_attrib.premax_x = m_blackbox_attrib.premax_y = 0; m_blackbox_attrib.premax_x = m_blackbox_attrib.premax_y = 0;