aboutsummaryrefslogtreecommitdiff
path: root/src/Remember.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/Remember.cc')
-rw-r--r--src/Remember.cc39
1 files changed, 13 insertions, 26 deletions
diff --git a/src/Remember.cc b/src/Remember.cc
index 43a4d16..6545b50 100644
--- a/src/Remember.cc
+++ b/src/Remember.cc
@@ -97,7 +97,6 @@ public:
97 void forgetFocusHiddenstate() { focushiddenstate_remember= false; } 97 void forgetFocusHiddenstate() { focushiddenstate_remember= false; }
98 void forgetIconHiddenstate() { iconhiddenstate_remember= false; } 98 void forgetIconHiddenstate() { iconhiddenstate_remember= false; }
99 void forgetStuckstate() { stuckstate_remember = false; } 99 void forgetStuckstate() { stuckstate_remember = false; }
100 void forgetFocusNewWindow() { focusnewwindow_remember = false; }
101 void forgetFocusProtection() { focusprotection_remember = false; } 100 void forgetFocusProtection() { focusprotection_remember = false; }
102 void forgetJumpworkspace() { jumpworkspace_remember = false; } 101 void forgetJumpworkspace() { jumpworkspace_remember = false; }
103 void forgetLayer() { layer_remember = false; } 102 void forgetLayer() { layer_remember = false; }
@@ -139,8 +138,6 @@ public:
139 { decostate = state; decostate_remember = true; } 138 { decostate = state; decostate_remember = true; }
140 void rememberStuckstate(bool state) 139 void rememberStuckstate(bool state)
141 { stuckstate = state; stuckstate_remember = true; } 140 { stuckstate = state; stuckstate_remember = true; }
142 void rememberFocusNewWindow(bool state)
143 { focusnewwindow = state; focusnewwindow_remember = true; }
144 void rememberFocusProtection(unsigned int protect) 141 void rememberFocusProtection(unsigned int protect)
145 { focusprotection = protect; focusprotection_remember = true; } 142 { focusprotection = protect; focusprotection_remember = true; }
146 void rememberJumpworkspace(bool state) 143 void rememberJumpworkspace(bool state)
@@ -191,9 +188,6 @@ public:
191 bool stuckstate_remember; 188 bool stuckstate_remember;
192 bool stuckstate; 189 bool stuckstate;
193 190
194 bool focusnewwindow_remember;
195 bool focusnewwindow;
196
197 bool focusprotection_remember; 191 bool focusprotection_remember;
198 unsigned int focusprotection; 192 unsigned int focusprotection;
199 193
@@ -247,7 +241,6 @@ void Application::reset() {
247 position_remember = 241 position_remember =
248 shadedstate_remember = 242 shadedstate_remember =
249 stuckstate_remember = 243 stuckstate_remember =
250 focusnewwindow_remember =
251 focusprotection_remember = 244 focusprotection_remember =
252 tabstate_remember = 245 tabstate_remember =
253 workspace_remember = 246 workspace_remember =
@@ -436,6 +429,8 @@ bool handleStartupItem(const string &line, int offset) {
436int parseApp(ifstream &file, Application &app, string *first_line = 0) { 429int parseApp(ifstream &file, Application &app, string *first_line = 0) {
437 string line; 430 string line;
438 _FB_USES_NLS; 431 _FB_USES_NLS;
432 Focus::Protection protect = Focus::NoProtection;
433 bool remember_protect = false;
439 int row = 0; 434 int row = 0;
440 while (! file.eof()) { 435 while (! file.eof()) {
441 if (!(first_line || getline(file, line))) { 436 if (!(first_line || getline(file, line))) {
@@ -555,9 +550,15 @@ int parseApp(ifstream &file, Application &app, string *first_line = 0) {
555 } else if (str_key == "sticky") { 550 } else if (str_key == "sticky") {
556 app.rememberStuckstate(str_label == "yes"); 551 app.rememberStuckstate(str_label == "yes");
557 } else if (str_key == "focusnewwindow") { 552 } else if (str_key == "focusnewwindow") {
558 app.rememberFocusNewWindow(str_label == "yes"); 553 remember_protect = true;
554 if (!(protect & (Focus::Gain|Focus::Refuse))) { // cut back on contradiction
555 if (str_label == "yes")
556 protect |= Focus::Gain;
557 else
558 protect |= Focus::Refuse;
559 }
559 } else if (str_key == "focusprotection") { 560 } else if (str_key == "focusprotection") {
560 Focus::Protection protect = Focus::NoProtection; 561 remember_protect = true;
561 std::list<std::string> labels; 562 std::list<std::string> labels;
562 FbTk::StringUtil::stringtok(labels, str_label, ", "); 563 FbTk::StringUtil::stringtok(labels, str_label, ", ");
563 std::list<std::string>::iterator it = labels.begin(); 564 std::list<std::string>::iterator it = labels.begin();
@@ -575,7 +576,6 @@ int parseApp(ifstream &file, Application &app, string *first_line = 0) {
575 else 576 else
576 had_error = 1; 577 had_error = 1;
577 } 578 }
578 app.rememberFocusProtection(protect);
579 } else if (str_key == "minimized") { 579 } else if (str_key == "minimized") {
580 app.rememberMinimizedstate(str_label == "yes"); 580 app.rememberMinimizedstate(str_label == "yes");
581 } else if (str_key == "maximized") { 581 } else if (str_key == "maximized") {
@@ -594,7 +594,7 @@ int parseApp(ifstream &file, Application &app, string *first_line = 0) {
594 } else if (str_key == "close") { 594 } else if (str_key == "close") {
595 app.rememberSaveOnClose(str_label == "yes"); 595 app.rememberSaveOnClose(str_label == "yes");
596 } else if (str_key == "end") { 596 } else if (str_key == "end") {
597 return row; 597 break;
598 } else { 598 } else {
599 cerr << _FB_CONSOLETEXT(Remember, Unknown, "Unknown apps key", "apps entry type not known")<<" = " << str_key << endl; 599 cerr << _FB_CONSOLETEXT(Remember, Unknown, "Unknown apps key", "apps entry type not known")<<" = " << str_key << endl;
600 } 600 }
@@ -602,6 +602,8 @@ int parseApp(ifstream &file, Application &app, string *first_line = 0) {
602 cerr<<"Error parsing apps entry: ("<<line<<")"<<endl; 602 cerr<<"Error parsing apps entry: ("<<line<<")"<<endl;
603 } 603 }
604 } 604 }
605 if (remember_protect)
606 app.rememberFocusProtection(protect);
605 return row; 607 return row;
606} 608}
607 609
@@ -1033,9 +1035,6 @@ void Remember::save() {
1033 if (a.stuckstate_remember) { 1035 if (a.stuckstate_remember) {
1034 apps_file << " [Sticky]\t{" << ((a.stuckstate)?"yes":"no") << "}" << endl; 1036 apps_file << " [Sticky]\t{" << ((a.stuckstate)?"yes":"no") << "}" << endl;
1035 } 1037 }
1036 if (a.focusnewwindow_remember) {
1037 apps_file << " [FocusNewWindow]\t{" << ((a.focusnewwindow)?"yes":"no") << "}" << endl;
1038 }
1039 if (a.focusprotection_remember) { 1038 if (a.focusprotection_remember) {
1040 apps_file << " [FocusProtection]\t{"; 1039 apps_file << " [FocusProtection]\t{";
1041 if (a.focusprotection == Focus::NoProtection) { 1040 if (a.focusprotection == Focus::NoProtection) {
@@ -1132,9 +1131,6 @@ bool Remember::isRemembered(WinClient &winclient, Attribute attrib) {
1132 case REM_STUCKSTATE: 1131 case REM_STUCKSTATE:
1133 return app->stuckstate_remember; 1132 return app->stuckstate_remember;
1134 break; 1133 break;
1135 case REM_FOCUSNEWWINDOW:
1136 return app->focusnewwindow_remember;
1137 break;
1138 case REM_FOCUSPROTECTION: 1134 case REM_FOCUSPROTECTION:
1139 return app->focusprotection_remember; 1135 return app->focusprotection_remember;
1140 break; 1136 break;
@@ -1218,9 +1214,6 @@ void Remember::rememberAttrib(WinClient &winclient, Attribute attrib) {
1218 case REM_STUCKSTATE: 1214 case REM_STUCKSTATE:
1219 app->rememberStuckstate(win->isStuck()); 1215 app->rememberStuckstate(win->isStuck());
1220 break; 1216 break;
1221 case REM_FOCUSNEWWINDOW:
1222 app->rememberFocusNewWindow(win->isFocusNew());
1223 break;
1224 case REM_FOCUSPROTECTION: 1217 case REM_FOCUSPROTECTION:
1225 app->rememberFocusProtection(win->focusProtection()); 1218 app->rememberFocusProtection(win->focusProtection());
1226 break; 1219 break;
@@ -1284,9 +1277,6 @@ void Remember::forgetAttrib(WinClient &winclient, Attribute attrib) {
1284 case REM_STUCKSTATE: 1277 case REM_STUCKSTATE:
1285 app->forgetStuckstate(); 1278 app->forgetStuckstate();
1286 break; 1279 break;
1287 case REM_FOCUSNEWWINDOW:
1288 app->forgetFocusNewWindow();
1289 break;
1290 case REM_FOCUSPROTECTION: 1280 case REM_FOCUSPROTECTION:
1291 app->forgetFocusProtection(); 1281 app->forgetFocusProtection();
1292 break; 1282 break;
@@ -1413,9 +1403,6 @@ void Remember::setupFrame(FluxboxWindow &win) {
1413 (!win.isStuck() && app->stuckstate)) 1403 (!win.isStuck() && app->stuckstate))
1414 win.stick(); // toggles 1404 win.stick(); // toggles
1415 1405
1416 if (app->focusnewwindow_remember)
1417 win.setFocusNew(app->focusnewwindow);
1418
1419 if (app->focusprotection_remember) { 1406 if (app->focusprotection_remember) {
1420 win.setFocusProtection(app->focusprotection); 1407 win.setFocusProtection(app->focusprotection);
1421 } 1408 }