summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'x11-wm/fluxbox/files/fluxbox-0.1.13-remember.patch')
-rw-r--r--x11-wm/fluxbox/files/fluxbox-0.1.13-remember.patch1149
1 files changed, 0 insertions, 1149 deletions
diff --git a/x11-wm/fluxbox/files/fluxbox-0.1.13-remember.patch b/x11-wm/fluxbox/files/fluxbox-0.1.13-remember.patch
deleted file mode 100644
index 53c95ff9e497..000000000000
--- a/x11-wm/fluxbox/files/fluxbox-0.1.13-remember.patch
+++ /dev/null
@@ -1,1149 +0,0 @@
-diff -u -r -N -x depcomp -x Entries -x aclocal.m4 -x Makefile.in -x config.guess -x config.sub -x ltmain.sh -x ltconfig -x Entries.Log -x config.h.in -x configure fluxbox-0.1.13/doc/fluxbox.1.in fluxbox-0.1.13-remember/doc/fluxbox.1.in
---- fluxbox-0.1.13/doc/fluxbox.1.in Sun Sep 22 15:52:11 2002
-+++ fluxbox-0.1.13-remember/doc/fluxbox.1.in Wed Nov 20 12:37:08 2002
-@@ -323,6 +323,9 @@
- An
- .B [end]
- tag is required to end the submenu.
-+.IP
-+If you create a submenu labelled 'Startup', applications located in this
-+submenu will be launched on fluxbox startup.
- .TP
- .B [reconfig] (label)
- When selected, this item rereads the current style and menu files and
-@@ -375,6 +378,12 @@
- [exec] (edit) {mozilla -edit}
- [exec] (compose) {mozilla -compose}
- [end]
-+ [submenu] (Startup)
-+ [exec] (gkrellm) {gkrellm -w}
-+ [exec] (xmms) {xmms -p}
-+ [exec] (galeon) {galeon -s}
-+ [exec] (kdeinit) {kdeinit}
-+ [end]
- [submenu] (Window Manager)
- [exec] (Edit Menus) {nedit ~/.fluxbox/menu}
- [submenu] (Style) {Which Style?}
-@@ -1069,6 +1078,66 @@
- This way the main workspace (screen0) has the maximum amount of space available
- and the secondary workspace could show the time and run some withrawn apps like
- gkrellm in the slit, always visible yet out of the way of real work.
-+.SH APPLICATIONS SETTINGS
-+Sometimes, you want to force an application to have always the same dimensions,
-+position, and other settings. It is now possible with the new window-submenu
-+called 'Remember...'. Settings are saved in the
-+.I ~/.fluxbox/apps
-+file. You don't have to edit the file yourself as all manipulations can be
-+done using the 'Remember...' submenu.
-+.TP
-+.B Workspace [0-N]
-+Force the workspace of the application to be the current one, even if you launch
-+the application from another workspace.
-+.TP
-+.B Dimensions [Width Height]
-+Remember the current dimensions.
-+.TP
-+.B Position [X Y]
-+Remember the current position.
-+.TP
-+.B Shaded state [yes|no]
-+Remember the current shaded state.
-+.TP
-+.B Tab state [yes|no]
-+Remember the current tab state.
-+.TP
-+.B Decoration state [NONE|NORMAL|TOOL|TINY]
-+Remember the current decoration state.
-+.TP
-+.B Sticky state [yes|no]
-+Remember the current sticky state.
-+.TP
-+.B Jump to workspace [yes|no]
-+This one is only useful if 'Workspace' is set too. The workspace is changed
-+to the workspace containing the application being launched.
-+.TP
-+.B Save settings on close [yes|no]
-+By default, application settings are not saved when a window is closed. Set
-+this option if you want previous settings to be saved when the window is closed.
-+.SS Applications example
-+Here is a short example of an apps file:
-+.PP
-+.nf
-+[app] (kate)
-+ [Dimensions] {1022 747}
-+ [Position] {0 0}
-+ [Close] {yes}
-+[end]
-+[app] (konqueror)
-+ [Workspace] {1}
-+ [Dimensions] {1006 749}
-+ [Position] {16 0}
-+ [Jump] {yes}
-+[end]
-+[app] (xterm)
-+ [Deco] {NONE}
-+[end]
-+.fi
-+
-+Parameters in the 'apps' file are case-sensitive. Application names are taken
-+from the first X-Window WM_CLASS attribute. You can see this attribute by using
-+the xprop command. Transient windows are not affected by application settings.
- .SH ENVIRONMENT
- .TP
- .B HOME
-diff -u -r -N -x depcomp -x Entries -x aclocal.m4 -x Makefile.in -x config.guess -x config.sub -x ltmain.sh -x ltconfig -x Entries.Log -x config.h.in -x configure fluxbox-0.1.13/nls/C/Windowmenu.m fluxbox-0.1.13-remember/nls/C/Windowmenu.m
---- fluxbox-0.1.13/nls/C/Windowmenu.m Mon Dec 17 20:49:45 2001
-+++ fluxbox-0.1.13-remember/nls/C/Windowmenu.m Wed Nov 20 12:37:08 2002
-@@ -22,3 +22,23 @@
- # Close
- $ #Tab
- # Tab
-+$ #Remember
-+# Remember ...
-+$ #RememberWorkspace
-+# Workspace
-+$ #RememberDimensions
-+# Dimensions
-+$ #RememberPosition
-+# Position
-+$ #RememberShaded
-+# Shaded state
-+$ #RememberTab
-+# Tab state
-+$ #RememberDeco
-+# Decoration state
-+$ #RememberSticky
-+# Sticky state
-+$ #RememberJump
-+# Jump to Workspace
-+$ #RememberSave
-+# Save settings on close
-diff -u -r -N -x depcomp -x Entries -x aclocal.m4 -x Makefile.in -x config.guess -x config.sub -x ltmain.sh -x ltconfig -x Entries.Log -x config.h.in -x configure fluxbox-0.1.13/nls/blackbox-nls.hh fluxbox-0.1.13-remember/nls/blackbox-nls.hh
---- fluxbox-0.1.13/nls/blackbox-nls.hh Sun May 19 23:28:36 2002
-+++ fluxbox-0.1.13-remember/nls/blackbox-nls.hh Wed Nov 20 12:37:08 2002
-@@ -124,6 +124,16 @@
- WindowmenuKillClient = 0x9,
- WindowmenuClose = 0xa,
- WindowmenuTab = 0xb,
-+ WindowmenuRemember = 0xc,
-+ WindowmenuRememberWorkspace = 0xd,
-+ WindowmenuRememberDimensions = 0xe,
-+ WindowmenuRememberPosition = 0xf,
-+ WindowmenuRememberShaded = 0x10,
-+ WindowmenuRememberTab = 0x11,
-+ WindowmenuRememberDeco = 0x12,
-+ WindowmenuRememberSticky = 0x13,
-+ WindowmenuRememberJump = 0x14,
-+ WindowmenuRememberSave = 0x15,
-
- WorkspaceSet = 0xb,
- WorkspaceDefaultNameFormat = 0x1,
-@@ -176,6 +186,6 @@
- bsetrootMustSpecify = 0x1,
- bsetrootUsage = 0x2,
- dummy_not_used = 0 //just for the ending
--}; //end enum\n
--}; //end namespace\n
--#endif //BLACKBOX_NLS_HH\n
-+}; //end enum
-+}; //end namespace
-+#endif //BLACKBOX_NLS_HH
-diff -u -r -N -x depcomp -x Entries -x aclocal.m4 -x Makefile.in -x config.guess -x config.sub -x ltmain.sh -x ltconfig -x Entries.Log -x config.h.in -x configure fluxbox-0.1.13/nls/fr_FR/Windowmenu.m fluxbox-0.1.13-remember/nls/fr_FR/Windowmenu.m
---- fluxbox-0.1.13/nls/fr_FR/Windowmenu.m Sat Jan 5 17:23:31 2002
-+++ fluxbox-0.1.13-remember/nls/fr_FR/Windowmenu.m Wed Nov 20 12:37:08 2002
-@@ -22,3 +22,23 @@
- # Fermer
- $ #Tab
- # Onglet
-+$ #Remember
-+# Retenir ...
-+$ #RememberWorkspace
-+# Bureau
-+$ #RememberDimensions
-+# Dimensions
-+$ #RememberPosition
-+# Position
-+$ #RememberShaded
-+# Etat ombré
-+$ #RememberTab
-+# Etat de l'onglet
-+$ #RememberDeco
-+# Etat des décorations
-+$ #RememberSticky
-+# Etat collant
-+$ #RememberJump
-+# Aller au bureau
-+$ #RememberSave
-+# Sauver les paramètres à la fermeture
-diff -u -r -N -x depcomp -x Entries -x aclocal.m4 -x Makefile.in -x config.guess -x config.sub -x ltmain.sh -x ltconfig -x Entries.Log -x config.h.in -x configure fluxbox-0.1.13/src/Application.cc fluxbox-0.1.13-remember/src/Application.cc
---- fluxbox-0.1.13/src/Application.cc Thu Jan 1 01:00:00 1970
-+++ fluxbox-0.1.13-remember/src/Application.cc Wed Nov 20 12:37:08 2002
-@@ -0,0 +1,227 @@
-+// Application.cc for Fluxbox Window Manager
-+// Copyright (c) 2002 Xavier Brouckaert
-+//
-+// Permission is hereby granted, free of charge, to any person obtaining a
-+// copy of this software and associated documentation files (the "Software"),
-+// to deal in the Software without restriction, including without limitation
-+// the rights to use, copy, modify, merge, publish, distribute, sublicense,
-+// and/or sell copies of the Software, and to permit persons to whom the
-+// Software is furnished to do so, subject to the following conditions:
-+//
-+// The above copyright notice and this permission notice shall be included in
-+// all copies or substantial portions of the Software.
-+//
-+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-+// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-+// DEALINGS IN THE SOFTWARE.
-+
-+//use GNU extensions
-+#ifndef _GNU_SOURCE
-+#define _GNU_SOURCE
-+#endif // _GNU_SOURCE
-+
-+#include <iostream>
-+#include <string>
-+#include <memory>
-+#include <sstream>
-+#include <fstream>
-+#include <stdio.h>
-+
-+#include "Application.hh"
-+#include "fluxbox.hh"
-+
-+#ifndef MAXPATHLEN
-+#define MAXPATHLEN 255
-+#endif // MAXPATHLEN
-+
-+Application::Application() {
-+ workspace_remember =
-+ dimensions_remember =
-+ position_remember =
-+ stuckstate_remember =
-+ decostate_remember =
-+ shadedstate_remember =
-+ tabstate_remember =
-+ jumpworkspace_remember =
-+ save_on_close_remember = false;
-+}
-+
-+Applications::Applications() {
-+ load();
-+}
-+
-+Application* Applications::add(char* app_name) {
-+ if (!app_name)
-+ return NULL;
-+ Application* a = new Application();
-+ apps[app_name] = a;
-+ return a;
-+}
-+
-+Application* Applications::find(char* app_name) {
-+ if (!app_name)
-+ return NULL;
-+ Apps::iterator i = apps.find(app_name);
-+ if (i!=apps.end())
-+ return i->second;
-+ else
-+ return NULL;
-+}
-+
-+void Applications::parseApp(ifstream &file, Application *a) {
-+ string line;
-+
-+ while (! file.eof()) {
-+ if (getline(file, line)) {
-+ if (line[0] != '#') { //the line is commented
-+ int parse_pos = 0, err = 0;
-+ std::string str_key, str_label;
-+ err = StringUtil::getStringBetween(str_key, line.c_str(), '[', ']');
-+ if (err > 0 ) {
-+ parse_pos += err;
-+ err = StringUtil::getStringBetween(str_label, line.c_str() + parse_pos, '{', '}');
-+ if (err>0) {
-+ parse_pos += err;
-+ }
-+ } else
-+ continue; //read next line
-+ if (!str_key.size())
-+ continue; //read next line
-+ if (str_key == "Workspace") {
-+ unsigned int w;
-+ istringstream iss(str_label.c_str());
-+ iss >> w;
-+ a->rememberWorkspace(w);
-+ } else if (str_key == "Dimensions") {
-+ unsigned int h,w;
-+ istringstream iss(str_label.c_str());
-+ iss >> w >> h;
-+ a->rememberDimensions(w,h);
-+ } else if (str_key == "Position") {
-+ unsigned int x,y;
-+ istringstream iss(str_label);
-+ iss >> x >> y;
-+ a->rememberPosition(x,y);
-+ } else if (str_key == "Shaded") {
-+ a->rememberShadedstate((str_label=="yes"));
-+ } else if (str_key == "Tab") {
-+ a->rememberTabstate((str_label=="yes"));
-+ } else if (str_key == "Deco") {
-+ if (str_label == "NONE") {
-+ a->rememberDecostate(FluxboxWindow::DECOR_NONE);
-+ } else if (str_label == "NORMAL") {
-+ a->rememberDecostate(FluxboxWindow::DECOR_NORMAL);
-+ } else if (str_label == "TINY") {
-+ a->rememberDecostate(FluxboxWindow::DECOR_TINY);
-+ } else if (str_label == "TOOL") {
-+ a->rememberDecostate(FluxboxWindow::DECOR_TOOL);
-+ }
-+ } else if (str_key == "Sticky") {
-+ a->rememberStuckstate((str_label=="yes"));
-+ } else if (str_key == "Jump") {
-+ a->rememberJumpworkspace((str_label=="yes"));
-+ } else if (str_key == "Close") {
-+ a->rememberSave((str_label=="yes"));
-+ } else if (str_key == "end") {
-+ return;
-+ } else {
-+ cerr << "Unsupported apps key = " << str_key << endl;
-+ }
-+ }
-+ }
-+ }
-+}
-+
-+void Applications::load() {
-+ cerr << "Loading apps file..." << endl;
-+ string apps_string = getenv("HOME")+string("/.")+RC_PATH+string("/")+"apps";
-+ ifstream apps_file(apps_string.c_str());
-+ if (!apps_file.fail()) {
-+ if (!apps_file.eof()) {
-+ string line;
-+ int row = 0;
-+ while (getline(apps_file, line) && ! apps_file.eof()) {
-+ row++;
-+ if (line[0] != '#') {
-+ string key;
-+ int pos=0;
-+ int err = StringUtil::getStringBetween(key, line.c_str(), '[', ']');
-+
-+ if (key == "app") {
-+ pos += err;
-+ string label;
-+ err = StringUtil::getStringBetween(label, line.c_str()+pos, '(', ')');
-+ if (err>0) {
-+ Application *a;
-+ Apps::iterator i = apps.find(label);
-+ if (i==apps.end()) {
-+ a = new Application();
-+ apps[label] = a;
-+ } else
-+ a = i->second;
-+ parseApp(apps_file, a);
-+ } else
-+ cerr<<"Error in apps file. Line("<<row<<")"<<endl;
-+ }
-+ }
-+ }
-+ } else {
-+ cerr<<__FILE__<<"("<<__LINE__<< "Empty apps file" << endl;
-+ }
-+ } else {
-+ cerr << "apps file failure" << endl;
-+ }
-+}
-+
-+void Applications::save() {
-+ cerr << "Saving apps file..." << endl;
-+ string apps_string = getenv("HOME")+string("/.")+RC_PATH+string("/")+"apps";
-+ ofstream apps_file(apps_string.c_str());
-+ Apps::iterator it = apps.begin();
-+ Apps::iterator it_end = apps.end();
-+ for (; it != it_end; ++it) {
-+ apps_file << "[app] (" << it->first << ")" << endl;
-+ Application *a = it->second;
-+ if (a->workspace_remember) {
-+ apps_file << " [Workspace]\t{" << a->workspace << "}" << endl;
-+ }
-+ if (a->dimensions_remember) {
-+ apps_file << " [Dimensions]\t{" << a->w << " " << a->h << "}" << endl;
-+ }
-+ if (a->position_remember) {
-+ apps_file << " [Position]\t{" << a->x << " " << a->y << "}" << endl;
-+ }
-+ if (a->shadedstate_remember) {
-+ apps_file << " [Shaded]\t{" << ((a->shadedstate)?"yes":"no") << "}" << endl;
-+ }
-+ if (a->tabstate_remember) {
-+ apps_file << " [Tab]\t\t{" << ((a->tabstate)?"yes":"no") << "}" << endl;
-+ }
-+ if (a->decostate_remember) {
-+ switch (a->decostate) {
-+ case (FluxboxWindow::DECOR_NONE) :
-+ apps_file << " [Deco]\t{NONE}" << endl; break;
-+ case (FluxboxWindow::DECOR_NORMAL) :
-+ apps_file << " [Deco]\t{NORMAL}" << endl; break;
-+ case (FluxboxWindow::DECOR_TINY) :
-+ apps_file << " [Deco]\t{TINY}" << endl; break;
-+ case (FluxboxWindow::DECOR_TOOL) :
-+ apps_file << " [Deco]\t{TOOL}" << endl; break;
-+ }
-+ }
-+ if (a->stuckstate_remember) {
-+ apps_file << " [Sticky]\t{" << ((a->stuckstate)?"yes":"no") << "}" << endl;
-+ }
-+ if (a->jumpworkspace_remember) {
-+ apps_file << " [Jump]\t{" << ((a->jumpworkspace)?"yes":"no") << "}" << endl;
-+ }
-+ if (a->save_on_close_remember) {
-+ apps_file << " [Close]\t{" << ((a->save_on_close)?"yes":"no") << "}" << endl;
-+ }
-+ apps_file << "[end]" << endl;
-+ }
-+}
-diff -u -r -N -x depcomp -x Entries -x aclocal.m4 -x Makefile.in -x config.guess -x config.sub -x ltmain.sh -x ltconfig -x Entries.Log -x config.h.in -x configure fluxbox-0.1.13/src/Application.hh fluxbox-0.1.13-remember/src/Application.hh
---- fluxbox-0.1.13/src/Application.hh Thu Jan 1 01:00:00 1970
-+++ fluxbox-0.1.13-remember/src/Application.hh Wed Nov 20 12:37:08 2002
-@@ -0,0 +1,103 @@
-+// Application.hh for Fluxbox Window Manager
-+// Copyright (c) 2002 Xavier Brouckaert
-+//
-+// Permission is hereby granted, free of charge, to any person obtaining a
-+// copy of this software and associated documentation files (the "Software"),
-+// to deal in the Software without restriction, including without limitation
-+// the rights to use, copy, modify, merge, publish, distribute, sublicense,
-+// and/or sell copies of the Software, and to permit persons to whom the
-+// Software is furnished to do so, subject to the following conditions:
-+//
-+// The above copyright notice and this permission notice shall be included in
-+// all copies or substantial portions of the Software.
-+//
-+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-+// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-+// DEALINGS IN THE SOFTWARE.
-+
-+#ifndef APPLICATION_HH
-+#define APPLICATION_HH
-+
-+#include <iostream>
-+#include <fstream>
-+#include <string>
-+#include <map>
-+#include "Window.hh"
-+#include "StringUtil.hh"
-+
-+using namespace std;
-+
-+class Application {
-+public:
-+ Application();
-+ inline void forgetWorkspace() { workspace_remember = false; }
-+ inline void forgetDimensions() { dimensions_remember = false; }
-+ inline void forgetPosition() { position_remember = false; }
-+ inline void forgetShadedstate() { shadedstate_remember = false; }
-+ inline void forgetTabstate() { tabstate_remember = false; }
-+ inline void forgetDecostate() { decostate_remember = false; }
-+ inline void forgetStuckstate() { stuckstate_remember = false; }
-+ inline void forgetJumpworkspace() { jumpworkspace_remember = false; }
-+ inline void forgetSave() { save_on_close_remember = false; }
-+
-+ inline void rememberWorkspace(int ws) { workspace = ws; workspace_remember = true; }
-+ inline void rememberDimensions(int width, int height) { w = width; h = height; dimensions_remember = true; }
-+ inline void rememberPosition(int posx, int posy) { x = posx; y = posy; position_remember = true; }
-+ inline void rememberShadedstate(bool state) { shadedstate = state; shadedstate_remember = true; }
-+ inline void rememberTabstate(bool state) { tabstate = state; tabstate_remember = true; }
-+ inline void rememberDecostate(FluxboxWindow::Decoration state) { decostate = state; decostate_remember = true; }
-+ inline void rememberStuckstate(bool state) { stuckstate = state; stuckstate_remember = true; }
-+ inline void rememberJumpworkspace(bool state) { jumpworkspace = state; jumpworkspace_remember = true; }
-+ inline void rememberSave(bool state) { save_on_close = state; save_on_close_remember = true; }
-+
-+
-+ bool workspace_remember;
-+ unsigned int workspace;
-+
-+ bool dimensions_remember;
-+ int w,h; // width, height
-+
-+ bool position_remember;
-+ int x,y;
-+
-+ bool shadedstate_remember;
-+ bool shadedstate;
-+
-+ bool tabstate_remember;
-+ bool tabstate;
-+
-+ bool decostate_remember;
-+ FluxboxWindow::Decoration decostate;
-+
-+ bool stuckstate_remember;
-+ bool stuckstate;
-+
-+ bool jumpworkspace_remember;
-+ bool jumpworkspace;
-+
-+ bool save_on_close_remember;
-+ bool save_on_close;
-+};
-+
-+typedef std::map<string,Application *> Apps;
-+
-+class Applications {
-+private:
-+ void parseApp(ifstream &file, Application *a);
-+ Apps apps;
-+
-+public:
-+ Applications();
-+
-+ Application* find(char* app_name);
-+ Application* add(char* app_name);
-+
-+ void load();
-+ void save();
-+};
-+
-+#endif
-diff -u -r -N -x depcomp -x Entries -x aclocal.m4 -x Makefile.in -x config.guess -x config.sub -x ltmain.sh -x ltconfig -x Entries.Log -x config.h.in -x configure fluxbox-0.1.13/src/Basemenu.hh fluxbox-0.1.13-remember/src/Basemenu.hh
---- fluxbox-0.1.13/src/Basemenu.hh Sun Nov 3 19:45:30 2002
-+++ fluxbox-0.1.13-remember/src/Basemenu.hh Wed Nov 20 12:37:08 2002
-@@ -110,6 +110,8 @@
- bool hasSubmenu(unsigned int index) const;
- bool isItemSelected(unsigned int index) const;
- bool isItemEnabled(unsigned int index) const;
-+ typedef std::vector<BasemenuItem *> Menuitems;
-+ inline Menuitems *getMenuitems() { return &menuitems; }
- //@}
-
- protected:
-@@ -130,7 +132,7 @@
-
- private:
-
-- typedef std::vector<BasemenuItem *> Menuitems;
-+// typedef std::vector<BasemenuItem *> Menuitems;
- Fluxbox *m_fluxbox; //< fluxbox object, obsolete
- BScreen *m_screen;
- Display *m_display;
-diff -u -r -N -x depcomp -x Entries -x aclocal.m4 -x Makefile.in -x config.guess -x config.sub -x ltmain.sh -x ltconfig -x Entries.Log -x config.h.in -x configure fluxbox-0.1.13/src/Makefile.am fluxbox-0.1.13-remember/src/Makefile.am
---- fluxbox-0.1.13/src/Makefile.am Tue Nov 12 14:39:51 2002
-+++ fluxbox-0.1.13-remember/src/Makefile.am Wed Nov 20 12:52:38 2002
-@@ -50,7 +50,8 @@
- xmb_SOURCE= XmbFontImp.hh XmbFontImp.cc
- endif
-
--fluxbox_SOURCES = BaseDisplay.cc BaseDisplay.hh Basemenu.cc Basemenu.hh \
-+fluxbox_SOURCES = Application.cc Application.hh \
-+ BaseDisplay.cc BaseDisplay.hh Basemenu.cc Basemenu.hh \
- Clientmenu.cc Clientmenu.hh Configmenu.cc Configmenu.hh \
- Iconmenu.cc Iconmenu.hh Image.cc Image.hh \
- Netizen.cc Netizen.hh Rootmenu.cc Rootmenu.hh Screen.cc Screen.hh\
-diff -u -r -N -x depcomp -x Entries -x aclocal.m4 -x Makefile.in -x config.guess -x config.sub -x ltmain.sh -x ltconfig -x Entries.Log -x config.h.in -x configure fluxbox-0.1.13/src/Rootmenu.cc fluxbox-0.1.13-remember/src/Rootmenu.cc
---- fluxbox-0.1.13/src/Rootmenu.cc Thu Nov 14 11:19:24 2002
-+++ fluxbox-0.1.13-remember/src/Rootmenu.cc Wed Nov 20 12:37:08 2002
-@@ -155,4 +155,14 @@
- return w;
- }
-
-+Basemenu* Rootmenu::getStartupMenu() {
-+ for (unsigned int i=0;i<numberOfItems();i++) {
-+ BasemenuItem *item = find(i);
-+ if (item->label()=="Startup") {
-+ return item->submenu();
-+ }
-+ }
-+ return NULL;
-+}
-+
-
-diff -u -r -N -x depcomp -x Entries -x aclocal.m4 -x Makefile.in -x config.guess -x config.sub -x ltmain.sh -x ltconfig -x Entries.Log -x config.h.in -x configure fluxbox-0.1.13/src/Rootmenu.hh fluxbox-0.1.13-remember/src/Rootmenu.hh
---- fluxbox-0.1.13/src/Rootmenu.hh Thu Nov 14 11:15:49 2002
-+++ fluxbox-0.1.13-remember/src/Rootmenu.hh Wed Nov 20 12:37:08 2002
-@@ -32,6 +32,7 @@
- explicit Rootmenu(BScreen *scr);
- void setAutoGroupWindow(Window window);
- void show();
-+ Basemenu* getStartupMenu();
-
- protected:
- virtual void itemSelected(int button, unsigned int index);
-diff -u -r -N -x depcomp -x Entries -x aclocal.m4 -x Makefile.in -x config.guess -x config.sub -x ltmain.sh -x ltconfig -x Entries.Log -x config.h.in -x configure fluxbox-0.1.13/src/Screen.cc fluxbox-0.1.13-remember/src/Screen.cc
---- fluxbox-0.1.13/src/Screen.cc Sun Nov 17 12:27:50 2002
-+++ fluxbox-0.1.13-remember/src/Screen.cc Wed Nov 20 12:37:08 2002
-@@ -280,6 +280,7 @@
- root_colormap_installed = true;
-
- fluxbox->load_rc(this);
-+ fluxbox->getApplications()->load();
-
- image_control->setDither(*resource.image_dither);
- theme = new Theme(getBaseDisplay()->getXDisplay(), getRootWindow(), colormap(), getScreenNumber(),
-diff -u -r -N -x depcomp -x Entries -x aclocal.m4 -x Makefile.in -x config.guess -x config.sub -x ltmain.sh -x ltconfig -x Entries.Log -x config.h.in -x configure fluxbox-0.1.13/src/Window.cc fluxbox-0.1.13-remember/src/Window.cc
---- fluxbox-0.1.13/src/Window.cc Sun Nov 17 14:19:01 2002
-+++ fluxbox-0.1.13-remember/src/Window.cc Wed Nov 20 12:37:08 2002
-@@ -34,6 +34,7 @@
- #include "Windowmenu.hh"
- #include "StringUtil.hh"
- #include "Netizen.hh"
-+#include "Application.hh"
-
- #ifdef HAVE_CONFIG_H
- #include "config.h"
-@@ -71,6 +72,7 @@
- lastButtonPressTime(0),
- m_windowmenu(0),
- m_layer(LAYER_NORMAL),
-+decor(false),
- tab(0) {
-
- lastFocusTime.tv_sec = lastFocusTime.tv_usec = 0;
-@@ -305,11 +307,6 @@
- m_windowmenu = tmp;
- }
-
-- if (workspace_number < 0 || workspace_number >= screen->getCount())
-- screen->getCurrentWorkspace()->addWindow(this, place_window);
-- else
-- screen->getWorkspace(workspace_number)->addWindow(this, place_window);
--
- configure(frame.x, frame.y, frame.width, frame.height);
-
- if (shaded) {
-@@ -335,6 +332,61 @@
- fprintf(stderr, "%s(%d): FluxboxWindow(this=%p)\n", __FILE__, __LINE__, this);
- #endif // DEBUG
-
-+ char *app_name = getWMClass();
-+ bool workspace_set = false;
-+ if ((app_name) && (!checkTransient2())) {
-+ Application* a = Fluxbox::instance()->getApplications()->find(app_name);
-+ if (a) { // Information exists about this application
-+ if (a->workspace_remember) {
-+ screen->getWorkspace(a->workspace)->addWindow(this, place_window);
-+ workspace_set = true;
-+ if ((a->jumpworkspace_remember) && (a->jumpworkspace)) {
-+ screen->changeWorkspaceID(a->workspace);
-+ } else {
-+ if ((screen->getCurrentWorkspaceID() != a->workspace) && (tab))
-+ tab->withdraw();
-+ }
-+ }
-+ if (a->dimensions_remember) {
-+ place_window = false;
-+ configure(frame.x, frame.y, a->w, a->h);
-+ }
-+ if (a->position_remember) {
-+ place_window = false;
-+ configure(a->x, a->y, frame.width, frame.height);
-+ }
-+ if (a->shadedstate_remember) {
-+ if (a->shadedstate) {
-+ shade();
-+ if (tab)
-+ tab->shade();
-+ } else {
-+ // Do nothing by now : default is not shaded
-+ }
-+ }
-+ if (a->tabstate_remember) {
-+ setTab(a->tabstate);
-+ }
-+ if (a->decostate_remember) {
-+ setDecoration(a->decostate);
-+ }
-+ if (a->stuckstate_remember) {
-+ if (a->stuckstate)
-+ stick();
-+ // FIXME: unstick() has been defined in
-+ // Window.hh but not implemented !!!
-+ // else
-+ // unstick();
-+ }
-+ }
-+ }
-+ if (!workspace_set) {
-+ if (workspace_number < 0 || workspace_number >= screen->getCount())
-+ screen->getCurrentWorkspace()->addWindow(this, place_window);
-+ else
-+ screen->getWorkspace(workspace_number)->addWindow(this, place_window);
-+ }
-+
- fluxbox->ungrab();
- }
-
-@@ -1067,6 +1119,17 @@
- tab->setPosition();
- }
-
-+char* FluxboxWindow::getWMClass(void) {
-+ XClassHint xch;
-+
-+ if (XGetClassHint(display, client.window, &xch)) {
-+ char *app_name = StringUtil::strdup(xch.res_name);
-+ XFree((char *)xch.res_name);
-+ XFree((char *)xch.res_class);
-+ return app_name;
-+ } else
-+ return NULL;
-+}
-
- void FluxboxWindow::getWMName() {
-
-@@ -1640,8 +1703,35 @@
- }
- }
-
-+void FluxboxWindow::save_on_close() {
-+ Fluxbox *fluxbox = Fluxbox::instance();
-+ Applications *apps = fluxbox->getApplications();
-+ Application *a = apps->find(getWMClass());
-+ if (a!=NULL) {
-+ if ((a->save_on_close_remember) && (a->save_on_close)) {
-+ if (a->workspace_remember)
-+ a->rememberWorkspace(screen->getCurrentWorkspaceID());
-+ if (a->dimensions_remember)
-+ a->rememberDimensions(getWidth(),getHeight());
-+ if (a->position_remember)
-+ a->rememberPosition(getXFrame(),getYFrame());
-+ if (a->shadedstate_remember)
-+ a->rememberShadedstate(isShaded());
-+ if (a->shadedstate_remember)
-+ a->rememberTabstate(hasTab());
-+ if (a->decostate_remember)
-+ a->rememberDecostate(getDecoration());
-+ if (a->stuckstate_remember)
-+ a->rememberStuckstate(isStuck());
-+ if (a->jumpworkspace_remember)
-+ a->rememberJumpworkspace(true);
-+ apps->save();
-+ }
-+ }
-+}
-
- void FluxboxWindow::close() {
-+ save_on_close();
- Fluxbox *fluxbox = Fluxbox::instance();
- XEvent ce;
- ce.xclient.type = ClientMessage;
-@@ -2356,7 +2446,8 @@
- m_windowmenu->show();
- m_windowmenu->raise();
- m_windowmenu->getSendToMenu().raise();
-- m_windowmenu->getSendGroupToMenu().raise();
-+ m_windowmenu->getSendGroupToMenu().raise();
-+ m_windowmenu->getRememberMenu().raise();
- }
-
- void FluxboxWindow::restoreGravity() {
-@@ -3175,7 +3266,6 @@
- }
-
- void FluxboxWindow::toggleDecoration() {
-- static bool decor = false;
- //don't toggle decor if the window is shaded
- if (isShaded())
- return;
-@@ -3486,6 +3576,17 @@
- frame.handle = 0;
- }
-
-+}
-+
-+bool FluxboxWindow::checkTransient2() {
-+ Window win;
-+ if (XGetTransientForHint(display, client.window, &win))
-+ if (win)
-+ return true;
-+ else
-+ return false;
-+ else
-+ return false;
- }
-
- void FluxboxWindow::checkTransient() {
-diff -u -r -N -x depcomp -x Entries -x aclocal.m4 -x Makefile.in -x config.guess -x config.sub -x ltmain.sh -x ltconfig -x Entries.Log -x config.h.in -x configure fluxbox-0.1.13/src/Window.hh fluxbox-0.1.13-remember/src/Window.hh
---- fluxbox-0.1.13/src/Window.hh Fri Nov 15 13:14:39 2002
-+++ fluxbox-0.1.13-remember/src/Window.hh Wed Nov 20 12:37:08 2002
-@@ -55,6 +55,8 @@
- class FluxboxWindow : public TimeoutHandler {
- public:
-
-+ char* getWMClass(void);
-+
- enum WinLayer {
- LAYER_BOTTOM = 0x01,
- LAYER_BELOW = 0x02,
-@@ -204,6 +206,16 @@
- //@}
-
- void setDecoration(Decoration decoration);
-+ inline Decoration getDecoration() {
-+ if (!decor) {
-+ #ifdef DEBUG
-+ if ((old_decoration!=DECOR_NONE) && (old_decoration!=DECOR_NORMAL) && (old_decoration!=DECOR_TINY) && (old_decoration!=DECOR_TOOL))
-+ cerr<<__FILE__<<"("<<__LINE__<< "DEBUG: old_decoration fucked up" << endl;
-+ #endif //DEBUG
-+ return old_decoration;
-+ } else
-+ return DECOR_NONE;
-+ }
- void toggleDecoration();
-
- #ifdef SHAPE
-@@ -276,6 +288,8 @@
-
- } client;
-
-+ bool decor;
-+
- struct _decorations {
- bool titlebar, handle, border, iconify,
- maximize, close, menu, sticky, shade, tab;
-@@ -333,12 +347,15 @@
- void stopResizing(Window win=0);
- void updateIcon();
-
-+ void save_on_close();
-+
- // Decoration functions
- void createTitlebar();
- void destroyTitlebar();
- void createHandle();
- void destroyHandle();
- void checkTransient();
-+ bool checkTransient2();
-
- Window findTitleButton(int type);
-
-diff -u -r -N -x depcomp -x Entries -x aclocal.m4 -x Makefile.in -x config.guess -x config.sub -x ltmain.sh -x ltconfig -x Entries.Log -x config.h.in -x configure fluxbox-0.1.13/src/Windowmenu.cc fluxbox-0.1.13-remember/src/Windowmenu.cc
---- fluxbox-0.1.13/src/Windowmenu.cc Thu Oct 24 00:02:13 2002
-+++ fluxbox-0.1.13-remember/src/Windowmenu.cc Wed Nov 20 12:37:08 2002
-@@ -38,6 +38,7 @@
- #include "Window.hh"
- #include "Windowmenu.hh"
- #include "Workspace.hh"
-+#include "Application.hh"
-
- #include <cstring>
-
-@@ -45,7 +46,8 @@
- window(win),
- screen(win.getScreen()),
- sendToMenu(win),
--sendGroupToMenu(win) {
-+sendGroupToMenu(win),
-+rememberMenu(win) {
-
- setTitleVisibility(False);
- setMovable(False);
-@@ -63,6 +65,11 @@
- WindowmenuSet, WindowmenuSendGroupTo,
- "Send Group To ..."),
- &sendGroupToMenu);
-+
-+ insert(i18n->getMessage(
-+ WindowmenuSet, WindowmenuRemember,
-+ "Remember ..."),
-+ &rememberMenu);
-
- insert(i18n->getMessage(
- WindowmenuSet, WindowmenuShade,
-@@ -199,7 +206,8 @@
- setItemEnabled(10, window.isResizable()); // tab option only enabled if resizable
-
- sendToMenu.reconfigure();
-- sendGroupToMenu.reconfigure();
-+ sendGroupToMenu.reconfigure();
-+ rememberMenu.reconfigure();
-
- Basemenu::reconfigure();
- }
-@@ -299,5 +307,135 @@
- hide();
- }
-
-+Windowmenu::Remembermenu::Remembermenu(FluxboxWindow &win): Basemenu(win.getScreen()),
-+m_fbwindow(win)
-+{
-+ setTitleVisibility(false);
-+ setMovable(false);
-+ setInternalMenu();
-+ update();
-+}
-+
-+void Windowmenu::Remembermenu::show() {
-+ update();
-+
-+ Basemenu::show();
-+}
-+
-+void Windowmenu::Remembermenu::itemSelected(int button, unsigned int index) {
-+ if (button > 1) {
-+ hide();
-+ return;
-+ }
-+
-+ if (button == 1) {
-+ char* app_name = fbwin().getWMClass();
-+ if (app_name) {
-+ Applications *apps = Fluxbox::instance()->getApplications();
-+ Application *a = apps->find(app_name);
-+ if (a==NULL)
-+ a = apps->add(app_name);
-+ if (!isItemSelected(index)) {
-+ switch (index) {
-+ case 0 : // Workspace
-+ a->rememberWorkspace(screen()->getCurrentWorkspaceID());
-+ break;
-+ case 1 : // Dimensions
-+ a->rememberDimensions(fbwin().getWidth(),
-+ fbwin().getHeight());
-+ break;
-+ case 2 : // Position
-+ a->rememberPosition(fbwin().getXFrame(),
-+ fbwin().getYFrame());
-+ break;
-+ case 3 : // Shaded state
-+ a->rememberShadedstate(fbwin().isShaded());
-+ break;
-+ case 4 : // Tab state
-+ a->rememberTabstate(fbwin().hasTab());
-+ break;
-+ case 5 : // Deco state
-+ a->rememberDecostate(fbwin().getDecoration());
-+ break;
-+ case 6 : // Stuck state
-+ a->rememberStuckstate(fbwin().isStuck());
-+ break;
-+ case 7 : // Jump to workspace
-+ a->rememberJumpworkspace(true);
-+ break;
-+ case 8 : // Save on close
-+ a->rememberSave(true);
-+ }
-+ } else {
-+ switch (index) {
-+ case 0 : // Workspace
-+ a->forgetWorkspace();
-+ break;
-+ case 1 : // Dimensions
-+ a->forgetDimensions();
-+ break;
-+ case 2 : // Position
-+ a->forgetPosition();
-+ break;
-+ case 3 : // Shaded state
-+ a->forgetShadedstate();
-+ break;
-+ case 4 : // Tab state
-+ a->forgetTabstate();
-+ break;
-+ case 5 : // Deco state
-+ a->forgetDecostate();
-+ break;
-+ case 6 : // Stuck state
-+ a->forgetStuckstate();
-+ break;
-+ case 7 : // Jump to workspace
-+ a->forgetJumpworkspace();
-+ break;
-+ case 8 : // Save on close
-+ a->forgetSave();
-+ break;
-+ }
-+ }
-+ setItemSelected(index,!isItemSelected(index));
-+ apps->save();
-+ }
-+ }
-+ Basemenu::update();
-+}
-+
-
-+void Windowmenu::Remembermenu::update(void) {
-+ if (numberOfItems() == 0) {
-+ I18n *i18n = I18n::instance();
-+ using namespace FBNLS;
-+ insert(i18n->getMessage(WindowmenuSet, WindowmenuRememberWorkspace, "Workspace"));
-+ insert(i18n->getMessage(WindowmenuSet, WindowmenuRememberDimensions, "Dimensions"));
-+ insert(i18n->getMessage(WindowmenuSet, WindowmenuRememberPosition, "Position"));
-+ insert(i18n->getMessage(WindowmenuSet, WindowmenuRememberShaded, "Shaded state"));
-+ insert(i18n->getMessage(WindowmenuSet, WindowmenuRememberTab, "Tab state"));
-+ insert(i18n->getMessage(WindowmenuSet, WindowmenuRememberDeco, "Decoration state"));
-+ insert(i18n->getMessage(WindowmenuSet, WindowmenuRememberSticky, "Sticky state"));
-+ insert(i18n->getMessage(WindowmenuSet, WindowmenuRememberJump, "Jump to Workspace"));
-+ insert(i18n->getMessage(WindowmenuSet, WindowmenuRememberSave, "Save settings on close"));
-+
-+ // Set Selected when needed
-+ char *app_name = fbwin().getWMClass();
-+ if (app_name) {
-+ Application *a = Fluxbox::instance()->getApplications()->find(app_name);
-+ if (a) {
-+ setItemSelected(0,a->workspace_remember);
-+ setItemSelected(1,a->dimensions_remember);
-+ setItemSelected(2,a->position_remember);
-+ setItemSelected(3,a->shadedstate_remember);
-+ setItemSelected(4,a->tabstate_remember);
-+ setItemSelected(5,a->decostate_remember);
-+ setItemSelected(6,a->stuckstate_remember);
-+ setItemSelected(7,a->jumpworkspace_remember);
-+ setItemSelected(8,a->save_on_close_remember);
-+ }
-+ }
-+ }
-+ Basemenu::update();
-+}
-
-diff -u -r -N -x depcomp -x Entries -x aclocal.m4 -x Makefile.in -x config.guess -x config.sub -x ltmain.sh -x ltconfig -x Entries.Log -x config.h.in -x configure fluxbox-0.1.13/src/Windowmenu.hh fluxbox-0.1.13-remember/src/Windowmenu.hh
---- fluxbox-0.1.13/src/Windowmenu.hh Wed Oct 23 23:34:46 2002
-+++ fluxbox-0.1.13-remember/src/Windowmenu.hh Wed Nov 20 12:37:08 2002
-@@ -36,6 +36,8 @@
- Basemenu &getSendToMenu() { return sendToMenu; }
- const Basemenu &getSendGroupToMenu() const { return sendGroupToMenu; }
- Basemenu &getSendGroupToMenu() { return sendGroupToMenu; }
-+ const Basemenu &getRememberMenu() const { return rememberMenu; }
-+ Basemenu &getRememberMenu() { return rememberMenu; }
-
- void reconfigure();
- void setClosable();
-@@ -70,11 +72,24 @@
- protected:
- virtual void itemSelected(int button, unsigned int index);
-
-- };
--
-+ };
-+
-+ class Remembermenu : public Basemenu {
-+ public:
-+ Remembermenu(FluxboxWindow &win);
-+ void update();
-+
-+ virtual void show();
-+ FluxboxWindow &fbwin() { return m_fbwindow; }
-+ protected:
-+ virtual void itemSelected(int button, unsigned int index);
-+ private:
-+ FluxboxWindow &m_fbwindow;
-+ };
-+
- SendtoWorkspacemenu sendToMenu;
- SendGroupToWorkspacemenu sendGroupToMenu;
--
-+ Remembermenu rememberMenu;
- };
-
-
-diff -u -r -N -x depcomp -x Entries -x aclocal.m4 -x Makefile.in -x config.guess -x config.sub -x ltmain.sh -x ltconfig -x Entries.Log -x config.h.in -x configure fluxbox-0.1.13/src/fluxbox.cc fluxbox-0.1.13-remember/src/fluxbox.cc
---- fluxbox-0.1.13/src/fluxbox.cc Fri Nov 15 13:19:17 2002
-+++ fluxbox-0.1.13-remember/src/fluxbox.cc Wed Nov 20 12:37:08 2002
-@@ -142,10 +142,6 @@
-
- #endif // HAVE_BASENAME
-
--#define RC_PATH "fluxbox"
--#define RC_INIT_FILE "init"
--
--
- // X event scanner for enter/leave notifies - adapted from twm
- typedef struct scanargs {
- Window w;
-@@ -2586,4 +2582,38 @@
- if (old_screen && old_screen != screen)
- old_screen->updateNetizenWindowFocus();
-
-+}
-+
-+void Fluxbox::launchStartupProgs(void) {
-+ ScreenList::iterator it = screenList.begin();
-+ ScreenList::iterator it_end = screenList.end();
-+
-+ for (; it != it_end; ++it) {
-+ BScreen *screen = (*it);
-+ Basemenu* startupmenu = screen->getRootmenu()->getStartupMenu();
-+
-+ if (!startupmenu)
-+ return;
-+
-+ Basemenu::Menuitems* mi = startupmenu->getMenuitems();
-+ Basemenu::Menuitems::iterator mit = mi->begin();
-+ Basemenu::Menuitems::iterator mit_end = mi->end();
-+ for (; mit != mit_end; ++mit) {
-+ BasemenuItem *app = (*mit);
-+ cerr << app->label() << endl;
-+ if (app->exec().size()) {
-+#ifndef __EMX__
-+ char displaystring[MAXPATHLEN];
-+ sprintf(displaystring, "DISPLAY=%s",
-+ DisplayString(screen->getBaseDisplay()->getXDisplay()));
-+ sprintf(displaystring + strlen(displaystring) - 1, "%d",
-+ screen->getScreenNumber());
-+
-+ bexec(app->exec().c_str(), displaystring);
-+#else // __EMX__
-+ spawnlp(P_NOWAIT, "cmd.exe", "cmd.exe", "/c", app->exec().c_str(), NULL);
-+#endif // !__EMX__
-+ }
-+ }
-+ }
- }
-diff -u -r -N -x depcomp -x Entries -x aclocal.m4 -x Makefile.in -x config.guess -x config.sub -x ltmain.sh -x ltconfig -x Entries.Log -x config.h.in -x configure fluxbox-0.1.13/src/fluxbox.hh fluxbox-0.1.13-remember/src/fluxbox.hh
---- fluxbox-0.1.13/src/fluxbox.hh Wed Oct 23 23:47:59 2002
-+++ fluxbox-0.1.13-remember/src/fluxbox.hh Wed Nov 20 12:37:08 2002
-@@ -27,6 +27,7 @@
- #ifndef FLUXBOX_HH
- #define FLUXBOX_HH
-
-+#include "Application.hh"
- #include "Resource.hh"
- #include "Keys.hh"
- #include "BaseDisplay.hh"
-@@ -72,6 +73,9 @@
-
- class AtomHandler;
-
-+#define RC_PATH "fluxbox"
-+#define RC_INIT_FILE "init"
-+
- /**
- main class for the window manager.
- singleton type
-@@ -189,6 +193,9 @@
-
- typedef std::vector<Fluxbox::Titlebar> TitlebarList;
-
-+ inline Applications* getApplications() { return &applications; }
-+ void launchStartupProgs(void);
-+
- private:
- struct cursor {
- Cursor session, move, ll_angle, lr_angle;
-@@ -204,6 +211,8 @@
- timeval auto_raise_delay;
- } resource;
-
-+
-+ Applications applications;
-
- std::string getRcFilename();
- void getDefaultDataFilename(char *, std::string &);
-diff -u -r -N -x depcomp -x Entries -x aclocal.m4 -x Makefile.in -x config.guess -x config.sub -x ltmain.sh -x ltconfig -x Entries.Log -x config.h.in -x configure fluxbox-0.1.13/src/main.cc fluxbox-0.1.13-remember/src/main.cc
---- fluxbox-0.1.13/src/main.cc Fri Nov 15 12:46:41 2002
-+++ fluxbox-0.1.13-remember/src/main.cc Wed Nov 20 12:37:08 2002
-@@ -200,6 +200,7 @@
- try {
-
- fluxbox = new Fluxbox(argc, argv, session_display, rc_file);
-+ fluxbox->launchStartupProgs();
- fluxbox->eventLoop();
-
- } catch (std::out_of_range oor) {