author | mouse <mouse> | 2004-01-09 14:18:03 (UTC) |
---|---|---|
committer | mouse <mouse> | 2004-01-09 14:18:03 (UTC) |
commit | 6875988077013544246ae0df7cc2e5d538a7f152 (patch) (side-by-side diff) | |
tree | f24c11b218457095d303be1a366423648dc15331 /core | |
parent | 8dd8648b0e82b16bcb0c976d330eaf670081a748 (diff) | |
download | opie-6875988077013544246ae0df7cc2e5d538a7f152.zip opie-6875988077013544246ae0df7cc2e5d538a7f152.tar.gz opie-6875988077013544246ae0df7cc2e5d538a7f152.tar.bz2 |
bug fix: range checking in sw_maps
-rw-r--r-- | core/applets/multikeyapplet/multikey.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/core/applets/multikeyapplet/multikey.cpp b/core/applets/multikeyapplet/multikey.cpp index 9ef162f..d304f54 100644 --- a/core/applets/multikeyapplet/multikey.cpp +++ b/core/applets/multikeyapplet/multikey.cpp @@ -14,74 +14,80 @@ #include "multikey.h" #include <qpe/global.h> #include <qpe/config.h> #include <qpe/qcopenvelope_qws.h> #include <qpe/qpeapplication.h> #include <qlabel.h> #include <qdir.h> #include <qfileinfo.h> #include <qcopchannel_qws.h> Multikey::Multikey(QWidget *parent) : QLabel(parent), popupMenu(this), current("EN") { QCopChannel* swChannel = new QCopChannel("MultiKey/Switcher", this); connect( swChannel, SIGNAL(received(const QCString &, const QByteArray &)), this, SLOT(message(const QCString &, const QByteArray &))); setFont( QFont( "Helvetica", 10, QFont::Normal ) ); QPEApplication::setStylusOperation(this, QPEApplication::RightOnHold); lang = 0; QCopEnvelope e("MultiKey/Keyboard", "getmultikey()"); setText("EN"); - popupMenu.insertItem("EN", -1); + popupMenu.insertItem("EN", 0); show(); } void Multikey::mousePressEvent(QMouseEvent *ev) { + if (!sw_maps.count()) + return; + if (ev->button() == RightButton) { QPoint p = mapToGlobal(QPoint(0, 0)); QSize s = popupMenu.sizeHint(); int opt = popupMenu.exec(QPoint(p.x() + (width() / 2) - (s.width() / 2), p.y() - s.height()), 0); if (opt == -1) return; lang = opt; QCopEnvelope e("MultiKey/Keyboard", "setmultikey(QString)"); e << sw_maps[lang]; setText(labels[lang]); } QWidget::mousePressEvent(ev); } void Multikey::mouseReleaseEvent(QMouseEvent *ev) { + if (!sw_maps.count()) + return; + lang = lang < sw_maps.count()-1 ? lang+1 : 0; QCopEnvelope e("MultiKey/Keyboard", "setmultikey(QString)"); //qDebug("Lang=%d, count=%d, lab=%s", lang, sw_maps.count(), labels[lang].ascii()); e << sw_maps[lang]; setText(labels[lang]); } void Multikey::message(const QCString &message, const QByteArray &data) { if ( message == "setsw(QString,QString)" ) { QDataStream stream(data, IO_ReadOnly); QString maps, current_map; stream >> maps >> current_map; QStringList sw = QStringList::split(QChar('|'), maps); sw.append(current_map); QDir map_dir(QPEApplication::qpeDir() + "/share/multikey/", "*.keymap"); lang = 0; labels.clear(); sw_maps.clear(); popupMenu.clear(); for (uint i = 0; i < sw.count(); ++i) { |