load default key bindings on error

This commit is contained in:
simonb 2007-09-30 11:35:20 +00:00
parent 143cb6562b
commit ac215248a0
3 changed files with 43 additions and 11 deletions

View file

@ -1,5 +1,9 @@
(Format: Year/Month/Day)
Changes for 1.0.0:
*07/09/30:
* Load menu and workspacemenu mouse bindings if error when loading
initial key bindings. Else can't get to menu to reload config (Simon)
Keys.hh/cc
*07/09/20:
* Updated ru_RU ( Thanks Slava Semushin )
*07/09/13:

View file

@ -166,22 +166,32 @@ void Keys::ungrabButtons() {
@return true on success else false
*/
bool Keys::load(const char *filename) {
if (!filename)
return false;
// an intentionally empty file will still have one root mapping
bool firstload = m_map.empty();
//free memory of previous grabs
if (!filename) {
if (firstload)
loadDefaults();
return false;
}
FbTk::App::instance()->sync(false);
// open the file
ifstream infile(filename);
if (!infile) {
if (firstload)
loadDefaults();
return false; // failed to open file
}
// free memory of previous grabs
deleteTree();
m_map["default:"] = new t_key(0,0,0,0);
FbTk::App::instance()->sync(false);
//open the file
ifstream infile(filename);
if (!infile)
return false; // faild to open file
unsigned int current_line = 0;//so we can tell the user where the fault is
unsigned int current_line = 0; //so we can tell the user where the fault is
while (!infile.eof()) {
string linebuffer;
@ -204,6 +214,21 @@ bool Keys::load(const char *filename) {
return true;
}
/**
* Load critical key/mouse bindings for when there are fatal errors reading the keyFile.
*/
void Keys::loadDefaults() {
#ifdef DEBUG
cerr<<"Loading default key bindings"<<endl;
#endif
deleteTree();
m_map["default:"] = new t_key(0,0,0,0);
addBinding("OnDesktop Mouse1 :HideMenus");
addBinding("OnDesktop Mouse2 :WorkspaceMenu");
addBinding("OnDesktop Mouse3 :RootMenu");
keyMode("default");
}
bool Keys::save(const char *filename) const {
//!!
//!! TODO: fix keybinding saving

View file

@ -97,6 +97,9 @@ private:
void grabButton(unsigned int button, unsigned int mod);
void ungrabButtons();
// Load default keybindings for when there are errors loading the initial one
void loadDefaults();
std::string m_filename;
class t_key;