moved rootcommand to screen loading and added loadRootCommand
This commit is contained in:
parent
add890ad21
commit
ef911eda20
2 changed files with 62 additions and 79 deletions
133
src/fluxbox.cc
133
src/fluxbox.cc
|
@ -22,7 +22,7 @@
|
|||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
// DEALINGS IN THE SOFTWARE.
|
||||
|
||||
// $Id: fluxbox.cc,v 1.17 2002/01/09 15:08:22 fluxgen Exp $
|
||||
// $Id: fluxbox.cc,v 1.18 2002/01/10 12:51:21 fluxgen Exp $
|
||||
|
||||
// stupid macros needed to access some functions in version 2 of the GNU C
|
||||
// library
|
||||
|
@ -191,8 +191,8 @@ Fluxbox::Fluxbox(int m_argc, char **m_argv, char *dpy_name, char *rc)
|
|||
key=0;
|
||||
|
||||
no_focus = False;
|
||||
resource.titlebar_file = resource.menu_file = resource.style_file = resource.keys_file =
|
||||
resource.root_cmd = 0;
|
||||
resource.titlebar_file = resource.menu_file = resource.style_file = resource.keys_file = 0;
|
||||
|
||||
resource.auto_raise_delay.tv_sec = resource.auto_raise_delay.tv_usec = 0;
|
||||
|
||||
focused_window = masked_window = (FluxboxWindow *) 0;
|
||||
|
@ -290,9 +290,6 @@ Fluxbox::~Fluxbox(void) {
|
|||
delete key;
|
||||
key = 0;
|
||||
|
||||
if (resource.root_cmd)
|
||||
delete [] resource.root_cmd;
|
||||
|
||||
if (resource.menu_file)
|
||||
delete [] resource.menu_file;
|
||||
|
||||
|
@ -982,7 +979,17 @@ void Fluxbox::process_event(XEvent *e) {
|
|||
|
||||
win->changeBlackboxHints(&net);
|
||||
}
|
||||
}
|
||||
#ifdef GNOME
|
||||
else if (e->xclient.message_type == getGnomeWorkspaceAtom()) {
|
||||
#ifdef DEBUG
|
||||
cerr<<__FILE__<<"("<<__LINE__<<"): Got workspace atom"<<endl;
|
||||
#endif//!DEBUG
|
||||
BScreen *screen = searchScreen(e->xclient.window);
|
||||
if (screen)
|
||||
screen->changeWorkspaceID(e->xclient.data.l[0]);
|
||||
}
|
||||
#endif //!GNOME
|
||||
}
|
||||
|
||||
break;
|
||||
|
@ -1256,28 +1263,6 @@ Slit *Fluxbox::searchSlit(Window window) {
|
|||
|
||||
void Fluxbox::saveWindowSearch(Window window, FluxboxWindow *data) {
|
||||
windowSearchList->insert(new WindowSearch(window, data));
|
||||
|
||||
#ifdef GNOME
|
||||
/*
|
||||
Window *wl=0;
|
||||
int num=0;
|
||||
|
||||
num = windowSearchList->count();
|
||||
wl = new Window[num];
|
||||
// Fill in array of window ID's
|
||||
LinkedListIterator<WindowSearch> it(windowSearchList);
|
||||
|
||||
for (unsigned int i=0; it.current(); it++, i++)
|
||||
wl[i] = it.current()->getWindow();
|
||||
|
||||
//set property
|
||||
XChangeProperty(getXDisplay(), DefaultRootWindow(getXDisplay()), getGnomeClientListAtom(), XA_CARDINAL, 32,
|
||||
PropModeReplace, (unsigned char *)(wl), num);
|
||||
|
||||
delete wl;
|
||||
*/
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -1432,7 +1417,8 @@ void Fluxbox::save_rc(void) {
|
|||
|
||||
auto_ptr<char> dbfile(getRcFilename());
|
||||
|
||||
// load_rc(); This overwrites configs made while running, for example
|
||||
// load_rc();
|
||||
// This overwrites configs made while running, for example
|
||||
// usage of iconbar and tabs
|
||||
|
||||
sprintf(rc_string, "session.iconbar: %s", resource.iconbar ? "true" : "false");
|
||||
|
@ -1511,15 +1497,19 @@ void Fluxbox::save_rc(void) {
|
|||
XrmPutLineResource(&new_blackboxrc, rc_string);
|
||||
|
||||
sprintf(rc_string, "session.imageDither: %s",
|
||||
((screen->getImageControl()->doDither()) ? "True" : "False"));
|
||||
((screen->getImageControl()->doDither()) ? "True" : "False"));
|
||||
XrmPutLineResource(&new_blackboxrc, rc_string);
|
||||
|
||||
sprintf(rc_string, "session.screen%d.fullMaximization: %s", screen_number,
|
||||
((screen->doFullMax()) ? "True" : "False"));
|
||||
((screen->doFullMax()) ? "True" : "False"));
|
||||
XrmPutLineResource(&new_blackboxrc, rc_string);
|
||||
|
||||
sprintf(rc_string, "session.screen%d.rootCommand: %s", screen_number,
|
||||
screen->getRootCommand().c_str());
|
||||
XrmPutLineResource(&new_blackboxrc, rc_string);
|
||||
|
||||
sprintf(rc_string, "session.screen%d.focusNewWindows: %s", screen_number,
|
||||
((screen->doFocusNew()) ? "True" : "False"));
|
||||
((screen->doFocusNew()) ? "True" : "False"));
|
||||
XrmPutLineResource(&new_blackboxrc, rc_string);
|
||||
|
||||
sprintf(rc_string, "session.screen%d.focusLastWindow: %s", screen_number,
|
||||
|
@ -1528,18 +1518,18 @@ void Fluxbox::save_rc(void) {
|
|||
|
||||
sprintf(rc_string, "session.screen%d.rowPlacementDirection: %s", screen_number,
|
||||
((screen->getRowPlacementDirection() == BScreen::LeftRight) ?
|
||||
"LeftToRight" : "RightToLeft"));
|
||||
"LeftToRight" : "RightToLeft"));
|
||||
XrmPutLineResource(&new_blackboxrc, rc_string);
|
||||
|
||||
sprintf(rc_string, "session.screen%d.colPlacementDirection: %s", screen_number,
|
||||
((screen->getColPlacementDirection() == BScreen::TopBottom) ?
|
||||
"TopToBottom" : "BottomToTop"));
|
||||
"TopToBottom" : "BottomToTop"));
|
||||
XrmPutLineResource(&new_blackboxrc, rc_string);
|
||||
|
||||
char *placement = (char *) 0;
|
||||
|
||||
sprintf(rc_string, "session.screen%d.maxOverSlit: %s", screen_number,
|
||||
((screen->doMaxOverSlit()) ? "True" : "False"));
|
||||
((screen->doMaxOverSlit()) ? "True" : "False"));
|
||||
XrmPutLineResource(&new_blackboxrc, rc_string);
|
||||
switch (screen->getPlacementPolicy()) {
|
||||
case BScreen::CascadePlacement:
|
||||
|
@ -1699,13 +1689,8 @@ void Fluxbox::save_rc(void) {
|
|||
char *Fluxbox::getRcFilename() {
|
||||
char *dbfile=0;
|
||||
|
||||
if (!rc_file) {
|
||||
|
||||
string str(getenv("HOME")+string("/.")+RC_PATH+string("/")+RC_INIT_FILE);
|
||||
#ifdef DEBUG
|
||||
cerr<<__FILE__<<"("<<__LINE__<<"): str.size()="<<str.size()<<endl;
|
||||
cerr<<__FILE__<<"("<<__LINE__<<"): str="<<str<<endl;
|
||||
#endif
|
||||
if (!rc_file) {
|
||||
string str(getenv("HOME")+string("/.")+RC_PATH+string("/")+RC_INIT_FILE);
|
||||
return StringUtil::strdup(str.c_str());
|
||||
} else
|
||||
dbfile = StringUtil::strdup(rc_file);
|
||||
|
@ -1808,16 +1793,6 @@ void Fluxbox::load_rc(void) {
|
|||
else
|
||||
resource.style_file = StringUtil::strdup(DEFAULTSTYLE);
|
||||
|
||||
if (resource.root_cmd) {
|
||||
delete [] resource.root_cmd;
|
||||
resource.root_cmd = 0;
|
||||
}
|
||||
|
||||
if (XrmGetResource(database, "session.rootCommand", "Session.RootCommand", &value_type, &value))
|
||||
resource.root_cmd = StringUtil::expandFilename(value.addr);
|
||||
else
|
||||
resource.root_cmd = 0;
|
||||
|
||||
if (XrmGetResource(database, "session.doubleClickInterval",
|
||||
"Session.DoubleClickInterval", &value_type, &value)) {
|
||||
if (sscanf(value.addr, "%lu", &resource.double_click_interval) != 1)
|
||||
|
@ -1946,7 +1921,8 @@ void Fluxbox::load_rc(BScreen *screen) {
|
|||
char *value_type, name_lookup[1024], class_lookup[1024];
|
||||
int screen_number = screen->getScreenNumber();
|
||||
|
||||
sprintf(name_lookup, "session.screen%d.fullMaximization", screen_number);
|
||||
|
||||
sprintf(name_lookup, "session.screen%d.fullMaximization", screen_number);
|
||||
sprintf(class_lookup, "Session.Screen%d.FullMaximization", screen_number);
|
||||
if (XrmGetResource(database, name_lookup, class_lookup, &value_type,
|
||||
&value)) {
|
||||
|
@ -1957,7 +1933,15 @@ void Fluxbox::load_rc(BScreen *screen) {
|
|||
} else
|
||||
screen->saveFullMax(False);
|
||||
|
||||
sprintf(name_lookup, "session.screen%d.focusNewWindows", screen_number);
|
||||
sprintf(name_lookup, "session.screen%d.rootCommand", screen_number);
|
||||
sprintf(class_lookup, "Session.Screen%d.RootCommand", screen_number);
|
||||
if (XrmGetResource(database, name_lookup, class_lookup, &value_type,
|
||||
&value)) {
|
||||
screen->saveRootCommand(value.addr==0 ? "": value.addr);
|
||||
} else
|
||||
screen->saveRootCommand("");
|
||||
|
||||
sprintf(name_lookup, "session.screen%d.focusNewWindows", screen_number);
|
||||
sprintf(class_lookup, "Session.Screen%d.FocusNewWindows", screen_number);
|
||||
if (XrmGetResource(database, name_lookup, class_lookup, &value_type,
|
||||
&value)) {
|
||||
|
@ -2080,27 +2064,7 @@ void Fluxbox::load_rc(BScreen *screen) {
|
|||
|
||||
delete [] search;
|
||||
}
|
||||
//TODO MOVE THIS!!!!!!
|
||||
#ifdef GNOME
|
||||
{
|
||||
Atom atype;
|
||||
int aformat;
|
||||
unsigned long nitems, bytes_remain;
|
||||
unsigned char *prop;
|
||||
XGetWindowProperty (screen->getBaseDisplay()->getXDisplay(),
|
||||
screen->getRootWindow(),
|
||||
screen->getBaseDisplay()->getGnomeWorkspaceCountAtom(),
|
||||
0L, 1L, False, XA_CARDINAL, &atype, &aformat, &nitems, &bytes_remain, &prop);
|
||||
|
||||
long val = screen->getNumberOfWorkspaces();
|
||||
fprintf(stderr, "HERE!! %s(%d) num wrkspace(%l)\n", __FILE__, __LINE__, val);
|
||||
XChangeProperty(screen->getBaseDisplay()->getXDisplay(), screen->getRootWindow(),
|
||||
screen->getBaseDisplay()->getGnomeWorkspaceCountAtom(), XA_CARDINAL, 32,
|
||||
PropModeReplace, (unsigned char *)&val, 1);
|
||||
}
|
||||
#endif //GNOME
|
||||
|
||||
|
||||
|
||||
sprintf(name_lookup, "session.screen%d.toolbar.onTop", screen_number);
|
||||
sprintf(class_lookup, "Session.Screen%d.Toolbar.OnTop", screen_number);
|
||||
if (XrmGetResource(database, name_lookup, class_lookup, &value_type,
|
||||
|
@ -2375,7 +2339,26 @@ void Fluxbox::load_rc(BScreen *screen) {
|
|||
|
||||
}
|
||||
|
||||
void Fluxbox::loadRootCommand(BScreen *screen) {
|
||||
XrmDatabase database = (XrmDatabase) 0;
|
||||
|
||||
auto_ptr<char> dbfile(getRcFilename());
|
||||
|
||||
database = XrmGetFileDatabase(dbfile.get());
|
||||
if (!database)
|
||||
database = XrmGetFileDatabase(DEFAULT_INITFILE);
|
||||
|
||||
XrmValue value;
|
||||
char *value_type, name_lookup[1024], class_lookup[1024];
|
||||
sprintf(name_lookup, "session.screen%d.rootCommand", screen->getScreenNumber());
|
||||
sprintf(class_lookup, "Session.Screen%d.RootCommand", screen->getScreenNumber());
|
||||
if (XrmGetResource(database, name_lookup, class_lookup, &value_type,
|
||||
&value)) {
|
||||
screen->saveRootCommand(value.addr==0 ? "": value.addr);
|
||||
} else
|
||||
screen->saveRootCommand("");
|
||||
|
||||
}
|
||||
void Fluxbox::reload_rc(void) {
|
||||
load_rc();
|
||||
reconfigure();
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
// DEALINGS IN THE SOFTWARE.
|
||||
|
||||
// $Id: fluxbox.hh,v 1.4 2002/01/09 14:11:20 fluxgen Exp $
|
||||
// $Id: fluxbox.hh,v 1.5 2002/01/10 12:51:21 fluxgen Exp $
|
||||
|
||||
#ifndef _FLUXBOX_HH_
|
||||
#define _FLUXBOX_HH_
|
||||
|
@ -128,8 +128,7 @@ public:
|
|||
inline const std::vector<Fluxbox::Titlebar>& getTitlebarLeft() { return titlebar.left; }
|
||||
inline const char *getStyleFilename(void) const
|
||||
{ return resource.style_file; }
|
||||
inline const char *getRootCommand() const
|
||||
{ return resource.root_cmd; }
|
||||
|
||||
inline const char *getMenuFilename(void) const
|
||||
{ return resource.menu_file; }
|
||||
|
||||
|
@ -151,6 +150,7 @@ public:
|
|||
void setFocusedWindow(FluxboxWindow *w);
|
||||
void shutdown(void);
|
||||
void load_rc(BScreen *);
|
||||
void loadRootCommand(BScreen *);
|
||||
void loadTitlebar();
|
||||
void saveStyleFilename(const char *);
|
||||
void saveMenuFilename(const char *);
|
||||
|
@ -211,7 +211,7 @@ private:
|
|||
struct resource {
|
||||
Time double_click_interval;
|
||||
|
||||
char *menu_file, *style_file, *titlebar_file, *keys_file, *root_cmd;
|
||||
char *menu_file, *style_file, *titlebar_file, *keys_file;
|
||||
int colors_per_channel;
|
||||
timeval auto_raise_delay;
|
||||
unsigned long cache_life, cache_max;
|
||||
|
|
Loading…
Reference in a new issue