| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Earlier the widget normalGeometry was calculated once when widget was
made visible first time. Because geometry was not recalculated
the widget displayed with show/showNormal did not change its location
or size as a result of orientation change. This lead to unefficient
screen usage.
This commit makes widget to recalculate its normalGeometry as a result
of orientation change, if developer has not set the widget position or
size explicitly.
Task-number: QTBUG-8551
Reviewed-by: Jason Barron
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This commit enables the following two features:
1. Developer can make softkeys visible in fullscreen widget by setting
the Qt::WindowSoftkeysVisibleHint window flag. This flag implememts
intermediate mode for maximized and fullscreen modes. In maximized mode
both statuspane and softkeys are visible, in fullscreen mode with
WindowSoftkeysVisibleHint flag, only the softkeys are visible and
in normal fullscreen mode both statuspane and softkeys are invisible.
This feature was requested by QTBUG-5171.
2. Developer can make softkeys to respond to the key events even the
softkeys are invisible. This means that when widget with
Qt::WindowSoftkeysRespondHint window flag is shown in fullsreen, the
softkey HW key events are routed to invisible softkeys and softkeys
trigger the action associated to pressed softkey button. If the flag
is not set, the key event will be passed to application/focused widget
normally and softkey actions are not triggered. This feature was
requested in QTBUG-4564.
Both new flags are by default off.
In addition, the softkey example is updated to demonstrate the new
window flags. The commit also contains some code style fixes applied by
my editor automatically to changed files.
Task-number: QTBUG-5171
Task-number: QTBUG-4564
Reviewed-by: Jason Barron
|
|
|
|
|
|
|
| |
If it is missing we base the event on the scan code instead.
RevBy: Alessandro Portale
Signed-off-by: axis <qt-info@nokia.com>
|
|
|
|
|
|
|
|
|
|
|
| |
Enabling this flag saves us the round-trip to WSERV whenever
RWindow::Size() is called because the size is cached on the client
side. This can improve performance because functions like
eglSwapBuffers() call Size() to see if the window size has changed and
without the cache this introduces an extra IPC call for every frame.
Task-number: QT-2849
Reviewed-by: Iain
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Commit bc82db did not correctly handle native child widgets.
Consider the case when we have a top-level widget A with a native
child widget B. When QSymbianControl::Draw() is called on the
control corresponding to B, the following occurs:
1. The inExpose flag is set in B's QWExtra structure.
2. The call to syncBackingStore() results in a call to
QWidgetBackingStore::flush(), passing default parameters.
3. Because no target widget was passed to flush(), this
function selects the top-level widget (A) as the target for
the flush operation, passing A as the first argument of
QS60WindowSurface::flush().
4. QS60WindowSurface::flush() checks the inExpose flag from A's
QWExtra structure, finds it to be false, and proceeds to
call DrawNow() on A's control.
Because QSymbianControl::Draw() uses the default graphics context,
this context is shared between controls. This means that the DrawNow()
call in step 4 causes a WSERV-10 panic (Activate() called on an
already-active) graphics context.
This patch moves the inExpose flag from B's QWExtra into A's QTLWExtra,
with the result that the call to DrawNow() in step 4 is suppressed.
Task-number: QTBUG-7960
Reviewed-by: axis
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Problem description: normalGeomerty lost during showFullScreen
1. Reported problen was due on void QSymbianControl::PositionChanged()
over write top->normaGeometry on every position change. As fix
top->normalGeometry is moved to new rect:s top left only when
widget windowState == 0.
2. Also made some new qwidget auto tests. Refactored s60 side
setWindowState to be more readable. Minimized window state now
hides window decoration.
QApplication & QWidget autotest run on emulator and tested on
s60 5.0 hw using attached application.
http://bugreports.qt.nokia.com/browse/QTBUG-6231
Task-number:QTBUG-6231
Merge-request: 2256
Reviewed-by: Jani Hautakangas <ext-jani.hautakangas@nokia.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
For graphics systems that use EGL surfaces in the backing store
destroying the surface does not guarantee that the memory is
immediately freed because this command does not cause a flush. This
implies that a manual flush is instead needed. We do this in 2 places;
the first is when the surface is destroyed due to a visibility changed.
The second case is just after the window has been destroyed. At this
point the backing store has already been deleted so the deletion of
both the surface and window can happen atomically in WSERV.
Task-number: QT-2506
Reviewed-by: Iain
|
|
|
|
| |
Reviewed-by: Sami Merila
|
|
|
|
|
|
|
|
|
|
| |
Previously only the symbian specific event filters were called, but
now all filters in QApplication, QAbstractEventDispatcher and
QInputContext should be called.
Task: QT-2629
RevBy: Jason Barron
Autotest: Passed
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously when an expose was received from WSERV, we simply called
BitBlt (for raster) or called flush on the window surface (for
anything else). This behavior differs from other platforms which call
syncBackingStore(). This difference means that we flush the backing
store without actually updating the content first. This works for most
cases because if there actually was new content, it would be updated
when the widget's UpdateRequest event was handled.
The problem arises when the backing store does not have the correct
content. This can happen if the backing store was deleted, but only
partially restored (see Task below). Another problem is with the OpenVG
graphics system which assumes that beginPaint() is called before
endPaint() is order to initialize the context and the surface size.
The fix is to call syncBackingStore() like the other platforms, but
introduce a bit field to prevent infinite recursion in the painting
pipeline.
Task-number: QTBUG-4921
Reviewed-by: axis
Reviewed-by: Gareth Stockwell
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
4.6-integration
* '4.6' of scm.dev.nokia.troll.no:qt/oslo-staging-1: (49 commits)
Reverted two commits that were pushed to the wrong branch.
Use the new QTextCodec api in the QXmlStreamWriter.
Added new functions to QTextCodec that accept ConversionFlags.
Fix passing of arguments to syncqt
doc: Fixed typos.
Fixes: Fix spinbox with NoButton style in QGtkStyle
doc: Explained parameter value defaults where appropriate.
Cocoa: Fix painting errors on QGLWidget resizing.
Fix broken QGLWidget::renderPixmap on Mac/Carbon
Fixes: Setting any style sheet breaks checkbox positioning
Fixes: MenuItem size fixes and missing separator with Gtk+
Autotest: add a test for QNAM's HTTP cache handling code
QNAM HTTP: just use the expirationDate in the code that validates the cache
QNAM HTTP: change the caching semantics to match documentation
QNAM HTTP: fix the caching algorithm from RFC 2616
Avoid repeatedly calling LookupAccountSid in QFSFileEngine::owner
improve readability a bit more
fix styling; improve readability
make it possible to retrieve name of the user who owns the file
Updated WebKit from /home/shausman/src/webkit/trunk to qtwebkit/qtwebkit-4.6 ( 99ccc1c3e4db5354246720f9b9aa3d282e64497d )
...
|
| |
| |
| |
| | |
Reviewed-by: Trust Me
|
|/
|
|
|
|
|
|
|
| |
The error would happen because Qt would attempt to do focus handling
on the desktop widget which eventually resulted in an assert on the
Created status of the widget.
RevBy: Jani Hautakangas
AutoTest: Passed
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The old implementation had been hacked on for a while and needed
cleanup. The new code is heavily based on looking at the behavior of
other platforms. It also reuses more of the cross platform code,
which improves the handling of Enter and Leave events.
We also switched to letting Symbian grab the pointer automatically
when pressing down the mouse button, which improves things
considerably compared to doing it ourselves.
Popups should also work a lot better after this fix, since they were
not really handled at all in the old code.
The old code had calls to set the Symbian cursor sprite. This code
has been removed since that code is now being called from within
dispatchEnterLeaveEvents().
In addition, there was code to check whether the up key event had
been left out by the platform. This was solved a bit differently now,
instead putting the code in the section that handles virtual mouse,
since that is where the problem occurs.
Task: QTBUG-4990
RevBy: Shane Kearns
AutoTest: N/A, Platform specific code that an autotest cannot catch.
Lots of manual testing was done on normal examples as well
drag'n'drop examples and it seemed to work fine.
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Direct Screen Access (DSA) allows a client to request notification
from the window server when drawing is performed by other threads,
into a specified region of the screen. This allows DSA rendering
- for example video - to be suspended when notifications are
drawn, preventing the video content from overwriting the
notification.
If the drawing originates from the same thread as that which holds
the DSA session, DSA must be suspended while drawing takes place.
This change allows a widget to request notification when native
drawing is about to be performed by QSymbianControl::Draw.
Task-number: QTBUG-5467
Reviewed-by: Jason Barron
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
On the Symbian platform, the Qt raster paint engine targets an
off-screen buffer owned by the Font & Bitmap server (FBSERV).
When an area of the screen needs to be refreshed, the window
server (WSERV) asks the control environment (CONE) to redraw the
control(s) intersecting that screen region. Each Qt native
widget has an associated Symbian control, whose Draw function
blits the required region of the backing store via WSERV.
Use cases involving Direct Screen Access (DSA) may require this
behaviour to be modified, to either of the following:
- Disable: the Draw function does nothing. In this case,
the output of paint events, rendered to the backing store,
is not blitted to the screen. This mode was introduced by
change 8f445e13.
- Zero fill: the Draw function fills all pixels within the
redraw region with zeroes.
This change allows the widget implementation to select either of
these alternative modes by setting a flag in its QWExtra structure.
Note that these alternative modes are only suitable for native
widgets, because they act on a per-control rather than per-widget
basis.
Task-number: QTBUG-5467
Reviewed-by: Jason Barron
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Using an asynchronous API synchronously caused a crash, because the
data structure was deleted while an async request is still pending.
Depending on the multimedia implementation on the phone, the crash will
happen or you just get no sound (or it can even work if the underlying
implementation is blocking).
Solution is to use the API asynchronously, and delete the handling object
in qt_cleanup.
Also raised the tone by one octave to be more similar to the system beep.
Task-number: QTBUG-6170
Reviewed-by: Janne Anttila
Reviewed-by: Miikka Heikkinen
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The window activation hack is not needed anynmore since
AppUi()->RemoveFromStack() ensures the next visible window will get
the keyboard focus.
Hack removal also required change to window title setting logic.
Since window title (and icon) are associated to top-level windows,
the logical place to set them is the same place where active window is
changed i.e. QApplication::setActiveWindow is called.
At the same time also window icon setting from show_sys was move to
focusChanged to make icon/title setting more consistent.
When changing orientation or switching to different statuspane
mode we receive KInternalStatusPaneChange events for each window in
QSymbianControl::HandleResourceChange. When receiving such event
we only need to reset the icon for focused/visible window. If we don't
handle it like this, it might happen that invisible widget added to
control stack resets the global icon/title.
Task-number: QTBUG-5780
Reviewed-by: Axis
|
|
|
|
|
| |
Task-number: QTBUG-6011
Reviewed-by: Gareth Stockwell
|
|
|
|
|
|
|
|
|
|
|
| |
The context menu is launched by a separate event, not by the right mouse
button.
Generating the fake right mouse button caused side effects.
We now treat the touch screen as a one button mouse, long taps still open
the context menu using QContextMenuEvent.
Task-number: QTBUG-5180
Reviewed-by: axis
|
|\ |
|
| |
| |
| |
| |
| |
| | |
The word 'module' was missing.
Reviewed-By: TrustMe
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When Symbian pops up a menu or dialog, Qt should produce FocusOut
events using PopupFocusReason rather than deactivating the whole
window. This keeps input widgets from losing focus when FEP wants to
pop up dialogs.
AutoTest: QWidget passed
RevBy: Jason Barron
|
|/
|
|
| |
RevBy: Trust me
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Switched to use S60 API instead of Symbian one, the rationale is given
below as an copy/paste from S60 docs:
"Cross-application fading support
Symbian OS provides some support for fading, but this only covers
fading within an application. The S60 UI can have more than one
application on the screen at once (in fact, since the system parts
of the Status pane are inside EikServer, it always has more than one
application on the screen). The S60 UI introduced the fading and
drawing system to manage the fading state for the whole system.
Application and UI control code for S60 should not attempt to set fade
for a popup window directly. Instead, the popup window should implement
the MAknFadedComponent interface, and should use the TAknPopupFader
support class to set the fade.
The application UI base classes interact with the fading and drawing
system by informing it when the foreground status of the application
changes. They also use it to implement system wide fading."
There is also task QTBUG-5393 to implement fading support in future
without S60 dependency.
Task-number: QTBUG-5181
Reviewed-by: Sami Merila
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Destroying the control environment also pops items from the original
cleanup stack which is not owned by the control environment.
This is a platform issue (and does not occur in 9.3 & 9.4).
To avoid this causing a panic, the s60main is changed to not push items
on the cleanup stack (instead, it TRAPs the call to main(), and deletes
its allocations manually).
A further 9.2 cleanup stack crash was caused when application construction
fails (because of missing resource files). The resulting exception would
bypass deleting the control environment, and return from main with the
wrong cleanup stack active.
This is resolved by doing the TRAP / cleanup / throw manually instead of
using qt_trap_throwing (The control environment cannot be pushed to the
cleanup stack, because it owns the cleanup stack at that time).
This isn't a 9.2 specific bug, but rather is revealed by 9.2 because the
missing resource file is non fatal in 9.3 and 9.4.
Fixes many autotests which have crashed on S60 3.1 since the cleanup
stack swapping patch.
Reviewed-by: axis
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This is necessitated by the fact that CCoeControl::SetExtent calls
SizeChanged, but does not call PositionChanged. This causes a bug
in the handling of orientation changes. When the screen orientation
changes, QSymbianControl::HandleResourceChange(KInternalStatusPaneChange)
is called on the top-level widget. This results in a call to
SetExtent. Because PositionChanged was not being called, the outcome
was that the size of the widget's data.crect variable was updated, but
not its position. This meant that mouse events sent to this widget
or any of its children were incorrectly handled:
1. QSymbianControl::HandlePointerEventL works out which widget should
receive the event. This uses CCoeControl::PositionRelativeToScreen,
and therefore calculates the correct widget.
2. In constructing the QMouseEvent object, QWidget::mapFromGlobal is
used to translate the event position into the receiving widget's
co-ordinate system. This uses data.crect.topLeft(), therefore giving
the wrong value, resulting in the widget's event handler discarding
the event.
Task-number: QTBUG-4697
Reviewed-by: axis
|
|\ \
| |/ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
- Comparing TBool == bool did not work correctly since TBool is
effectively int. For example statusPane->IsVisible() in this particular
case returns 2, which compared to true as an int fails. Casting to bool
seems to solve the problem. Another possibility would be to use Symbian
COMPARE_BOOLS macro.
- Changing statuspane visibility now affects to widget size also
- Some tab/space fixes
Task-number: QTBUG-4876
Reviewed-by: Sami Merila
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This was achieved by putting back the old trap handler after the S60
framework construction has finished.
Task: QTBUG-4960
AutoTest: Included and passed
RevBy: Shane Kearns
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
video playback
During the switch to full-screen video playback, the following happens:
1. Double-tapping to enable full-screen results in a call to
QSymbianControl::HandleLongTapL
2. This modifies the global variable QApplication::mouse_buttons,
OR'ing in Qt::RightButton
3. QWidgetPrivate::create_sys, called as a result of the call to
setWindowFlags made by Phonon::VideoWIdget::setFullScreen, schedules a
delayed deletion of the same control as in step (1) above
4. The control gets deleted before it receives a HandlePointerEventL
for the long tap release, which would have removed Qt::RightButton
from the mouse_button bitmask
5. In subsequent calls to QSlider::mousePressEvent, the test
(ev->buttons() ^ ev->button()) is false, which results in the event
being ignored.
Ideally, we would fix this by propagating the m_previousEventLongPress
flag from the deleted QSymbianControl to the newly created one.
However, this does not work because the new control does not receive
the HandlePointerEventL callback for the long press release.
We therefore fix the bug by checking for m_previousEventLondPress
in the QSymbianControl destructor; if it is set, we clear the
Qt::RightButton bit from the QApplication::mouse_buttons mask.
Note that QTBUG-5309 (Cannot interact with sliders after orientation
switch during audio playback) is still seen after applying this patch.
Task-number: QTBUG-5242, QTBUG-5308
Reviewed-by: axis
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Emulator HAL reports that it supports mouse but not touch.
Since Qt is changing behaviour based on these values, the emulator works
differently from the device.
To workaround, the emulator HAL values are ignored and following used:
5.0: mouse 0, touch 1
3.x: mouse 0, touch 0
The mouse can still be used to interact with the emulator, as pointer
events are still delivered.
Task-number: QTBUG-4803
Task-number: QTBUG-4616
Reviewed-by: Sami Merila
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The two major points were:
- Replacing "s60" with "symbian" in all event handling functions,
since there is nothing S60-specific about them.
- Replace the Symbian event types with the encapsulating
QSymbianEvent container. This allows us to cope with more types of
events in the future without having to add new virtual functions.
AutoTest: QWidget passed
Task: QT-1156
RevBy: Jason Barron
RevBy: Shane Kearns
RevBy: Sami Merila
|
|
|
|
|
|
|
|
|
| |
Gives better performance in the raster paint engine.
For Symbian 9.3 onwards, this can also be used as the native pixmap
format. For 9.2, conversion is required.
Reviewed-by: Sami Merila
Reviewed-by: Jani Hautakangas
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Did the long awaited "refactor me" in QSymbianControl::HandlePointerEvent
Pointer is grabbed by MousePress, and released by MouseRelease - unless
already globally grabbed.
Pointer events are routed to the widget that grabbed the mouse.
Task-number: QTBUG-4695
Task-number: QTBUG-4674
Reviewed-by: axis
|
|\ \
| |/
| |
| |
| |
| | |
Conflicts:
src/corelib/kernel/qcoreevent.cpp
src/corelib/kernel/qcoreevent.h
|
| |
| |
| |
| |
| |
| | |
to zero only if currently focused
Reviewed-by: axis
|
| |
| |
| |
| |
| |
| |
| | |
Earlier we returned a copy of the Qt modifiers. This patch fixes the
call to return the real native Symbian one.
RevBy: Sami Merila
|
| |
| |
| |
| |
| |
| | |
Accidentally used git commit -a when should have used only git commit :(
This reverts commit 9c6e466dc09813dd4a641b2cf385f35ac99346f5.
|
| |
| |
| |
| | |
Reviewed-by: TrustMe
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Deleting qt_desktopWidget eventually ends up to QSymbianControl
destructor. Calling setFocusSafely from QSymbianControl destructor
causes a new events to be posted to event queue. Posting events tries
to wakeup event dispatcher, which was deleted in QApplication
destructor before calling delete for qt_desktopWidget. This makes
application to panic.
The fix is to change is_app_closing and is_app_running flags to correct
state immediately after event dispatcher is closed down, and check the
is_app_closing flag in QSymbianControl destructor.
The change fixes panic in qapplication::testDeleteLaterProcessEvents,
and otherwise QApplication and QWidget autotest results are same as
before change.
Reviewed-by: Miikka Heikkinen
Reviewed-by: Brad
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
until control returns to the event loop.
This is necessary because reparenting can be triggered from the context
of a control's event handler. If reparenting causes that control to be
deleted, a crash can result.
Task-number: QTBUG-4664
Reviewed-by: axis
|
|/
|
|
|
|
| |
to zero only if currently focused
Reviewed-by: axis
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
Not sure why the migration classes should be are \obsolete.
|
|\
| |
| |
| |
| | |
Conflicts:
src/gui/kernel/qwidget_s60.cpp
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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
|