aboutsummaryrefslogtreecommitdiff
path: root/src/fluxbox.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/fluxbox.cc')
-rw-r--r--src/fluxbox.cc47
1 files changed, 25 insertions, 22 deletions
diff --git a/src/fluxbox.cc b/src/fluxbox.cc
index ab35aff..c26f766 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.142 2003/05/12 11:14:47 fluxgen Exp $ 25// $Id: fluxbox.cc,v 1.143 2003/05/13 00:20:49 fluxgen Exp $
26 26
27#include "fluxbox.hh" 27#include "fluxbox.hh"
28 28
@@ -559,12 +559,8 @@ Fluxbox::~Fluxbox() {
559 delete m_atomhandler.back(); 559 delete m_atomhandler.back();
560 m_atomhandler.pop_back(); 560 m_atomhandler.pop_back();
561 } 561 }
562 562
563 std::list<MenuTimestamp *>::iterator it = m_menu_timestamps.begin(); 563 clearMenuFilenames();
564 std::list<MenuTimestamp *>::iterator it_end = m_menu_timestamps.end();
565 for (; it != it_end; ++it)
566 delete *it;
567
568} 564}
569 565
570void Fluxbox::eventLoop() { 566void Fluxbox::eventLoop() {
@@ -2227,18 +2223,12 @@ void Fluxbox::real_reconfigure() {
2227 if (old_blackboxrc) 2223 if (old_blackboxrc)
2228 XrmDestroyDatabase(old_blackboxrc); 2224 XrmDestroyDatabase(old_blackboxrc);
2229 2225
2230 std::list<MenuTimestamp *>::iterator it = m_menu_timestamps.begin();
2231 std::list<MenuTimestamp *>::iterator it_end = m_menu_timestamps.end();
2232 for (; it != it_end; ++it)
2233 delete *it;
2234
2235 m_menu_timestamps.erase(m_menu_timestamps.begin(), m_menu_timestamps.end());
2236 2226
2237 ScreenList::iterator sit = m_screen_list.begin(); 2227 ScreenList::iterator sit = m_screen_list.begin();
2238 ScreenList::iterator sit_end = m_screen_list.end(); 2228 ScreenList::iterator sit_end = m_screen_list.end();
2239 for (; sit != sit_end; ++sit) 2229 for (; sit != sit_end; ++sit)
2240 (*sit)->reconfigure(); 2230 (*sit)->reconfigure();
2241 2231
2242 //reconfigure keys 2232 //reconfigure keys
2243 m_key->reconfigure(StringUtil::expandFilename(*m_rc_keyfile).c_str()); 2233 m_key->reconfigure(StringUtil::expandFilename(*m_rc_keyfile).c_str());
2244 2234
@@ -2246,21 +2236,26 @@ void Fluxbox::real_reconfigure() {
2246} 2236}
2247 2237
2248 2238
2249void Fluxbox::checkMenu() { 2239bool Fluxbox::menuTimestampsChanged() const {
2250 bool reread = false; 2240 std::list<MenuTimestamp *>::const_iterator it = m_menu_timestamps.begin();
2251 std::list<MenuTimestamp *>::iterator it = m_menu_timestamps.begin(); 2241 std::list<MenuTimestamp *>::const_iterator it_end = m_menu_timestamps.end();
2252 std::list<MenuTimestamp *>::iterator it_end = m_menu_timestamps.end(); 2242 for (; it != it_end; ++it) {
2253 for (; it != it_end && (! reread); ++it) {
2254 struct stat buf; 2243 struct stat buf;
2255 2244
2256 if (! stat((*it)->filename.c_str(), &buf)) { 2245 if (! stat((*it)->filename.c_str(), &buf)) {
2257 if ((*it)->timestamp != buf.st_ctime) 2246 if ((*it)->timestamp != buf.st_ctime)
2258 reread = true; 2247 return true;
2259 } else 2248 } else
2260 reread = true; 2249 return true;
2261 } 2250 }
2262 2251
2263 if (reread) rereadMenu(); 2252 // no timestamp changed
2253 return false;
2254}
2255
2256void Fluxbox::checkMenu() {
2257 if (menuTimestampsChanged())
2258 rereadMenu();
2264} 2259}
2265 2260
2266 2261
@@ -2316,6 +2311,14 @@ void Fluxbox::saveMenuFilename(const char *filename) {
2316 } 2311 }
2317} 2312}
2318 2313
2314void Fluxbox::clearMenuFilenames() {
2315 std::list<MenuTimestamp *>::iterator it = m_menu_timestamps.begin();
2316 std::list<MenuTimestamp *>::iterator it_end = m_menu_timestamps.end();
2317 for (; it != it_end; ++it)
2318 delete *it;
2319
2320 m_menu_timestamps.erase(m_menu_timestamps.begin(), m_menu_timestamps.end());
2321}
2319 2322
2320void Fluxbox::timeout() { 2323void Fluxbox::timeout() {
2321 if (m_reconfigure_wait) 2324 if (m_reconfigure_wait)