summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCiaran McCreesh <ciaranm@gentoo.org>2004-09-06 23:47:12 +0000
committerCiaran McCreesh <ciaranm@gentoo.org>2004-09-06 23:47:12 +0000
commit33eb9e4ab632937afc74d5ce7b6c435f01e7228c (patch)
tree59aea6c4d0d0203c0e70416f81e67f95af62eab5 /x11-wm/fluxbox/files
parentMove the patches around, since we're going to end up with lots of them... (diff)
downloadhistorical-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')
-rw-r--r--x11-wm/fluxbox/files/0.9.10/fluxbox-0.9.10-windowmenu-crash.patch63
-rw-r--r--x11-wm/fluxbox/files/0.9.10/fluxbox-0.9.10-workspacemenu-crash.patch88
-rw-r--r--x11-wm/fluxbox/files/digest-fluxbox-0.9.10-r21
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