Fixed gnome init problems (Simon)

This commit is contained in:
rathnor 2003-02-16 17:57:54 +00:00
parent 9a82a5b1dc
commit 79aec8465f
5 changed files with 34 additions and 18 deletions

View file

@ -3,6 +3,8 @@ Changes for 0.1.15:
*03/02/16: *03/02/16:
* Added layer submenu to window menu + small fix (Simon) * Added layer submenu to window menu + small fix (Simon)
Screen.cc Window.hh/cc fluxbox.hh Screen.cc Window.hh/cc fluxbox.hh
* Fixed gnome workspace initialisation issues (Simon)
Gnome.cc Window.hh/cc Screen.cc
*03/02/15: *03/02/15:
* Added Style menu and fixed theme listeners for FbWinFrame, Menu and Toolbar (Henrik) * Added Style menu and fixed theme listeners for FbWinFrame, Menu and Toolbar (Henrik)
ToolbarTheme.hh/cc, Toolbar.hh/cc, FbTk Menu.hh/cc, FbTk MenuTheme.hh/cc, ToolbarTheme.hh/cc, Toolbar.hh/cc, FbTk Menu.hh/cc, FbTk MenuTheme.hh/cc,

View file

@ -19,7 +19,7 @@
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE. // DEALINGS IN THE SOFTWARE.
// $Id: Gnome.cc,v 1.9 2003/02/09 14:11:12 rathnor Exp $ // $Id: Gnome.cc,v 1.10 2003/02/16 17:57:54 rathnor Exp $
#include "Gnome.hh" #include "Gnome.hh"
@ -107,13 +107,14 @@ void Gnome::setupWindow(FluxboxWindow &win) {
XFree (data); XFree (data);
} }
// load gnome layer atom // load gnome workspace atom
if (XGetWindowProperty(disp, win.getClientWindow(), if (XGetWindowProperty(disp, win.getClientWindow(),
m_gnome_wm_win_workspace, 0, 1, False, XA_CARDINAL, m_gnome_wm_win_workspace, 0, 1, False, XA_CARDINAL,
&ret_type, &fmt, &nitems, &bytes_after, &ret_type, &fmt, &nitems, &bytes_after,
(unsigned char **) &data) == Success && data) { (unsigned char **) &data) == Success && data) {
flags = *data; unsigned int workspace_num = *data;
win.getScreen()->reassociateWindow(&win, flags ,false); if (win.getWorkspaceNumber() != workspace_num)
win.getScreen()->reassociateWindow(&win, workspace_num, false);
XFree (data); XFree (data);
} }

View file

@ -22,7 +22,7 @@
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE. // DEALINGS IN THE SOFTWARE.
// $Id: Screen.cc,v 1.108 2003/02/16 16:45:23 fluxgen Exp $ // $Id: Screen.cc,v 1.109 2003/02/16 17:57:54 rathnor Exp $
#include "Screen.hh" #include "Screen.hh"
@ -1105,7 +1105,11 @@ FluxboxWindow *BScreen::createWindow(Window client) {
Fluxbox::instance()->saveWindowSearch(client, win); Fluxbox::instance()->saveWindowSearch(client, win);
Fluxbox::instance()->attachSignals(*win); Fluxbox::instance()->attachSignals(*win);
setupWindowActions(*win); setupWindowActions(*win);
} }
if (win->getWorkspaceNumber() == getCurrentWorkspaceID() || win->isStuck()) {
win->show();
XSync(FbTk::App::instance()->display(), False);
}
return win; return win;
} }
@ -1127,8 +1131,8 @@ void BScreen::setupWindowActions(FluxboxWindow &win) {
CommandRef close_cmd(new WindowCmd(win, &FluxboxWindow::close)); CommandRef close_cmd(new WindowCmd(win, &FluxboxWindow::close));
CommandRef shade_cmd(new WindowCmd(win, &FluxboxWindow::shade)); CommandRef shade_cmd(new WindowCmd(win, &FluxboxWindow::shade));
CommandRef raise_cmd(new WindowCmd(win, &FluxboxWindow::raise)); CommandRef raise_cmd(new WindowCmd(win, &FluxboxWindow::raise));
CommandRef lower_cmd(new WindowCmd(win, &FluxboxWindow::lower));
CommandRef raise_and_focus_cmd(new WindowCmd(win, &FluxboxWindow::raiseAndFocus)); CommandRef raise_and_focus_cmd(new WindowCmd(win, &FluxboxWindow::raiseAndFocus));
CommandRef lower_cmd(new WindowCmd(win, &FluxboxWindow::raise));
CommandRef stick_cmd(new WindowCmd(win, &FluxboxWindow::stick)); CommandRef stick_cmd(new WindowCmd(win, &FluxboxWindow::stick));
CommandRef show_menu_cmd(new WindowCmd(win, &FluxboxWindow::popupMenu)); CommandRef show_menu_cmd(new WindowCmd(win, &FluxboxWindow::popupMenu));
@ -1138,7 +1142,6 @@ void BScreen::setupWindowActions(FluxboxWindow &win) {
// get titlebar configuration // get titlebar configuration
const vector<Fluxbox::Titlebar> *dir = &Fluxbox::instance()->getTitlebarLeft(); const vector<Fluxbox::Titlebar> *dir = &Fluxbox::instance()->getTitlebarLeft();
for (char c=0; c<2; c++) { for (char c=0; c<2; c++) {
for (size_t i=0; i< dir->size(); ++i) { for (size_t i=0; i< dir->size(); ++i) {
//create new buttons //create new buttons
FbTk::Button *newbutton = 0; FbTk::Button *newbutton = 0;
@ -1324,7 +1327,6 @@ void BScreen::reassociateGroup(FluxboxWindow *w, unsigned int wkspc_id, bool ign
} }
} }
void BScreen::reassociateWindow(FluxboxWindow *w, unsigned int wkspc_id, bool ignore_sticky) { void BScreen::reassociateWindow(FluxboxWindow *w, unsigned int wkspc_id, bool ignore_sticky) {
if (! w) return; if (! w) return;
@ -1338,6 +1340,7 @@ void BScreen::reassociateWindow(FluxboxWindow *w, unsigned int wkspc_id, bool ig
if (w->getWorkspaceNumber() == wkspc_id) if (w->getWorkspaceNumber() == wkspc_id)
return; return;
if (w->isIconic()) { if (w->isIconic()) {
removeIcon(w); removeIcon(w);
getWorkspace(wkspc_id)->addWindow(w); getWorkspace(wkspc_id)->addWindow(w);

View file

@ -22,7 +22,7 @@
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE. // DEALINGS IN THE SOFTWARE.
// $Id: Window.cc,v 1.116 2003/02/16 15:12:07 rathnor Exp $ // $Id: Window.cc,v 1.117 2003/02/16 17:57:53 rathnor Exp $
#include "Window.hh" #include "Window.hh"
@ -261,7 +261,7 @@ FluxboxWindow::FluxboxWindow(Window w, BScreen *s, int screen_num,
if (workspace_number < 0 || workspace_number >= screen->getCount()) if (workspace_number < 0 || workspace_number >= screen->getCount())
workspace_number = screen->getCurrentWorkspaceID(); workspace_number = screen->getCurrentWorkspaceID();
restoreAttributes(place_window); restoreAttributes();
moveToLayer(m_layernum); moveToLayer(m_layernum);
screen->getWorkspace(workspace_number)->addWindow(this, place_window); screen->getWorkspace(workspace_number)->addWindow(this, place_window);
@ -289,10 +289,6 @@ FluxboxWindow::FluxboxWindow(Window w, BScreen *s, int screen_num,
// no focus default // no focus default
setFocusFlag(false); setFocusFlag(false);
// finaly show the frame and the client window
m_frame.show();
XSync(display, False);
} }
@ -931,6 +927,15 @@ void FluxboxWindow::setTab(bool flag) {
*/ */
} }
void FluxboxWindow::hide() {
m_windowmenu.hide();
m_frame.hide();
}
void FluxboxWindow::show() {
m_frame.show();
}
/** /**
Unmaps the window and removes it from workspace list Unmaps the window and removes it from workspace list
*/ */
@ -1103,6 +1108,7 @@ void FluxboxWindow::maximizeVertical() {
void FluxboxWindow::setWorkspace(int n) { void FluxboxWindow::setWorkspace(int n) {
workspace_number = n; workspace_number = n;
blackbox_attrib.flags |= BaseDisplay::ATTRIB_WORKSPACE; blackbox_attrib.flags |= BaseDisplay::ATTRIB_WORKSPACE;
@ -1501,7 +1507,7 @@ void FluxboxWindow::setGravityOffsets() {
* but doesn't change the actual state * but doesn't change the actual state
* (so the caller can set defaults etc as well) * (so the caller can set defaults etc as well)
*/ */
void FluxboxWindow::restoreAttributes(bool place_window) { void FluxboxWindow::restoreAttributes() {
if (!getState()) if (!getState())
current_state = NormalState; current_state = NormalState;

View file

@ -22,7 +22,7 @@
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE. // DEALINGS IN THE SOFTWARE.
// $Id: Window.hh,v 1.47 2003/02/16 16:43:00 fluxgen Exp $ // $Id: Window.hh,v 1.48 2003/02/16 17:57:53 rathnor Exp $
#ifndef WINDOW_HH #ifndef WINDOW_HH
#define WINDOW_HH #define WINDOW_HH
@ -111,6 +111,10 @@ public:
void raiseAndFocus() { raise(); setInputFocus(); } void raiseAndFocus() { raise(); setInputFocus(); }
void setTab(bool flag); void setTab(bool flag);
void setFocusFlag(bool flag); void setFocusFlag(bool flag);
// map this window
void show();
// unmap this window
void hide();
void iconify(); void iconify();
void deiconify(bool = true, bool = true); void deiconify(bool = true, bool = true);
/// destroy this window /// destroy this window
@ -145,7 +149,7 @@ public:
void setWorkspace(int n); void setWorkspace(int n);
void changeBlackboxHints(const BaseDisplay::BlackboxHints &bh); void changeBlackboxHints(const BaseDisplay::BlackboxHints &bh);
void restoreAttributes(bool place_window); void restoreAttributes();
void showMenu(int mx, int my); void showMenu(int mx, int my);
// popup menu on last button press position // popup menu on last button press position
void popupMenu(); void popupMenu();