From a99ca5e3e13fd8d278841ebd627d5be4d30956f6 Mon Sep 17 00:00:00 2001 From: Benda Xu <heroxbd@gentoo.org> Date: Thu, 30 Jan 2020 10:40:02 +0800 Subject: [PATCH 4/7] extras/immodules/client-qt: build with Qt5. - Remove Qt3 and Qt4 codes. - This version of Qt5 builds and loads successfully, but cannot be actived and input characters. - Adoption to Qt5: 1. Replace all #ifdef QT4 blocks to unconditional counterparts. 2. Remove all #ifdef Q_WS_X11 blocks, as is not supported by Qt5. 3. Migrated QInputContextPlugin -> QPlatformInputContextPlugin. --- .../immodules/client-qt/im-scim-bridge-qt.cpp | 26 +-- extras/immodules/client-qt/qt3/Makefile.am | 64 ------- extras/immodules/client-qt/qt4/Makefile.am | 64 ------- .../client-qt/scim-bridge-client-common-qt.h | 5 - .../scim-bridge-client-imcontext-qt.cpp | 176 +++--------------- .../scim-bridge-client-imcontext-qt.h | 60 +----- ...cim-bridge-client-key-event-utility-qt.cpp | 71 +------ .../scim-bridge-client-key-event-utility-qt.h | 4 - .../client-qt/scim-bridge-client-qt.cpp | 2 - .../client-qt/scim-bridge-client-qt.h | 5 - 10 files changed, 36 insertions(+), 441 deletions(-) delete mode 100644 extras/immodules/client-qt/qt3/Makefile.am delete mode 100644 extras/immodules/client-qt/qt4/Makefile.am diff --git a/extras/immodules/client-qt/im-scim-bridge-qt.cpp b/extras/immodules/client-qt/im-scim-bridge-qt.cpp index bad0056..ddf1df6 100644 --- a/extras/immodules/client-qt/im-scim-bridge-qt.cpp +++ b/extras/immodules/client-qt/im-scim-bridge-qt.cpp @@ -19,14 +19,10 @@ #include <cassert> -#ifdef QT4 #include <Qt> -#include <QInputContextPlugin> +#include <qpa/qplatforminputcontextplugin_p.h> using namespace Qt; -#else -#include <qinputcontextplugin.h> -#endif #include "scim-bridge.h" #include "scim-bridge-client-common-qt.h" @@ -37,8 +33,10 @@ using namespace Qt; static ScimBridgeClientQt *client = NULL; /* The class Definition */ -class ScimBridgeInputContextPlugin: public QInputContextPlugin +class ScimBridgeInputContextPlugin: public QPlatformInputContextPlugin { + Q_OBJECT + Q_PLUGIN_METADATA(IID QPlatformInputContextFactoryInterface_iid FILE "scim.json") private: @@ -59,7 +57,7 @@ class ScimBridgeInputContextPlugin: public QInputContextPlugin QString description (const QString &key); - QInputContext *create (const QString &key); + ScimBridgeClientIMContext *create (const QString &key, const QStringList ¶m) Q_DECL_OVERRIDE; QString displayName (const QString &key); @@ -69,7 +67,6 @@ class ScimBridgeInputContextPlugin: public QInputContextPlugin /* Implementations */ QStringList ScimBridgeInputContextPlugin::scim_languages; - ScimBridgeInputContextPlugin::ScimBridgeInputContextPlugin () { } @@ -107,13 +104,10 @@ QString ScimBridgeInputContextPlugin::description (const QString &key) } -QInputContext *ScimBridgeInputContextPlugin::create (const QString &key) +ScimBridgeClientIMContext *ScimBridgeInputContextPlugin::create (const QString &key, const QStringList ¶m) { -#ifdef QT4 + Q_UNUSED(param); if (key.toLower () != SCIM_BRIDGE_IDENTIFIER_NAME) { -#else - if (key.lower () != SCIM_BRIDGE_IDENTIFIER_NAME) { -#endif return NULL; } else { if (client == NULL) client = new ScimBridgeClientQt (); @@ -127,8 +121,4 @@ QString ScimBridgeInputContextPlugin::displayName (const QString &key) return key; } -#ifdef QT4 -Q_EXPORT_PLUGIN2 (ScimBridgeInputContextPlugin, ScimBridgeInputContextPlugin) -#else -Q_EXPORT_PLUGIN (ScimBridgeInputContextPlugin) -#endif +#include "im-scim-bridge-qt.moc" diff --git a/extras/immodules/client-qt/qt3/Makefile.am b/extras/immodules/client-qt/qt3/Makefile.am deleted file mode 100644 index d4e22fb..0000000 --- a/extras/immodules/client-qt/qt3/Makefile.am +++ /dev/null @@ -1,64 +0,0 @@ -## Makefile.am -- Process this file with automake to produce Makefile.in -## -## Copyright (C) 2006 Ryo Dairiki -## -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation and -## appearing in the file LICENSE.LGPL included in the package of this file. -## You can also redistribute it and/or modify it under the terms of -## the GNU General Public License as published by the Free Software Foundation and -## appearing in the file LICENSE.GPL included in the package of this file. -## -## This library 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. - -if SCIM_BUILD_QT3_IMMODULE - -AM_CPPFLAGS = -I$(top_builddir) \ - -I$(top_srcdir) \ - -I$(top_srcdir)/extras/immodules/common \ - -I$(top_srcdir)/extras/immodules/client-common - -noinst_HEADERS = ../scim-bridge-client-qt.h ../scim-bridge-client-imcontext-qt.h ../scim-bridge-client-key-event-utility-qt.h ../scim-bridge-client-common-qt.h - -moduledir = @QT3_IM_MODULEDIR@ -module_LTLIBRARIES = im-scim.la - -im_scim_la_SOURCES = ../im-scim-bridge-qt.cpp \ - ../scim-bridge-client-qt.cpp \ - ../scim-bridge-client-imcontext-qt.cpp \ - ../scim-bridge-client-key-event-utility-qt.cpp \ - moc_scim-bridge-client-qt.cpp - -im_scim_la_CXXFLAGS=@QT3_CFLAGS@ -DQT_IMMODULE -im_scim_la_CFLAGS =@QT3_CFLAGS@ -DQT_IMMODULE - -im_scim_la_LDFLAGS = -rpath $(moduledir) \ - -avoid-version -no-undefined \ - -module \ - @QT3_LIBS@ - -im_scim_la_LIBADD = $(top_builddir)/extras/immodules/common/libscimbridgecommon.la \ - $(top_builddir)/extras/immodules/client-common/libscimbridgeclientcommon.la - -MOC = @QT3_MOC@ - -moc_scim-bridge-client-qt.cpp: ../scim-bridge-client-qt.h - $(MOC) $< -o $@ - -else - -moc_scim-bridge-client-qt.cpp: - touch $@ - -endif - -dist-hook: - -rm -f $(distdir)/moc_scim-bridge-client-qt.cpp - -MAINTAINERCLEANFILES = Makefile.in -CLEANFILES = moc_scim-bridge-client-qt.cpp - diff --git a/extras/immodules/client-qt/qt4/Makefile.am b/extras/immodules/client-qt/qt4/Makefile.am deleted file mode 100644 index 7699298..0000000 --- a/extras/immodules/client-qt/qt4/Makefile.am +++ /dev/null @@ -1,64 +0,0 @@ -## Makefile.am -- Process this file with automake to produce Makefile.in -## -## Copyright (C) 2006 Ryo Dairiki -## -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation and -## appearing in the file LICENSE.LGPL included in the package of this file. -## You can also redistribute it and/or modify it under the terms of -## the GNU General Public License as published by the Free Software Foundation and -## appearing in the file LICENSE.GPL included in the package of this file. -## -## This library 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. - -if SCIM_BUILD_QT4_IMMODULE - -AM_CPPFLAGS = -I$(top_builddir) \ - -I$(top_srcdir) \ - -I$(top_srcdir)/extras/immodules/common \ - -I$(top_srcdir)/extras/immodules/client-common - -noinst_HEADERS = ../scim-bridge-client-qt.h ../scim-bridge-client-imcontext-qt.h ../scim-bridge-client-key-event-utility-qt.h ../scim-bridge-client-common-qt.h - -moduledir = @QT4_IM_MODULEDIR@ -module_LTLIBRARIES = im-scim.la - -im_scim_la_SOURCES = ../im-scim-bridge-qt.cpp \ - ../scim-bridge-client-qt.cpp \ - ../scim-bridge-client-imcontext-qt.cpp \ - ../scim-bridge-client-key-event-utility-qt.cpp \ - moc_scim-bridge-client-qt.cpp - -im_scim_la_CXXFLAGS=@QT4_CFLAGS@ -DQT_IMMODULE -DQT4 -g -O0 -im_scim_la_CFLAGS =@QT4_CFLAGS@ -DQT_IMMODULE -DQT4 -g -O0 - -im_scim_la_LDFLAGS = -rpath $(moduledir) \ - -avoid-version -no-undefined \ - -module \ - @QT4_LIBS@ - -im_scim_la_LIBADD = $(top_builddir)/extras/immodules/common/libscimbridgecommon.la \ - $(top_builddir)/extras/immodules/client-common/libscimbridgeclientcommon.la - -MOC = @QT4_MOC@ - -moc_scim-bridge-client-qt.cpp: ../scim-bridge-client-qt.h - $(MOC) $< -o $@ - -else - -moc_scim-bridge-client-qt.cpp: - touch $@ - -endif - -dist-hook: - -rm -f $(distdir)/moc_scim-bridge-client-qt.cpp - -MAINTAINERCLEANFILES = Makefile.in -CLEANFILES = moc_scim-bridge-client-qt.cpp - diff --git a/extras/immodules/client-qt/scim-bridge-client-common-qt.h b/extras/immodules/client-qt/scim-bridge-client-common-qt.h index 6e5c502..6fcac17 100644 --- a/extras/immodules/client-qt/scim-bridge-client-common-qt.h +++ b/extras/immodules/client-qt/scim-bridge-client-common-qt.h @@ -27,13 +27,8 @@ #ifndef SCIMBRIDGECOMMONQT_H_ #define SCIMBRIDGECOMMONQT_H_ -#ifdef QT4 #include <QString> #include <QStringList> -#else -#include <qstring.h> -#include <qstringlist.h> -#endif #include "scim-bridge.h" diff --git a/extras/immodules/client-qt/scim-bridge-client-imcontext-qt.cpp b/extras/immodules/client-qt/scim-bridge-client-imcontext-qt.cpp index 2f62bcc..26c0027 100644 --- a/extras/immodules/client-qt/scim-bridge-client-imcontext-qt.cpp +++ b/extras/immodules/client-qt/scim-bridge-client-imcontext-qt.cpp @@ -20,16 +20,12 @@ #include <cassert> #include <string> -#ifdef QT4 #include <QColor> #include <QInputMethodEvent> #include <QPalette> #include <QTextCharFormat> -#ifdef Q_WS_X11 #include <QX11Info> -#endif -#endif #include "scim-bridge-output.h" #include "scim-bridge-string.h" @@ -39,13 +35,11 @@ #include "scim-bridge-client-imcontext-qt.h" #include "scim-bridge-client-key-event-utility-qt.h" -#ifdef QT4 using namespace std; using namespace Qt; typedef QInputMethodEvent::Attribute QAttribute; -#endif /* Static variables */ class ScimBridgeClientIMContextImpl; @@ -66,22 +60,16 @@ class ScimBridgeClientIMContextImpl: public _ScimBridgeClientIMContext bool x11FilterEvent (QWidget *widget, XEvent *event); bool filterEvent (const QEvent *event); -#ifdef QT4 void update (); QString identifierName (); QString language (); - void setFocusWidget (QWidget *widget); + bool isValid() const Q_DECL_OVERRIDE; + void setFocusObject (QObject *object) Q_DECL_OVERRIDE; void widgetDestroyed (QWidget *widget); bool isComposing () const; void mouseHandler (int offset, QMouseEvent *event); -#else - void setFocus (); - void unsetFocus (); - void setMicroFocus (int x, int y, int w, int h, QFont *font = 0); - void mouseHandler (int offset, QEvent::Type type, ButtonState button, ButtonState state); -#endif void reset (); @@ -103,11 +91,9 @@ class ScimBridgeClientIMContextImpl: public _ScimBridgeClientIMContext scim_bridge_imcontext_id_t get_id () const; void set_id (scim_bridge_imcontext_id_t new_id); -#ifdef QT4 bool get_surrounding_text (unsigned int before_max, unsigned int after_max, char **string, int *cursor_position); bool delete_surrounding_text (int offset, int length); bool replace_surrounding_text (const char *text, int cursor_position); -#endif private: @@ -117,12 +103,7 @@ class ScimBridgeClientIMContextImpl: public _ScimBridgeClientIMContext QString preedit_string; -#ifdef QT4 QList<QAttribute> preedit_attributes; -#else - int preedit_selected_offset; - int preedit_selected_length; -#endif int preedit_cursor_position; @@ -165,12 +146,7 @@ ScimBridgeClientIMContextImpl::ScimBridgeClientIMContextImpl (): id (-1), preedi { scim_bridge_pdebugln (5, "ScimBridgeClientIMContextImpl::ScimBridgeClientIMContextImpl ()"); -#ifdef QT4 preedit_attributes.push_back (QAttribute (QInputMethodEvent::Cursor, preedit_cursor_position, true, 0)); -#else - preedit_selected_offset = 0; - preedit_selected_length = 0; -#endif if (!scim_bridge_client_is_messenger_opened ()) { scim_bridge_perrorln ("The messenger is now down"); @@ -197,8 +173,6 @@ ScimBridgeClientIMContextImpl::~ScimBridgeClientIMContextImpl () } } -#ifdef QT4 - QString ScimBridgeClientIMContextImpl::identifierName () { return SCIM_BRIDGE_IDENTIFIER_NAME; @@ -216,16 +190,20 @@ void ScimBridgeClientIMContextImpl::widgetDestroyed (QWidget *widget) update (); } -void ScimBridgeClientIMContextImpl::setFocusWidget (QWidget *widget) +bool ScimBridgeClientIMContextImpl::isValid() const { - scim_bridge_pdebugln (4, "ScimBridgeClientIMContextImpl::setFocusWidget ()"); - QInputContext::setFocusWidget (widget); - if (widget == NULL) { - focus_out (); - } - else { - focus_in (); - } + return true; +} + +void ScimBridgeClientIMContextImpl::setFocusObject (QObject *object) +{ + scim_bridge_pdebugln (4, "ScimBridgeClientIMContextImpl::setFocusObject ()"); + QPlatformInputContext::setFocusObject (object); + if (object == NULL) { + focus_out (); + } else { + focus_in (); + } update (); } @@ -276,43 +254,10 @@ bool ScimBridgeClientIMContextImpl::replace_surrounding_text (const char *text, return false; } -#else - -void ScimBridgeClientIMContextImpl::setFocus () -{ - scim_bridge_pdebugln (4, "ScimBridgeClientIMContextImpl::setFocus ()"); - - focus_in (); -} - - -void ScimBridgeClientIMContextImpl::unsetFocus () -{ - scim_bridge_pdebugln (4, "ScimBridgeClientIMContextImpl::unsetFocus ()"); - - focus_out (); -} - - -void ScimBridgeClientIMContextImpl::setMicroFocus (int x, int y, int w, int h, QFont *qfont) -{ - scim_bridge_pdebugln (4, "ScimBridgeClientIMContextImpl::setMicroFocus ()"); - - QPoint new_cursor_location (x, y + h); - set_cursor_location (new_cursor_location); -} - -void ScimBridgeClientIMContextImpl::mouseHandler (int offset, QEvent::Type type, ButtonState button, ButtonState state) -{ -} -#endif - - bool ScimBridgeClientIMContextImpl::x11FilterEvent (QWidget *widget, XEvent *xevent) { scim_bridge_pdebugln (5, "ScimBridgeClientIMContextImpl::x11FilterEvent ()"); -#ifdef Q_WS_X11 if (key_event_forwarded || (xevent->type != XKeyPress && xevent->type != XKeyRelease)) return false; if (focused_imcontext != this) focus_in (); @@ -331,17 +276,14 @@ bool ScimBridgeClientIMContextImpl::x11FilterEvent (QWidget *widget, XEvent *xev return consumed; } } -#endif return false; } - bool ScimBridgeClientIMContextImpl::filterEvent (const QEvent *qevent) { scim_bridge_pdebugln (5, "ScimBridgeClientIMContextImpl::filterEvent ()"); -#ifndef Q_WS_X11 if (key_event_forwarded || (qevent->type () != QEvent::KeyPress && qevent->type () != QEvent::KeyRelease)) return false; if (focused_imcontext != this) focus_in (); @@ -364,7 +306,6 @@ bool ScimBridgeClientIMContextImpl::filterEvent (const QEvent *qevent) return consumed; } } -#endif return false; } @@ -375,13 +316,8 @@ void ScimBridgeClientIMContextImpl::reset () scim_bridge_pdebugln (5, "ScimBridgeClientIMContextImpl::reset ()"); preedit_cursor_position = 0; -#ifdef QT4 preedit_attributes.clear (); preedit_attributes.push_back (QAttribute (QInputMethodEvent::Cursor, preedit_cursor_position, true, 0)); -#else - preedit_selected_offset = 0; - preedit_selected_length = 0; -#endif preedit_string = ""; if (scim_bridge_client_is_messenger_opened ()) { @@ -389,10 +325,6 @@ void ScimBridgeClientIMContextImpl::reset () scim_bridge_perrorln ("An IOException at filterEvent ()"); } } - -#ifndef QT4 - QInputContext::reset (); -#endif } @@ -469,20 +401,16 @@ void ScimBridgeClientIMContextImpl::commit () scim_bridge_pdebugln (5, "ScimBridgeClientIMContextImpl::commit ()"); if (commit_string.length () <= 0) return; -#ifdef QT4 scim_bridge_pdebugln (9, "commit string: %s", commit_string.toUtf8 ().data ()); -#endif + + QObject *input = qApp->focusObject(); + if (!input) return; const bool is_composing = isComposing (); -#ifdef QT4 QInputMethodEvent commit_event; commit_event.setCommitString (commit_string); - sendEvent (commit_event); -#else - if (!is_composing) sendIMEvent (QEvent::IMStart); - sendIMEvent (QEvent::IMEnd, commit_string); -#endif + QCoreApplication::sendEvent (input, &commit_event); if (is_composing) update_preedit (); } @@ -495,21 +423,9 @@ void ScimBridgeClientIMContextImpl::forward_key_event (const ScimBridgeKeyEvent QWidget *focused_widget = qApp->focusWidget (); if (focused_widget != NULL) { key_event_forwarded = true; -#ifdef Q_WS_X11 - const WId window_id = focused_widget->winId (); -#ifdef QT4 - Display *x11_display = QX11Info::display(); -#else - Display *x11_display = qt_xdisplay (); -#endif - XEvent *x_event = scim_bridge_key_event_bridge_to_x11 (key_event, x11_display, window_id); - qApp->x11ProcessEvent (x_event); - free (x_event); -#else QKeyEvent *forwarded_key_event = scim_bridge_key_event_bridge_to_qt (key_event); QApplication::sendEvent (focused_widget, forwarded_key_event); delete forwarded_key_event; -#endif key_event_forwarded = false; } else { scim_bridge_pdebugln (4, "No widget is focused"); @@ -525,13 +441,8 @@ void ScimBridgeClientIMContextImpl::set_preedit_shown (bool shown) if (!preedit_shown) { preedit_string = ""; preedit_cursor_position = 0; -#ifdef QT4 preedit_attributes.clear (); preedit_attributes.push_back (QAttribute (QInputMethodEvent::Cursor, preedit_cursor_position, true, 0)); -#else - preedit_selected_offset = 0; - preedit_selected_length = 0; -#endif } } @@ -554,13 +465,8 @@ void ScimBridgeClientIMContextImpl::set_preedit_attributes (ScimBridgeAttribute* { scim_bridge_pdebugln (5, "ScimBridgeClientIMContextImpl::set_preedit_attribute ()"); -#ifdef QT4 preedit_attributes.clear (); preedit_attributes.push_back (QAttribute (QInputMethodEvent::Cursor, preedit_cursor_position, true, 0)); -#else - preedit_selected_offset = 0; - preedit_selected_length = 0; -#endif for (int i = 0; i < attribute_count; ++i) { const ScimBridgeAttribute *attribute = attributes[i]; @@ -570,7 +476,6 @@ void ScimBridgeClientIMContextImpl::set_preedit_attributes (ScimBridgeAttribute* const scim_bridge_attribute_type_t attribute_type = scim_bridge_attribute_get_type (attribute); const scim_bridge_attribute_value_t attribute_value = scim_bridge_attribute_get_value (attribute); -#ifdef QT4 const size_t attribute_length = attribute_end - attribute_begin; const QWidget *focused_widget = qApp->focusWidget (); @@ -637,13 +542,6 @@ void ScimBridgeClientIMContextImpl::set_preedit_attributes (ScimBridgeAttribute* default: break; } -#else - if (attribute_type == ATTRIBUTE_DECORATE && (attribute_value == SCIM_BRIDGE_ATTRIBUTE_DECORATE_HIGHLIGHT || attribute_value == SCIM_BRIDGE_ATTRIBUTE_DECORATE_REVERSE)) { - preedit_selected_offset = attribute_begin; - preedit_selected_length = attribute_end - attribute_begin; - break; - } -#endif } } @@ -652,26 +550,13 @@ void ScimBridgeClientIMContextImpl::update_preedit () { scim_bridge_pdebugln (5, "ScimBridgeClientIMContextImpl::update_preedit ()"); -#ifdef QT4 + QObject *input = qApp->focusObject(); + if (!input) return; + preedit_attributes[0] = QAttribute (QInputMethodEvent::Cursor, preedit_cursor_position, true, 0); QInputMethodEvent im_event (preedit_string, preedit_attributes); - sendEvent (im_event); + QCoreApplication::sendEvent(input, &im_event); update (); -#else - if (preedit_shown) { - if (!isComposing ()) sendIMEvent (QEvent::IMStart); - const size_t preedit_length = preedit_string.length (); - - size_t cursor_position = preedit_cursor_position; - if (cursor_position > preedit_length) cursor_position = preedit_length; - - size_t selected_length = preedit_selected_length; - if (cursor_position + selected_length > preedit_length) selected_length = preedit_length - cursor_position; - sendIMEvent (QEvent::IMCompose, preedit_string, cursor_position, selected_length); - } else { - if (isComposing ()) sendIMEvent (QEvent::IMEnd); - } -#endif } @@ -780,37 +665,22 @@ void scim_bridge_client_imcontext_update_preedit (ScimBridgeClientIMContext *imc boolean scim_bridge_client_imcontext_get_surrounding_text (ScimBridgeClientIMContext *imcontext, int before_max, int after_max, char **string, int *cursor_position) { -#ifdef QT4 ScimBridgeClientIMContextImpl *imcontext_impl = static_cast<ScimBridgeClientIMContextImpl*> (imcontext); return imcontext_impl->get_surrounding_text (before_max, after_max, string, cursor_position); -#else - scim_bridge_perrorln ("FIXME: scim_bridge_client_imcontext_get_surrounding_text () is not yet implemented."); - return FALSE; -#endif } boolean scim_bridge_client_imcontext_delete_surrounding_text (ScimBridgeClientIMContext *imcontext, int offset, int length) { -#ifdef QT4 ScimBridgeClientIMContextImpl *imcontext_impl = static_cast<ScimBridgeClientIMContextImpl*> (imcontext); return imcontext_impl->delete_surrounding_text (offset, length); -#else - scim_bridge_perrorln ("FIXME: scim_bridge_client_imcontext_delete_surrounding_text () is not yet implemented."); - return FALSE; -#endif } boolean scim_bridge_client_imcontext_replace_surrounding_text (ScimBridgeClientIMContext *imcontext, int cursor_position, const char *string) { -#ifdef QT4 ScimBridgeClientIMContextImpl *imcontext_impl = static_cast<ScimBridgeClientIMContextImpl*> (imcontext); return imcontext_impl->replace_surrounding_text (string, cursor_position); -#else - scim_bridge_perrorln ("FIXME: scim_bridge_client_imcontext_replace_surrounding_text () is not yet implemented."); - return FALSE; -#endif } diff --git a/extras/immodules/client-qt/scim-bridge-client-imcontext-qt.h b/extras/immodules/client-qt/scim-bridge-client-imcontext-qt.h index 2e7abad..4bec2f7 100644 --- a/extras/immodules/client-qt/scim-bridge-client-imcontext-qt.h +++ b/extras/immodules/client-qt/scim-bridge-client-imcontext-qt.h @@ -26,25 +26,14 @@ #ifndef SCIMBRIDGECLIENTIMCONTEXTQT_H_ #define SCIMBRIDGECLIENTIMCONTEXTQT_H_ -#ifdef QT4 #include <QApplication> #include <QEvent> #include <QFont> -#include <QInputContext> +#include <qpa/qplatforminputcontext.h> #include <QInputMethodEvent> #include <QObject> #include <QPoint> #include <QWidget> -#else -#include <qapplication.h> -#include <qevent.h> -#include <qfont.h> -#include <qinputcontext.h> -#include <qobject.h> -#include <qptrlist.h> -#include <qpoint.h> -#include <qwidget.h> -#endif #include "scim-bridge.h" #include "scim-bridge-attribute.h" @@ -56,7 +45,7 @@ /** * IMContext class for qt client. */ -struct _ScimBridgeClientIMContext: public QInputContext +struct _ScimBridgeClientIMContext: public QPlatformInputContext { public: @@ -93,15 +82,6 @@ struct _ScimBridgeClientIMContext: public QInputContext */ virtual ~_ScimBridgeClientIMContext () {} - /** - * Filter a event from X11. - * - * @param widget The widget. - * @param A event from X11. - * @return If this event is consumed or not. - */ - virtual bool x11FilterEvent (QWidget *widget, XEvent *event) = 0; - /** * Filter a key event. * @@ -110,7 +90,6 @@ struct _ScimBridgeClientIMContext: public QInputContext */ virtual bool filterEvent (const QEvent *event) = 0; -#ifdef QT4 /** * The focus has been changed. */ @@ -145,41 +124,6 @@ struct _ScimBridgeClientIMContext: public QInputContext */ virtual void widgetDestroyed (QWidget *widget) = 0; -#else - - /** - * Focus an IMContext. - */ - virtual void setFocus () = 0; - - /** - * Unfocus an IMContext. - */ - virtual void unsetFocus () = 0; - - /** - * Set the focused area in the display. - * - * @param x The X loation of the focused area. - * @param y The Y loation of the focused area. - * @param w The width of the focused area. - * @param h The height of the focused area. - * @param font The font. - */ - virtual void setMicroFocus (int x, int y, int w, int h, QFont *font = 0) = 0; - - /** - * Filter a mouse event. - * - * @param offset The cursor offset in the preedit string. - * @param type The type of the event. - * @param button The button of this event. - * @param state The state of the button. - */ - virtual void mouseHandler (int offset, QEvent::Type type, ButtonState button, ButtonState state) = 0; - -#endif - /** * Reset the current IME. */ diff --git a/extras/immodules/client-qt/scim-bridge-client-key-event-utility-qt.cpp b/extras/immodules/client-qt/scim-bridge-client-key-event-utility-qt.cpp index 5db24ba..5d52ea3 100644 --- a/extras/immodules/client-qt/scim-bridge-client-key-event-utility-qt.cpp +++ b/extras/immodules/client-qt/scim-bridge-client-key-event-utility-qt.cpp @@ -22,15 +22,10 @@ #include <cstdlib> #include <map> -#ifdef QT4 #include <QApplication> #include <QChar> #include <QEvent> #include <QKeyEvent> -#else -#include <qapplication.h> -#include <qkeycode.h> -#endif #include "scim-bridge-output.h" #include "scim-bridge-client-key-event-utility-qt.h" @@ -82,13 +77,8 @@ static void static_initialize () register_key (Qt::Key_Up, SCIM_BRIDGE_KEY_CODE_Up); register_key (Qt::Key_Right, SCIM_BRIDGE_KEY_CODE_Right); register_key (Qt::Key_Down, SCIM_BRIDGE_KEY_CODE_Down); -#ifdef QT4 register_key (Qt::Key_PageUp, SCIM_BRIDGE_KEY_CODE_Prior); - register_key (Qt::Key_PageUp, SCIM_BRIDGE_KEY_CODE_Next); -#else - register_key (Qt::Key_Prior, SCIM_BRIDGE_KEY_CODE_Prior); - register_key (Qt::Key_Next, SCIM_BRIDGE_KEY_CODE_Next); -#endif + register_key (Qt::Key_PageDown, SCIM_BRIDGE_KEY_CODE_Next); register_key (Qt::Key_CapsLock, SCIM_BRIDGE_KEY_CODE_Caps_Lock); register_key (Qt::Key_NumLock, SCIM_BRIDGE_KEY_CODE_Num_Lock); register_key (Qt::Key_ScrollLock, SCIM_BRIDGE_KEY_CODE_Scroll_Lock); @@ -184,34 +174,17 @@ QKeyEvent *scim_bridge_key_event_bridge_to_qt (const ScimBridgeKeyEvent *bridge_ if (bridge_key_code < 0x1000) { if (bridge_key_code >= SCIM_BRIDGE_KEY_CODE_a && bridge_key_code <= SCIM_BRIDGE_KEY_CODE_z) { ascii_code = bridge_key_code; -#ifdef QT4 - qt_key_code = QChar (ascii_code).toUpper ().toAscii (); -#else - qt_key_code = QChar (ascii_code).upper (); -#endif + qt_key_code = QChar (ascii_code).toUpper ().toLatin1 (); } else { ascii_code = bridge_key_code; qt_key_code = bridge_key_code; } } else if (bridge_key_code < 0x3000) { -#ifdef Q_WS_WIN qt_key_code = bridge_key_code; } else { - qt_key_code = Key_unknown; + qt_key_code = Qt::Key_unknown; } -#else - qt_key_code = bridge_key_code | Qt::UNICODE_ACCEL; - } else { - map<scim_bridge_key_code_t, int>::iterator iter = bridge_to_qt_key_map.find (bridge_key_code); - if (iter != bridge_to_qt_key_map.end ()) { - qt_key_code = iter->second; - } else { - qt_key_code = Qt::Key_unknown; - } - } -#endif -#ifdef QT4 Qt::KeyboardModifiers modifiers = Qt::NoModifier; if (scim_bridge_key_event_is_alt_down (bridge_key_event)) modifiers |= Qt::AltModifier; @@ -220,16 +193,6 @@ QKeyEvent *scim_bridge_key_event_bridge_to_qt (const ScimBridgeKeyEvent *bridge_ if (scim_bridge_key_event_is_meta_down (bridge_key_event)) modifiers |= Qt::MetaModifier; return new QKeyEvent (type, qt_key_code, modifiers); -#else - unsigned int modifiers = 0; - - if (scim_bridge_key_event_is_alt_down (bridge_key_event)) modifiers |= Qt::AltButton; - if (scim_bridge_key_event_is_shift_down (bridge_key_event)) modifiers |= Qt::ShiftButton; - if (scim_bridge_key_event_is_control_down (bridge_key_event)) modifiers |= Qt::ControlButton; - if (scim_bridge_key_event_is_meta_down (bridge_key_event)) modifiers |= Qt::MetaButton; - - return new QKeyEvent (type, qt_key_code, ascii_code, modifiers); -#endif } @@ -239,7 +202,6 @@ ScimBridgeKeyEvent *scim_bridge_key_event_qt_to_bridge (const QKeyEvent *key_eve ScimBridgeKeyEvent *bridge_key_event = scim_bridge_alloc_key_event (); -#ifdef QT4 const Qt::KeyboardModifiers modifiers = key_event->modifiers (); if (modifiers & Qt::ShiftModifier) { @@ -254,22 +216,6 @@ ScimBridgeKeyEvent *scim_bridge_key_event_qt_to_bridge (const QKeyEvent *key_eve if (modifiers & Qt::MetaModifier) { scim_bridge_key_event_set_meta_down (bridge_key_event, TRUE); } -#else - const int modifiers = key_event->state (); - - if (modifiers & Qt::ShiftButton) { - scim_bridge_key_event_set_shift_down (bridge_key_event, TRUE); - } - if (modifiers & Qt::ControlButton) { - scim_bridge_key_event_set_control_down (bridge_key_event, TRUE); - } - if (modifiers & Qt::AltButton) { - scim_bridge_key_event_set_alt_down (bridge_key_event, TRUE); - } - if (modifiers & Qt::MetaButton) { - scim_bridge_key_event_set_meta_down (bridge_key_event, TRUE); - } -#endif const int qt_key_code = key_event->key (); int bridge_key_code; @@ -294,17 +240,9 @@ ScimBridgeKeyEvent *scim_bridge_key_event_qt_to_bridge (const QKeyEvent *key_eve } if (!scim_bridge_key_event_is_caps_lock_down (bridge_key_event) ^ scim_bridge_key_event_is_shift_down (bridge_key_event)) { -#ifdef QT4 bridge_key_code = QChar (qt_key_code).toLower ().unicode (); -#else - bridge_key_code = QChar (qt_key_code).lower ().unicode (); -#endif } else { -#ifdef QT4 bridge_key_code = QChar (qt_key_code).toUpper ().unicode (); -#else - bridge_key_code = QChar (qt_key_code).upper ().unicode (); -#endif } } else { map<int, scim_bridge_key_code_t>::iterator iter = qt_to_bridge_key_map.find (qt_key_code); @@ -324,7 +262,6 @@ ScimBridgeKeyEvent *scim_bridge_key_event_qt_to_bridge (const QKeyEvent *key_eve } -#ifdef Q_WS_X11 XEvent *scim_bridge_key_event_bridge_to_x11 (const ScimBridgeKeyEvent *bridge_key_event, Display *display, WId window_id) { XEvent *x_event = static_cast<XEvent*> (malloc (sizeof (XEvent))); @@ -412,5 +349,3 @@ ScimBridgeKeyEvent* scim_bridge_key_event_x11_to_bridge (const XEvent *x_event) return bridge_key_event; } - -#endif diff --git a/extras/immodules/client-qt/scim-bridge-client-key-event-utility-qt.h b/extras/immodules/client-qt/scim-bridge-client-key-event-utility-qt.h index c099957..09f2f5d 100644 --- a/extras/immodules/client-qt/scim-bridge-client-key-event-utility-qt.h +++ b/extras/immodules/client-qt/scim-bridge-client-key-event-utility-qt.h @@ -32,7 +32,6 @@ #include "scim-bridge-client-common-qt.h" -#ifdef Q_WS_X11 #include <X11/Xlib.h> #include <X11/keysym.h> #include <X11/Xutil.h> @@ -40,7 +39,6 @@ static const int XKeyPress = KeyPress; static const int XKeyRelease = KeyRelease; #undef KeyPress #undef KeyRelease -#endif class QKeyEvent; @@ -60,7 +58,6 @@ QKeyEvent *scim_bridge_key_event_bridge_to_qt (const ScimBridgeKeyEvent *bridge_ */ ScimBridgeKeyEvent *scim_bridge_key_event_qt_to_bridge (const QKeyEvent *qt_key_event); -#ifdef Q_WS_X11 /** * Translate a key event from scim-bridge into X11. * @@ -79,6 +76,5 @@ XEvent *scim_bridge_key_event_bridge_to_x11 (const ScimBridgeKeyEvent *bridge_ke * @return The key event from scim-bridge. */ ScimBridgeKeyEvent* scim_bridge_key_event_x11_to_bridge (const XEvent *x11_event); -#endif #endif /*SCIMBRIDGECLIENTKEYEVENTUTILITYQT_H_*/ diff --git a/extras/immodules/client-qt/scim-bridge-client-qt.cpp b/extras/immodules/client-qt/scim-bridge-client-qt.cpp index 4ad24fa..7495ca6 100644 --- a/extras/immodules/client-qt/scim-bridge-client-qt.cpp +++ b/extras/immodules/client-qt/scim-bridge-client-qt.cpp @@ -23,9 +23,7 @@ #include "scim-bridge-client-qt.h" -#ifdef QT4 using namespace Qt; -#endif /* Static variables */ static ScimBridgeClientQt *client = NULL; diff --git a/extras/immodules/client-qt/scim-bridge-client-qt.h b/extras/immodules/client-qt/scim-bridge-client-qt.h index dd0ce51..65ad450 100644 --- a/extras/immodules/client-qt/scim-bridge-client-qt.h +++ b/extras/immodules/client-qt/scim-bridge-client-qt.h @@ -26,13 +26,8 @@ #ifndef SCIMBRIDGECLIENTQT_H_ #define SCIMBRIDGECLIENTQT_H_ -#ifdef QT4 #include <QObject> #include <QSocketNotifier> -#else -#include <qobject.h> -#include <qsocketnotifier.h> -#endif #include "scim-bridge.h" #include "scim-bridge-client-imcontext-qt.h" -- 2.37.3