mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-09-19 22:40:26 +00:00
key4.diff
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@5808 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
a0fcfe56f6
commit
15dae27d9e
@ -1,3 +1,9 @@
|
||||
2002-12-12 John Levon <levon@movementarian.org>
|
||||
|
||||
* lyxfunc.C: use LyXKeySym->isText() as last-ditch
|
||||
insert. Only remove shift modifier under strict
|
||||
circumstances.
|
||||
|
||||
2002-12-09 Lars Gullik Bjønnes <larsbj@gullik.net>
|
||||
|
||||
* MenuBackend.C (expandToc): fix crash.
|
||||
|
@ -1,3 +1,7 @@
|
||||
2002-12-12 John Levon <levon@movementarian.org>
|
||||
|
||||
* LyXKeySym.h: add isText()
|
||||
|
||||
2002-12-03 Lars Gullik Bjønnes <larsbj@birdstep.com>
|
||||
|
||||
* screen.C (fitCursor): remove usleep thingie
|
||||
|
@ -36,6 +36,9 @@ public:
|
||||
/// Is this a modifier key only?
|
||||
virtual bool isModifier() const = 0;
|
||||
|
||||
/// Is this normal insertable text ? (last ditch attempt only)
|
||||
virtual bool isText() const { return false; }
|
||||
|
||||
/// What is the symbolic name of this key? F.ex. "Return" or "c"
|
||||
virtual string getSymbolName() const = 0;
|
||||
|
||||
|
@ -1,3 +1,10 @@
|
||||
2002-12-12 John Levon <levon@movementarian.org>
|
||||
|
||||
* QLyxKeySym.h:
|
||||
* QLyXKeySym.C:
|
||||
* qlkey.h: implement isText() to allow us to insert
|
||||
unrecognised text
|
||||
|
||||
2002-12-11 John Levon <levon@movementarian.org>
|
||||
|
||||
* qfont_loader.h:
|
||||
|
@ -34,6 +34,7 @@ void QLyXKeySym::set(QKeyEvent * ev)
|
||||
{
|
||||
key_ = ev->key();
|
||||
text_ = ev->text();
|
||||
lyxerr[Debug::KEY] << "Setting key to " << key_ << ", " << text_.latin1() << endl;
|
||||
}
|
||||
|
||||
|
||||
@ -41,19 +42,23 @@ void QLyXKeySym::init(string const & symbolname)
|
||||
{
|
||||
key_ = string_to_qkey(symbolname);
|
||||
text_ = symbolname.c_str();
|
||||
lyxerr[Debug::KEY] << "Init key to " << key_ << ", " << text_ << endl;
|
||||
lyxerr[Debug::KEY] << "Init key to " << key_ << ", " << text_.latin1() << endl;
|
||||
}
|
||||
|
||||
|
||||
bool QLyXKeySym::isOK() const
|
||||
{
|
||||
return ! key_ == 0;
|
||||
bool const ok(!(text_.isEmpty() && key_ == Qt::Key_unknown));
|
||||
lyxerr[Debug::KEY] << "isOK is " << ok << endl;
|
||||
return ok;
|
||||
}
|
||||
|
||||
|
||||
|
||||
bool QLyXKeySym::isModifier() const
|
||||
{
|
||||
return q_is_modifier(key_);
|
||||
bool const mod(q_is_modifier(key_));
|
||||
lyxerr[Debug::KEY] << "isMod is " << mod << endl;
|
||||
return mod;
|
||||
}
|
||||
|
||||
|
||||
@ -78,6 +83,20 @@ char QLyXKeySym::getISOEncoded() const
|
||||
}
|
||||
|
||||
|
||||
bool QLyXKeySym::isText() const
|
||||
{
|
||||
if (text_.isEmpty()) {
|
||||
lyxerr[Debug::KEY] << "text_ empty, isText() == false" << endl;
|
||||
return false;
|
||||
}
|
||||
|
||||
QChar const c(text_[0]);
|
||||
lyxerr[Debug::KEY] << "isText for key " << key_
|
||||
<< " isPrint is " << c.isPrint() << endl;
|
||||
return c.isPrint();
|
||||
}
|
||||
|
||||
|
||||
bool operator==(LyXKeySym const & k1, LyXKeySym const & k2)
|
||||
{
|
||||
// note we ignore text_ here (non-strict ==), because
|
||||
|
@ -50,6 +50,9 @@ public:
|
||||
/// return the LyX symbolic name
|
||||
virtual string getSymbolName() const;
|
||||
|
||||
/// Is this normal insertable text ? (last ditch attempt only)
|
||||
virtual bool isText() const;
|
||||
|
||||
/**
|
||||
* Return the value of the keysym into the local ISO encoding.
|
||||
* This converts the LyXKeySym to a 8-bit encoded character.
|
||||
|
@ -34,10 +34,6 @@ bool q_is_modifier(int qkey)
|
||||
case Qt::Key_Meta:
|
||||
case Qt::Key_Alt:
|
||||
return true;
|
||||
|
||||
// AltGr becomes Key_unknown on at least one keyboard
|
||||
case Qt::Key_unknown:
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
@ -171,6 +171,7 @@ void LyXFunc::processKeySym(LyXKeySymPtr keysym,
|
||||
}
|
||||
|
||||
if (keysym->isModifier()) {
|
||||
lyxerr[Debug::KEY] << "isModifier true" << endl;
|
||||
return;
|
||||
}
|
||||
|
||||
@ -214,16 +215,24 @@ void LyXFunc::processKeySym(LyXKeySymPtr keysym,
|
||||
owner->message(keyseq.print());
|
||||
}
|
||||
|
||||
if (action == LFUN_UNKNOWN_ACTION) {
|
||||
// It is unknown, but what if we remove all
|
||||
// the modifiers? (Lgb)
|
||||
|
||||
// Maybe user can only reach the key via holding down shift.
|
||||
// Let's see. But only if shift is the only modifier
|
||||
if (action == LFUN_UNKNOWN_ACTION && state == key_modifier::shift) {
|
||||
lyxerr[Debug::KEY] << "Trying without shift" << endl;
|
||||
action = keyseq.addkey(keysym, key_modifier::none);
|
||||
|
||||
lyxerr[Debug::KEY] << "Removing modifiers...\n"
|
||||
<< "Action now set to ["
|
||||
<< action << ']' << endl;
|
||||
|
||||
if (action == LFUN_UNKNOWN_ACTION) {
|
||||
lyxerr[Debug::KEY] << "Action now " << action << endl;
|
||||
}
|
||||
|
||||
if (action == LFUN_UNKNOWN_ACTION) {
|
||||
// Hmm, we didn't match any of the keysequences. See
|
||||
// if it's normal insertable text not already covered
|
||||
// by a binding
|
||||
if (keysym->isText() && keyseq.length() == 1) {
|
||||
lyxerr[Debug::KEY] << "isText() is true, inserting." << endl;
|
||||
action = LFUN_SELFINSERT;
|
||||
} else {
|
||||
lyxerr[Debug::KEY] << "Unknown, !isText() - giving up" << endl;
|
||||
owner->message(_("Unknown function."));
|
||||
return;
|
||||
}
|
||||
@ -233,6 +242,7 @@ void LyXFunc::processKeySym(LyXKeySymPtr keysym,
|
||||
char c = keysym->getISOEncoded();
|
||||
string argument;
|
||||
|
||||
// FIXME: why ...
|
||||
if (c != 0)
|
||||
argument = c;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user