Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:lafenghu
kvkbd
fix-loginhelper.diff
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File fix-loginhelper.diff of Package kvkbd
--- src/mainwidget.cpp.sav 2008-10-12 22:33:26.000000000 +0200 +++ src/mainwidget.cpp 2009-06-29 13:01:17.000000000 +0200 @@ -938,6 +938,23 @@ void MainWidget::setupKeyboard() connect(min, SIGNAL(keyClick(unsigned int)), this, SLOT(keyPress(unsigned int))); } +MainWidget::EventsHelper::EventsHelper( MainWidget* parent ) + : QWidget( parent ) +{ +} + +// update keyboard mapping when it's changed by xmodmap/setxkbmap +bool MainWidget::EventsHelper::x11Event(XEvent *event) +{ + if (event->type == MappingNotify) { + XMappingEvent *e = (XMappingEvent *)event; + if (e->request == MappingKeyboard) { + static_cast< MainWidget* >( parent())->mappingNotify(e); + } + } + return false; +} + // TODO: find a way to hide the widget before asking for quit // FIXME: clicking on the tray icon to hide/show the widget only work for showinButtong it KbdTray::KbdTray(MainWidget* parent) : KSystemTrayIcon(parent) --- src/main.h.sav 2008-09-10 09:30:14.000000000 +0200 +++ src/main.h 1970-01-01 01:00:00.000000000 +0100 @@ -1,35 +0,0 @@ -/* - * This file is part of the Kvkbd project. - * Copyright (C) 2008 Guillaume Martres <smarter@ubuntu.com> - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - */ - -#ifndef MAIN_H -#define MAIN_H - -#include <KUniqueApplication> - - -class KvkbdApp : public KUniqueApplication -{ -public: - explicit KvkbdApp(); - virtual ~KvkbdApp(); - virtual bool x11EventFilter(XEvent *event); -}; - -#endif //MAIN_H --- src/main.cpp.sav 2008-10-21 18:37:09.000000000 +0200 +++ src/main.cpp 2009-06-29 13:06:37.000000000 +0200 @@ -19,8 +19,6 @@ * Boston, MA 02110-1301, USA. */ -#include "main.h" - #include <KDebug> #include "mainwidget.h" @@ -71,44 +69,15 @@ int main(int argc, char **argv) kError() << "LoginHelper mode can only be launched from a display manager!"; return -1; } + if (!alone && !KUniqueApplication::start()) + return 1; - KvkbdApp app; + // no KUniqueApplication for kdm mode, forking into background changes the PID, + // and also dbus server is launched unnecessarily + KApplication* app = alone ? new KApplication : new KUniqueApplication; MainWidget *widget = new MainWidget(&about, alone, 0); - app.setActiveWindow(widget); - return app.exec(); -} - -KvkbdApp::KvkbdApp() : KUniqueApplication() -{ -} - -KvkbdApp::~KvkbdApp() -{ + app->setActiveWindow(widget); + int ret = app->exec(); + delete app; + return ret; } - -// update keyboard mapping when it's changed by xmodmap/setxkbmap -bool KvkbdApp::x11EventFilter(XEvent *event) -{ - MainWidget *main = (MainWidget *)activeWindow(); - - if (main) { //FIXME: is this check really necessary? - if (event->type == MappingNotify) { - XMappingEvent *e = (XMappingEvent *)event; - if (e->request == MappingKeyboard) { - main->mappingNotify(e); - } - } - } - return false; -} - -// FIXME: What's this for? -// int newInstance(){ -// MainWidget *main = (MainWidget *)mainWidget(); -// if (!main) -// { -// main = new MainWidget(const_cast<KAboutData *>(aboutData()),false, 0, "kvkbd"); -// setMainWidget(main); -// } -// return 0; -// }; --- src/mainwidget.h.sav 2008-10-11 15:01:35.000000000 +0200 +++ src/mainwidget.h 2009-06-29 13:02:38.000000000 +0200 @@ -29,6 +29,7 @@ #include "resizabledragwidget.h" #include <X11/Xlib.h> +#include <fixx11h.h> class KAction; class KAboutData; @@ -143,6 +144,16 @@ private: bool autoResize; bool alone; + class EventsHelper; + EventsHelper* eventsHelper; +}; + +class MainWidget::EventsHelper : public QWidget +{ +public: + EventsHelper( MainWidget* parent ); +protected: + virtual bool x11Event( XEvent* e ); }; class KbdTray : public KSystemTrayIcon
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor