diff options
author | Ciaran McCreesh <ciaranm@gentoo.org> | 2004-09-06 23:47:12 +0000 |
---|---|---|
committer | Ciaran McCreesh <ciaranm@gentoo.org> | 2004-09-06 23:47:12 +0000 |
commit | 33eb9e4ab632937afc74d5ce7b6c435f01e7228c (patch) | |
tree | 59aea6c4d0d0203c0e70416f81e67f95af62eab5 /x11-wm/fluxbox/files | |
parent | Move the patches around, since we're going to end up with lots of them... (diff) | |
download | historical-33eb9e4ab632937afc74d5ce7b6c435f01e7228c.tar.gz historical-33eb9e4ab632937afc74d5ce7b6c435f01e7228c.tar.bz2 historical-33eb9e4ab632937afc74d5ce7b6c435f01e7228c.zip |
Backport a couple of crash fixes from upstream -cvs
Diffstat (limited to 'x11-wm/fluxbox/files')
3 files changed, 152 insertions, 0 deletions
diff --git a/x11-wm/fluxbox/files/0.9.10/fluxbox-0.9.10-windowmenu-crash.patch b/x11-wm/fluxbox/files/0.9.10/fluxbox-0.9.10-windowmenu-crash.patch new file mode 100644 index 000000000000..55c6d0a9f978 --- /dev/null +++ b/x11-wm/fluxbox/files/0.9.10/fluxbox-0.9.10-windowmenu-crash.patch @@ -0,0 +1,63 @@ +Index: src/Remember.cc +=================================================================== +RCS file: /cvsroot/fluxbox/fluxbox/src/Remember.cc,v +retrieving revision 1.39 +retrieving revision 1.42 +diff -u -r1.39 -r1.42 +--- src/Remember.cc 10 Aug 2004 18:35:05 -0000 1.39 ++++ src/Remember.cc 4 Sep 2004 04:54:38 -0000 1.42 +@@ -79,14 +79,19 @@ + m_win(fbwin), m_attrib(attrib) {} + + bool isSelected() const { +- return m_remember.isRemembered(m_win.winClient(), m_attrib); ++ if (m_win.numClients()) // ensure it HAS clients ++ return m_remember.isRemembered(m_win.winClient(), m_attrib); ++ else ++ return false; + } + + bool isEnabled() const { + if (m_attrib != Remember::REM_JUMPWORKSPACE) + return true; +- else ++ else if (m_win.numClients()) + return (m_remember.isRemembered(m_win.winClient(), Remember::REM_WORKSPACE)); ++ else ++ return false; + } + + void click(int button, int time) { +@@ -291,8 +296,10 @@ + } + + row++; +- if (line[0] == '#') +- continue; //the line is commented ++ FbTk::StringUtil::removeFirstWhitespace(line); ++ FbTk::StringUtil::removeTrailingWhitespace(line); ++ if (line.size() == 0 || line[0] == '#') ++ continue; //the line is commented or blank + int parse_pos = 0, err = 0; + string str_key, str_option, str_label; + err = FbTk::StringUtil::getStringBetween(str_key, +@@ -333,7 +340,7 @@ + } else if (str_label == "NORMAL") { + l = Fluxbox::instance()->getNormalLayer(); + } else if (str_label == "TOP") { +- l = Fluxbox::instance()->getNormalLayer(); ++ l = Fluxbox::instance()->getTopLayer(); + } else if (str_label == "DOCK") { + l = Fluxbox::instance()->getDockLayer(); + } else if (str_label == "ABOVEDOCK") { +@@ -454,7 +461,9 @@ + std::list<ClientPattern *> grouped_pats; + while (getline(apps_file, line) && ! apps_file.eof()) { + row++; +- if (line[0] == '#') ++ FbTk::StringUtil::removeFirstWhitespace(line); ++ FbTk::StringUtil::removeTrailingWhitespace(line); ++ if (line.size() == 0 || line[0] == '#') + continue; + string key; + int err=0; diff --git a/x11-wm/fluxbox/files/0.9.10/fluxbox-0.9.10-workspacemenu-crash.patch b/x11-wm/fluxbox/files/0.9.10/fluxbox-0.9.10-workspacemenu-crash.patch new file mode 100644 index 000000000000..03207cc656b4 --- /dev/null +++ b/x11-wm/fluxbox/files/0.9.10/fluxbox-0.9.10-workspacemenu-crash.patch @@ -0,0 +1,88 @@ +Index: src/Screen.cc +=================================================================== +RCS file: /cvsroot/fluxbox/fluxbox/src/Screen.cc,v +retrieving revision 1.286 +retrieving revision 1.288 +diff -u -r1.286 -r1.288 +--- src/Screen.cc 30 Aug 2004 11:33:23 -0000 1.286 ++++ src/Screen.cc 6 Sep 2004 13:17:56 -0000 1.288 +@@ -407,11 +407,17 @@ + } + + BScreen::~BScreen() { ++ + if (! managed) + return; +- ++ + if (m_rootmenu.get() != 0) + m_rootmenu->removeAll(); ++ ++ // Since workspacemenu holds client list menus (from workspace) ++ // we need to destroy it before we destroy workspaces ++ m_workspacemenu.reset(0); ++ + + if (geom_pixmap != None) + imageControl().removeImage(geom_pixmap); +@@ -651,7 +657,7 @@ + const Workspace::Windows::iterator win_it_end = (*w_it)->windowList().end(); + for (; win_it != win_it_end; ++win_it) { + if (*win_it != except) +- (*win_it)->menu().hide(); ++ (*win_it)->menu().hide(); + } + } + } +@@ -772,7 +778,12 @@ + if (w == 0) + return; + ++ // make sure we have a unique list ++ if (find(getIconList().begin(), getIconList().end(), w) != getIconList().end()) ++ return; ++ + m_icon_list.push_back(w); ++ + // notify listeners + m_iconlist_sig.notify(); + } +@@ -782,20 +793,28 @@ + if (w == 0) + return; + +- Icons::iterator erase_it = remove_if(m_icon_list.begin(), +- m_icon_list.end(), ++ Icons::iterator erase_it = remove_if(getIconList().begin(), ++ getIconList().end(), + bind2nd(equal_to<FluxboxWindow *>(), w)); +- if (erase_it != m_icon_list.end()) +- m_icon_list.erase(erase_it); +- +- m_iconlist_sig.notify(); ++ // no need to send iconlist signal if we didn't ++ // change the iconlist ++ if (erase_it != m_icon_list.end()) { ++ getIconList().erase(erase_it); ++ m_iconlist_sig.notify(); ++ } + } + + void BScreen::removeWindow(FluxboxWindow *win) { +- if (win->isIconic()) +- removeIcon(win); +- else +- getWorkspace(win->workspaceNumber())->removeWindow(win, false); ++#ifdef DEBUG ++ cerr<<"BScreen::removeWindow("<<win<<")"<<endl; ++#endif // DEBUG ++ // extra precaution, if for some reason, the ++ // icon list should be out of sync ++ removeIcon(win); ++ // remove from workspace ++ Workspace *space = getWorkspace(win->workspaceNumber()); ++ if (space != 0) ++ space->removeWindow(win, false); + } + + diff --git a/x11-wm/fluxbox/files/digest-fluxbox-0.9.10-r2 b/x11-wm/fluxbox/files/digest-fluxbox-0.9.10-r2 new file mode 100644 index 000000000000..102f1b571a9e --- /dev/null +++ b/x11-wm/fluxbox/files/digest-fluxbox-0.9.10-r2 @@ -0,0 +1 @@ +MD5 7a04a21960b8bc364bcc002389008989 fluxbox-0.9.10.tar.bz2 556030 |