diff options
Diffstat (limited to 'src/fluxbox.cc')
-rw-r--r-- | src/fluxbox.cc | 62 |
1 files changed, 27 insertions, 35 deletions
diff --git a/src/fluxbox.cc b/src/fluxbox.cc index 17e2268..370bc1d 100644 --- a/src/fluxbox.cc +++ b/src/fluxbox.cc | |||
@@ -22,7 +22,7 @@ | |||
22 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | 22 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
23 | // DEALINGS IN THE SOFTWARE. | 23 | // DEALINGS IN THE SOFTWARE. |
24 | 24 | ||
25 | // $Id: fluxbox.cc,v 1.185 2003/08/15 13:57:18 fluxgen Exp $ | 25 | // $Id: fluxbox.cc,v 1.186 2003/08/22 21:38:58 fluxgen Exp $ |
26 | 26 | ||
27 | #include "fluxbox.hh" | 27 | #include "fluxbox.hh" |
28 | 28 | ||
@@ -42,6 +42,8 @@ | |||
42 | #include "FbAtoms.hh" | 42 | #include "FbAtoms.hh" |
43 | #include "defaults.hh" | 43 | #include "defaults.hh" |
44 | 44 | ||
45 | #include "FbTk/Image.hh" | ||
46 | |||
45 | //Use GNU extensions | 47 | //Use GNU extensions |
46 | #ifndef _GNU_SOURCE | 48 | #ifndef _GNU_SOURCE |
47 | #define _GNU_SOURCE | 49 | #define _GNU_SOURCE |
@@ -118,10 +120,6 @@ | |||
118 | #endif // HAVE_SYS_TIME_H | 120 | #endif // HAVE_SYS_TIME_H |
119 | #endif // TIME_WITH_SYS_TIME | 121 | #endif // TIME_WITH_SYS_TIME |
120 | 122 | ||
121 | #ifdef HAVE_LIBGEN_H | ||
122 | #include <libgen.h> | ||
123 | #endif // HAVE_LIBGEN_H | ||
124 | |||
125 | #include <sys/wait.h> | 123 | #include <sys/wait.h> |
126 | 124 | ||
127 | #include <iostream> | 125 | #include <iostream> |
@@ -133,24 +131,6 @@ | |||
133 | using namespace std; | 131 | using namespace std; |
134 | using namespace FbTk; | 132 | using namespace FbTk; |
135 | 133 | ||
136 | #ifndef HAVE_BASENAME | ||
137 | namespace { | ||
138 | |||
139 | char *basename(char *s) { | ||
140 | char *save = s; | ||
141 | |||
142 | while (*s) { | ||
143 | if (*s++ == '/') | ||
144 | save = s; | ||
145 | } | ||
146 | |||
147 | return save; | ||
148 | } | ||
149 | |||
150 | }; // end anonymous namespace | ||
151 | |||
152 | #endif // HAVE_BASENAME | ||
153 | |||
154 | //----------------------------------------------------------------- | 134 | //----------------------------------------------------------------- |
155 | //---- accessors for int, bool, and some enums with Resource ------ | 135 | //---- accessors for int, bool, and some enums with Resource ------ |
156 | //----------------------------------------------------------------- | 136 | //----------------------------------------------------------------- |
@@ -1442,7 +1422,7 @@ void Fluxbox::restart(const char *prog) { | |||
1442 | 1422 | ||
1443 | // fall back in case the above execlp doesn't work | 1423 | // fall back in case the above execlp doesn't work |
1444 | execvp(m_argv[0], m_argv); | 1424 | execvp(m_argv[0], m_argv); |
1445 | execvp(basename(m_argv[0]), m_argv); | 1425 | execvp(StringUtil::basename(m_argv[0]).c_str(), m_argv); |
1446 | } | 1426 | } |
1447 | 1427 | ||
1448 | /// prepares fluxbox for a shutdown | 1428 | /// prepares fluxbox for a shutdown |
@@ -1663,17 +1643,6 @@ void Fluxbox::load_rc() { | |||
1663 | void Fluxbox::load_rc(BScreen &screen) { | 1643 | void Fluxbox::load_rc(BScreen &screen) { |
1664 | //get resource filename | 1644 | //get resource filename |
1665 | string dbfile(getRcFilename()); | 1645 | string dbfile(getRcFilename()); |
1666 | if (dbfile.size() != 0) { | ||
1667 | if (!m_screen_rm.load(dbfile.c_str())) { | ||
1668 | cerr<<"Failed to load database:"<<dbfile<<endl; | ||
1669 | cerr<<"Trying with: "<<DEFAULT_INITFILE<<endl; | ||
1670 | if (!m_screen_rm.load(DEFAULT_INITFILE)) | ||
1671 | cerr<<"Failed to load database: "<<DEFAULT_INITFILE<<endl; | ||
1672 | } | ||
1673 | } else { | ||
1674 | if (!m_screen_rm.load(DEFAULT_INITFILE)) | ||
1675 | cerr<<"Failed to load database: "<<DEFAULT_INITFILE<<endl; | ||
1676 | } | ||
1677 | 1646 | ||
1678 | XrmDatabaseHelper database; | 1647 | XrmDatabaseHelper database; |
1679 | 1648 | ||
@@ -1735,6 +1704,17 @@ void Fluxbox::load_rc(BScreen &screen) { | |||
1735 | delete [] search; | 1704 | delete [] search; |
1736 | } | 1705 | } |
1737 | 1706 | ||
1707 | FbTk::Image::removeAllSearchPaths(); | ||
1708 | sprintf(name_lookup, "session.screen%d.imageSearchPath", screen_number); | ||
1709 | sprintf(class_lookup, "Session.Screen%d.imageSearchPath", screen_number); | ||
1710 | if (XrmGetResource(*database, name_lookup, class_lookup, &value_type, | ||
1711 | &value) && value.addr) { | ||
1712 | std::vector<std::string> paths; | ||
1713 | StringUtil::stringtok(paths, value.addr, ", "); | ||
1714 | for (unsigned int i=0; i<paths.size(); ++i) | ||
1715 | FbTk::Image::addSearchPath(paths[i]); | ||
1716 | } | ||
1717 | |||
1738 | sprintf(name_lookup, "session.screen%d.windowPlacement", screen_number); | 1718 | sprintf(name_lookup, "session.screen%d.windowPlacement", screen_number); |
1739 | sprintf(class_lookup, "Session.Screen%d.WindowPlacement", screen_number); | 1719 | sprintf(class_lookup, "Session.Screen%d.WindowPlacement", screen_number); |
1740 | if (XrmGetResource(*database, name_lookup, class_lookup, &value_type, | 1720 | if (XrmGetResource(*database, name_lookup, class_lookup, &value_type, |
@@ -1750,6 +1730,18 @@ void Fluxbox::load_rc(BScreen &screen) { | |||
1750 | } else | 1730 | } else |
1751 | screen.savePlacementPolicy(BScreen::ROWSMARTPLACEMENT); | 1731 | screen.savePlacementPolicy(BScreen::ROWSMARTPLACEMENT); |
1752 | 1732 | ||
1733 | if (dbfile.size() != 0) { | ||
1734 | if (!m_screen_rm.load(dbfile.c_str())) { | ||
1735 | cerr<<"Failed to load database:"<<dbfile<<endl; | ||
1736 | cerr<<"Trying with: "<<DEFAULT_INITFILE<<endl; | ||
1737 | if (!m_screen_rm.load(DEFAULT_INITFILE)) | ||
1738 | cerr<<"Failed to load database: "<<DEFAULT_INITFILE<<endl; | ||
1739 | } | ||
1740 | } else { | ||
1741 | if (!m_screen_rm.load(DEFAULT_INITFILE)) | ||
1742 | cerr<<"Failed to load database: "<<DEFAULT_INITFILE<<endl; | ||
1743 | } | ||
1744 | |||
1753 | } | 1745 | } |
1754 | 1746 | ||
1755 | void Fluxbox::loadRootCommand(BScreen &screen) { | 1747 | void Fluxbox::loadRootCommand(BScreen &screen) { |