summaryrefslogtreecommitdiffstats
path: root/src/gui/kernel/qapplication_s60.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Fixing Keypad Navigation on N95 devicesAlessandro Portale2009-10-051-1/+6
| | | | | | | | | HAL::Get(HALData::EPen, TInt& result) may set 'result' to 1 on some 3.1 systems (e.g. N95). But we know that S60 systems below 5.0 did not support touch. Let's use tahth knowledge and work-around that N95 HAL bug. Rev-By: Jani Hautakangas
* Doc: silence qdoc warnings in S60 specific documentation.Volker Hilsheimer2009-10-031-1/+2
| | | | Not sure why the migration classes should be are \obsolete.
* Merge commit 'qt/4.6' into mmfphononFrans Englich2009-10-021-2/+49
|\ | | | | | | | | Conflicts: src/gui/kernel/qwidget_s60.cpp
| * S60 qt_init() fix to set system fontmread2009-10-011-0/+4
| | | | | | | | | | | | | | | | | | | | This gives the system font the default font family name, which is appropriate for S60, "Series 60 Sans". Without this, the system font has a requested family name of "Helvetica". Upside of this fix is that it makes tst_qFontComboBox pass on S60 Reviewed-by: Alessandro Portale
| * Merge branch 'focusFixes' into 4.6axis2009-09-301-2/+45
| |\ | | | | | | | | | | | | | | | Conflicts: src/gui/kernel/qwidget_p.h src/gui/kernel/qwidget_s60.cpp
| | * Fixed some focus issues on Symbian.axis2009-09-301-3/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There are really two bugs that are fixed in this commit: - SetFocus() in Symbian does not automatically clear focus on the previously focused control, so we have to remember that control and clear it ourselves. - Symbian assumes that it is always the control at the top of the control stack that should have focus, and if this isn't the case, focus may or may not work depending on whether Symbian has had a chance to reset the focus or not. Therefore, whenever we change focus on a control, we have to also readd that control to the top of the stack, to ensure that it stays focused. RevBy: Janne Anttila
| | * Revert "Switched to asynchronous focus handling on Symbian."axis2009-09-301-2/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit b6377f43410b14125a66ffd02acde69cfb6e455e. The asynchronous handling caused too many headaches with input methods, which expect the focus status to be updated immediately. This may break the test case that was originally fixed by this patch (I cannot find out which one at the moment), but that will have to be solved in a different way. Conflicts: src/corelib/kernel/qcoreevent.cpp src/corelib/kernel/qcoreevent.h src/gui/kernel/qwidget.cpp src/gui/kernel/qwidget_p.h src/gui/kernel/qwidget_s60.cpp
* | | Merge branch 'mmfphonon' of git@scm.dev.nokia.troll.no:qt/qt-s60-public into ↵Gareth Stockwell2009-10-011-0/+1
|\ \ \ | |/ / | | | | | | mmfphonon
| * | Merge commit 'qt/4.6' into mmfphononFrans Englich2009-09-291-0/+1
| |\ \ | | |/
| | * Fix bug with posting events from HandleCommandL on Symbian.Jason Barron2009-09-291-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Increase the loop level counter here because this is a system event entry point. Previously, posting a deferred delete event from this function (or triggering an action that posted this event) would end up with the event not being processed on time. The reason is that these events are only processed when the event loop that posted the event returns. Since the loop counter was not previously incremented, this "nested loop" was not detected so the event would only be processed when the main event loop returned which is typically at the end of the application. Reviewed-by: axis
* | | Map redraw rectangle into co-ordinate system of backing store, for native ↵Gareth Stockwell2009-10-011-4/+9
|/ / | | | | | | | | | | child widgets The implementation of QSymbianControl::Draw previously assumed that the co-ordinate system of the control always matched that of the backing store - in other words, that the only widget for which a QSymbianControl was created would be the top-level widget. Now that create_sys has been modified to create a native window (and therefore a QSymbianControl) for child widgets on which winId() is called, this assumption is no longer valid. This function has therefore been modified to map the redraw rectangle into the coordinate system of the backing store.
* | Merge commit 'qt/4.6' into mmfphononFrans Englich2009-09-291-12/+23
|\ \ | |/
| * Add a more proper shutdown sequence for Symbian applications.Jason Barron2009-09-291-3/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously both EEikCmdExit and EAknSoftkeyExit were hard coded to call exit() which promptly exited the event loop without the chance to do any UI operations. With this patch, we handle the two cases differently and allow people to essentially make the right soft key a hide instead of an exit simply by reimplementing closeEvent() and ignoring the event. EAknSoftkeyExit is now a soft exit since this does not seem to be a mandatory exit in S60. By sending a QCloseEvent to QApplication this has the effect that all windows are closed (sent another QCloseEvent) and if one of them chooses to ignore this event, the application and UI are both kept alive. This is similar to how Qt behaves on other platforms. If all windows accept the close event (default), then the application will quit() as normal. This command is sent from the right soft key. EEikCmdExit is mapped similarly as before, but calls quit() instead of exit() to be aligned with other platforms. This will cause the aboutToQuit signal to be emitted which maps very well to Qt because UI interaction is not permitted from this signal and wouldn't work in S60 anyway because in the case of EEikCmdExit, the UI has already been torn down by the UI framework. This command is sent by the End key. We could take this one step further and intercept the key event and prevent it from going to the UI framework and tearing down the UI, but this is a little too evil IMHO. If people really want to intercept that event, they can do it by reimplementing the platform specific event filter. This is equivalent to how it would be done in S60 (reimplementing HandleWsEvent). Reviewed-by: axis Reviewed-by: mread
| * doc: add some more \since 4.6 tagsVolker Hilsheimer2009-09-281-0/+4
| |
| * Fix app showing a blank screen after switching to it using task switcherShane Kearns2009-09-251-9/+10
| | | | | | | | | | | | | | | | | | | | | | On S60, the widget backing store is dropped when app window is hidden in order to save memory. This has a side effect that the widgets are not redrawn when the backing store is recreated if they have static content. Fix is to invalidate the backing buffer after recreating it, and repaint the widget. Reviewed-by: Jason Barron
* | Removed trace statements from QtGuiGareth Stockwell2009-09-281-63/+1
| |
* | Fixed logical error in QSymbianControl::DrawGareth Stockwell2009-09-281-4/+4
| |
* | Revert "Revert all GUI changes from the MMF work."Frans Englich2009-09-281-12/+89
|/ | | | This reverts commit 9345d47c3945b61a27724508e8b3d0aaf7b57bcf.
* Compile fix for platforms prior to Symbian^3.Jason Barron2009-09-231-0/+6
| | | | | | | | | The advanced pointer events are only available on Symbian^3 and higher so we need to make sure these are protected by an #ifdef. We might have to re-factor this later into a plugin in order to get this running on older versions. Reviewed-by: axis
* Merge branch 's60MainHelperClasses' into 4.6axis2009-09-231-1/+40
|\
| * Added support for using custom application objects on S60.axis2009-09-231-1/+40
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | With this patch, the application developer can use his own CEikApplication, CEikDocument and CEikAppUi classes with Qt, by deriving from QS60MainApplication, QSMainDocument and QS60MainAppUi, respectively. He can then register a factory function in the QApplication constructor to have his own objects created during the framework initialization. This patch also fixes some Qt code style issues. RevBy: Jason Barron RevBy: mread RevBy: Sami Merila RevBy: Shane Kearns
* | Implement advanced pointer handling on S60Bradley T. Hughes2009-09-231-2/+74
|/ | | | | | | | | | | | | Since we only get one pointer event at a time, we need to keep a list of all known touch points in QApplicationPrivate (otherwise the QTouchEvent won't contain enough points). The QApplication machinery can handle having inactive touch-points in the list, so at the moment we don't clear the list. We treat PointerNumber zero as the primary touch point, and only send regular mouse events for that pointer, never for the others. Reviewed-by: Jason Barron
* Refactor soft keys implementation.Jason Barron2009-09-211-9/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Reviewed-by: Alessandro Portale Squashed commit of the following: commit dae5eda6996d48c12c4a5efd3f6042eb293bacbf Author: Jason Barron <jbarron@trolltech.com> Date: Fri Sep 18 10:32:26 2009 +0200 Only update soft keys when KEYPAD_NAVIGATION is enabled. For 4.6, let's just call these functions when keypad navigation is defined to minimize the impact on other platforms. They should probably get thier own define some day. commit 30a730553531f0f138de5eddb30413936a34fa36 Author: Jason Barron <jbarron@trolltech.com> Date: Fri Sep 18 10:30:23 2009 +0200 Add/remove the menu bar action when menu bar is added/removed. commit a83343a2870b34c228c8bc5e6274607b0e97baf6 Author: Jason Barron <jbarron@trolltech.com> Date: Fri Sep 18 10:28:55 2009 +0200 Compile fix for other platforms commit 39c9e3a0a1d3d62bf6ebd3212cfd2a81b86b9b2a Author: Jason Barron <jbarron@trolltech.com> Date: Thu Sep 17 21:37:59 2009 +0200 Fix 'softkeys' example after API re-factoring. Clean up this example and use the simplified soft key API. Now the actions are only allocated in the constructor and dynamically updated by calling addAction and removeAction. commit 314e45c33f40552db74e61755c2a3b0f8c77a41a Author: Jason Barron <jbarron@trolltech.com> Date: Thu Sep 17 21:30:32 2009 +0200 Re-factor and simplify the soft keys API. Several things here: - Move all the logic into QSoftKeyManager - Move the files into 'kernel' since it is not a widget - Remove QWidget::setSoftKey*(). Use addAction/removeAction instead - Made soft keys update on focus, window activation, and action changes. - Fixed several memory leaks where QAction's were created too often - QAction ownership pushed out to widget's - Added Select/Cancel soft keys for comboboxes and menus to be more consistent to platform look-and-feel. commit fb4c240d970262e9872dc5737df6808879143c75 Author: Jason Barron <jbarron@trolltech.com> Date: Mon Sep 7 15:49:31 2009 +0200 Merge the Symbian implementation with the other platforms nativeMenuBar It seems this has been refactored to share more code across the various platforms that support native menubars so the Symbian code can be mostly removed. commit aa55e4bcd1f009ab35c9519e18aa325fd212dd23 Author: Jason Barron <jbarron@trolltech.com> Date: Wed Aug 26 17:00:34 2009 +0200 Change filenames and move softkey stuff from 'widgets' to 'kernel'. This thing isn't a widget and therefore should not be in the 'widgets' subdirectory of gui. Also rename the files in preparation for refactoring and extending.
* Fix regression after code reviewShane Kearns2009-09-171-1/+3
| | | | | | | | | | | | | The branch maintained its own set of native windows. This was commented to be a duplication of the native window list kept by QWidgetPrivate, and changed. Unfortunately, the set maintained on the branch contained only window owning controls, while the list kept by QWidgetPrivate contains all widgets that have a CCoeControl. Added a check for whether the control is window owning before using its DrawableWindow() to avoid getting a null pointer. Reviewed-by: Jason Barron
* Fix unused variable compiler warningShane Kearns2009-09-171-1/+0
| | | | | | Removed UID that wasn't used. Reviewed-by: Jason Barron
* Enable compiling Symbian port with QT_NO_CURSORShane Kearns2009-09-171-3/+7
| | | | | | | Added some missing #ifdef QT_NO_CURSOR, so the symbian port still compiles if this feature is configured out. Reviewed-by: Jason Barron
* QCursor support for Symbian OSShane Kearns2009-09-151-20/+287
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Reviewed-By: Jason Barron Reviewed-By: Alessandro Portale Summary: QT_NO_CURSOR is now not defined for symbian builds Existing QCursor APIs are all supported New public API, QApplication::setNavigationMode, to allow the navigation mode to be set. I.E. on an S60 3.2 phone, some applications will want a virtual mouse cursor (web browser), while others are designed for keypad navigation. Symbian HAL is used for detecting input capabilities. Fix DND, code cleanup & comment QCursor visibility now uses a refcount, and is called from DND and the setNavigationMode so they are both simpler and don't interfere with each other. QApplication::setNavigationMode New public API for configuring cursor/keypad navi style. This links in with ongoing work on the 4-way keypad navi branch, but 2-way and 4-way modes both act as 2-way mode until that is integrated Some of the demos/examples have cursor switched on (those that were not usable with keypad) Virtual mouse support for non touch, non mouse phones (tested on N78) add *.d and .metadata (carbide debug file / workspace dir) to .gitignore System pointers are unavailable when using sprite workaround, so the system cursor shapes are compiled into qtgui as resources. MAC port does this also for shapes that aren't standard on the MAC. Refactor Drag'n'Drop to use QCursor Add test case to check all system cursor shapes Simply a mainwindow containing a label widget for each cursor shape, with the cursor property set appropriately QCursor(QBitmap,QBitmap) supported Fixed problem with the image & mask being inverted when using the QCursor constructor that takes two mono bitmaps. add .make.cache files to .gitignore Correct implementation of QApplication::setOverrideCursor QApplication::restoreOverrideCursor and QApplication::setOverrideCursor are now working correctly on Symbian platform. Performance will be slower compared with other platforms, because the Symbian window server has a cursor associated with each native window. Add test case for custom cursors Create a pixmap cursor and associate it with a widget. No changes to production code, since test passed 1st time ;) Add manual test for QCursor Make cursor independent of construction order Updated to work around window server issue where contruction order affects what cursor is displayed in child windows. Also changed to effectiveWinId following review comments Also fixed a problem which would make qcursor not link if configured with QT_NO_CURSOR Moved some multiply declared extern functions from cpp to _p.h files Implemented Symbian versions of the cursor functions. Merged in work I'd done based on tower. Fill in bits of stub functions based on windows port Removed QT_NO_CURSOR from list of config options forced on symbian Recompiled configure.exe Added stub functions for the missing functions in s60 port
* Update license headers again.Jason McDonald2009-09-091-4/+4
| | | | Reviewed-by: Trust Me
* Merge branch 'minimizeWrapperApp' into 4.6axis2009-09-031-4/+30
|\
| * Move the S60/Avkon framework initialization into QtGui.axis2009-09-031-4/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This way we avoid having a lot of code in a static (and unmaintainable) library. The s60main static library now currently has only one task: to call main(). To move the initialization into QtGui also meant a change in how the S60 framework is created, because we can no longer use the trick where we create and start the the S60 event loop and then have the framework call us back to start main(). The initialization now follows the creation and destruction of QApplication, which is a lot more in line with how other platforms do it. Since S60 doesn't support creating the environment, and *then* starting it (both are executed by the same call), we had to open up the S60 framework construction classes and just mirror what they do. This means that after QApplication construction is done, the S60 framework is initialized, but nothing will run yet and control will return to main(), where the user can start the event loop himself. One of the quirks of this approach is that the construction of the S60 framework makes a new cleanup stack. This means that any active traps will not be active anymore, and leaving without setting a new trap will most likely panic. This shouldn't be a problem for us, since Qt is never supposed to leave, but it means that if anyone uses the cleanup stack without setting a new trap, they will receive a panic. It was considered to add a trap mark in QApplication construction and then removing it on destruction, but it was dropped because leaving from main() is still undefined (even if the old cleanup stack would be restored in the destructor, we wouldn't be able to stop the exception from unwinding the stack, and the cleanup stack would then be unbalanced). RevBy: Jason Barron RevBy: Janne Anttila AutoTest: QWidget passed with same failure count
* | Doc: add warnings and some more meat to Symbian specific APIs.Volker Hilsheimer2009-09-031-6/+25
| |
* | Fixes pointer events when using popups and/or modal dialogs.Janne Anttila2009-09-021-21/+46
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit also adds initial support for fading behind modal dialogs. Avoid unnecessary local/global capturing since when having global capture enabled we cannot for example tap icons on statusbar. The logic how pointer events for popups and modal dialogs shall work: - Modal dialogs: * Shall not close when outside dlg is clicked * Shall not allow usage or underlying control with mouse * Achieved with SetGloballyCapturing and SetPointerCapture in enterModal_sys / leaveModal_sys - Popups * Shall close when the outside popup is clicked * Achieved with enabling the SetPointerCapture only for topmost popup and canceling it for all underlyuing ones. * In addition long tap timer needs to be canceled for underlying widgets when opening a pop-up. Otherwise theu get longtap event whcih causes unexpected behaviour. TODOs: - Fading does not work correctly when more than two levels of modal dialogs are opened. - Fading does not work correctly when switching away from app and back to it with fast swap window (using menu works) - Check if fading should be implemented with MAknFadedComponent and TAknPopupFader, in order to support cross-application fading - Should popups closes when application loses the focus? Reviewed-by: Janne Koskinen
* | Update tech preview license header for files that are new in 4.6.Jason McDonald2009-08-311-13/+13
| | | | | | | | Reviewed-by: Trust Me
* | doc: Fixed several qdoc errors.Martin Smith2009-08-311-4/+17
| |
* | Added QContextMenuEvent sending to widget in Symbian.Janne Anttila2009-08-311-1/+2
|/ | | | | | | | | The event construction without sending does nothing, sending constructed event possibly dissappeared due to bad merge or something. So here it comes again... Task-number: 260222 Reviewed-by: TrustMe
* Merge branch 'master' of git@scm.dev.troll.no:qt/qt-s60-publicJanne Anttila2009-08-191-1/+1
|\
| * Changed names and URLs to reflect name change.axis2009-08-191-1/+1
| | | | | | | | RevBy: Trust me
* | Enabled contextmenu event for Symbian.Janne Anttila2009-08-191-3/+9
|/ | | | | | In Symbian the context menu event is triggered after long press event is detected. This is equivalent to right mouse click on desktop environments.
* Implemented minimalistic modal handling for Symbian OS.Janne Anttila2009-08-141-7/+17
| | | | | | | | | | | The implementation is likely not complete, but makes autotests using QApplication::activeModalWidget to pass. At least the following test now pass successfully: qcolordialog qmessagebox Might have positive impact to other autotests as well.
* Cleaned public Api of QS60Style due to review by Volker Hilsheimer.Alessandro Portale2009-08-111-2/+2
| | | | | | | Moved handleDynamicLayoutVariantSwitch and handleSkinChange from QS60Style to QS60StylePrivate. QApplication (the only one calling those functions) is now a friend, thus has access to the private class.
* Merge branch 'master' of git@scm.dev.nokia.troll.no:qt/qt-s60-publicmread2009-08-071-4/+4
|\ | | | | | | | | Conflicts fixed: src/corelib/io/qdiriterator.cpp
| * Update license headers according to commit 858c70f768e.axis2009-08-061-3/+3
| | | | | | | | RevBy: Trust me
| * Replaced $MODULE$ with hardcoded module names.axis2009-08-061-1/+1
| | | | | | | | RevBy: Trust me
* | exception -> leave conversion for pointer eventsmread2009-08-071-1/+6
|/
* Trailing whitespace and tab/space fixes for src/guiJanne Anttila2009-08-041-17/+15
|
* Squashed commit of the topic/exceptions branch.Harald Fernengel2009-08-031-5/+7
| | | | | Contains some smaller fixes and renaming of macros. Looks big, but isn't scary at all ;)
* Removed unnecessary code, UID is associated to wserv by framework.Janne Anttila2009-07-311-5/+0
| | | | | | | | | | This code was inialy added before we had s60main. Since that time we did not had S60 application framework classes constructed we had to associate application UID to wserv manually to get fast swap window (FSW) working correctly. Now application frameworks take care of associating the UID to wserv window group.
* Make S60 integration optional.Jason Barron2009-07-151-7/+14
| | | | | | | | | | | | | | This is more a cleanup of the usage of Q_WS_S60 vs. Q_OS_SYMBIAN than anything else. One of the side effects of this work was that it was relatively little work to get QtGui compiling when Q_WS_S60 is not defined. Based on this we introduce two new configure options that control S60 integration. Currently the -no-s60 option will not work entirely because the 's60main' module has not yet been refactored and still has a dependancy on the S60 libraries. Reviewed-by: axis <qt-info@nokia.com>
* Merge commit 'origin/master' into 4.6-mergedJason Barron2009-07-091-30/+15
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/corelib/kernel/qcoreevent.cpp src/corelib/tools/qdumper.cpp src/gui/kernel/qwidget.cpp src/gui/kernel/qwidget_p.h src/gui/kernel/qwidget_s60.cpp src/gui/text/qfontdatabase.cpp src/network/access/qnetworkreplyimpl.cpp src/sql/drivers/ibase/qsql_ibase.cpp src/testlib/qtestcase.cpp src/testlib/testlib.pro tests/auto/network-settings.h tests/auto/q3sqlcursor/tst_q3sqlcursor.cpp tests/auto/qobjectrace/tst_qobjectrace.cpp tests/auto/qsqldatabase/tst_qsqldatabase.cpp tools/configure/configureapp.cpp translations/qt_ru.ts
| * Switched to asynchronous focus handling on Symbian.axis2009-07-091-14/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | This was done in order to be more in line with what other platforms (at least X11) do. In addition, it prevents show() from entering event handlers in Qt. That should only happen in processEvents(). This required the introduction of a new event, SymbianDeferredFocusChanged, which we post whenever there is a focus change. RevBy: Jason Barron AutoTest: Passed