| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Avkon dependencies can be configured out with the -no-s60 configure
flag, conversely Qt on Symbian will use Avkon if -s60 is configured.
These changes are intended to keep or introduce binary compatibility
between the s60 and no-s60 configurations. To do this, it has been
necessary to introduce stub equivalents of the CAknAppUi related
classes into the no-s60 configuration, and override all Avkon framework
virtual functions in the QS60Main... classes.
Other than that, these changes are mostly just correcting the use of
the Q_WS_S60 flag so that it only refers to Avkon dependencies.
Reviewed-by: Sami Merila
|
|\
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
src/3rdparty/phonon/qt7/mediaobject.mm
src/3rdparty/webkit/VERSION
src/3rdparty/webkit/WebCore/ChangeLog
src/plugins/phonon/mmf/mmf.pro
|
| |
| |
| |
| |
| |
| | |
This flag is Windows-specific, and should not be required on other platforms.
Reviewed-by: Jason Barron
|
|/
|
|
|
|
|
|
|
|
|
|
| |
If a QGLWidget is left on the heap when the QApplication destructor is
called, it will leave the QGLWidget in a broken state.
The widget itself is released and set to a non-created state,
which the associated QGLContext doesn't get notified about.
With this patch the QGLWidget knows when QWidget::destroy() is called
and can act acordingly.
Task-number: QT-3498, QTBUG-10995
Reviewed-by: Paul
|
|
|
|
|
|
|
|
| |
Previously, these events were enabled only on top-level widgets. This
patch enables them also for native child widgets.
Task-number: QTBUG-8697
Reviewed-by: Jason Barron
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
On Symbian, the top-level widget's backing store must be destroyed when
it is no longer required, in order to conserve memory. The criteria
for destroying the backing store is when neither the TLW nor any of
its native descendents (which share the backing store) are visible.
In order to implement this requirement, a count must be kept of the
number of native widgets which are using the TLW's backing store.
This patch provides the mechanism for maintaining this count, and for
destroying the backing store when the count is decremented to zero.
No calls to either the increment nor decrement functions are made,
however, by this code included in this patch; this code will be added
to only the Symbian backend by a subsequent patch.
Task-number: QTBUG-8697
Reviewed-by: Bjørn Erik Nilsen
Reviewed-by: Jason Barron
|
|
|
|
|
|
|
|
| |
Not creating screen furniture in full screen caused regression
when swapping into idle screen and back on Nokia 5800.
Task-number: QTBUG-10985
Reviewed-by: Jason Barron
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
After replacing some code with a function call to s60UpdateIsOpaque()
we introduced a crash for widgets that set
Qt::WA_TranslucentBackground. The reason for the crash was that the
Qt::WA_WState_Created attribute was being set before calling this
function, but *not* before setWinId() was being called. This meant that
s60UpdateIsOpaque() assumed that the window was created (and the handle
added to the widget map), but this was not actually the case.
The fix here is to move the call to s60UpdateIsOpaque() after the call
to setWinId() such that those assumptions are true.
Reviewed-by: Jani Hautakangas
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The CEikCba class casting is not binary compatible between at least
S60 3.2 and 5.0 platforms, even though it is source compatible.
The removed code was causing stack corruption on emulator
when binaries were built on S60 3.2 SDK and run on S60 5.0 SDK.
Another solution for this feature needs to be found.
Task-number: QTBUG-10199
Reviewed-by: Shane Kearns
Reviewed-by: Janne Anttila
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In the create_sys() function where native handles are created, we were
only looking at the "isOpaque" flag to determine if a window should be
translucent or not. This is not the correct thing to do because
transparency should only be granted if the application explicitly sets
the Qt::WA_TranslucentBackground flag.
The fix is to defer the transparency decision to s60UpdateIsOpaque()
which does the right thing.
Reviewed-by: Jani Hautakangas
|
|
|
|
|
|
|
|
|
|
|
| |
If a widget is initially shown as maximized or fullscreen then the
normal geometry is calculated before the status pane has been created.
When returning to the "Normal" window state the geometry needs to be
tweaked to compensate the fact that there is a status present now. This
should only happen if the application has not been given an explicit
position.
Reviewed-by: Janne Anttila
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Now that the S60 screen furniture construction is delayed, we need to
manually set the status pane observer to get notifications about
changes in the size of the status pane. Using the AppUi would have been
the obvious choice here, but sadly CAknAppUi (base class for
QS60MainAppUi) uses private inheritance when implementing the
MEikStatusPaneObserver interface.
To work around this problem we make QSymbianControl implement the
interface and use the instance of this class that is associated with
QDesktopWidget to recevive the notifications and then call the function
in the AppUi to maintain the same behavior.
Reviewed-by: Janne Anttila
Reviewed-by: mread
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously the S60 screen furniture (Status Pane and CBA) was being
constructed when QApplication was constructed. This meant that if you
never created a widget, you would still get those app panes which is
not what we want.
This patch avoids constructing these panes in QApplication, and manually
creates them later when the first window is shown in a state where they
would be needed.
Reviewed-by: Janne Anttila
Reviewed-by: mread
|
|
|
|
|
|
|
|
|
|
| |
setGeometry() has the side effect that it internally sets both the
WA_Moved and WA_Resized attributes and these attributes should only be
used when the application has explicitly set a size or position. When
a widget is resized due to being maximized or fullscreened then we
should resize the native window handle instead of calling setGeometry.
Reviewed-by: Janne Anttila
|
|
|
|
|
|
|
|
| |
The native window is used quite early in this function so as soon as we
determine that this does in fact require a native window, we should
create it immediately.
Reviewed-by: Janne Anttila
|
|
|
|
|
|
|
|
|
|
|
| |
availableGeometry returns incorrect area after cba is made invisible,
it seems that this happens because CAknToolbar is not made invisible.
Fixed the problem by reverting back to SetExtentToWholeScreen usage
when the widget is really fullscreen, i.e.
Qt::WindowSoftkeysVisibleHint is not set.
Task-number: QTBUG-9038
Reviewed-by: Miikka Heikkinen
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
It seems that in Symbian we cannot restore Qt::WA_Moved and
Qt::WA_Resized attributes in setWindowState method to the same ones
what the attributes were when method was called. Thus we currently
make sure that Qt::WA_Moved and Qt::WA_Resized attributes are not
touched when normal window state is applied.
There is a new task QTBUG-8977 to sort out when those attributes
should be set and when not.
Reviewed-By: Sami Merila
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
QDialog::resize() also moved the dialog in Symbian. This occured since
adjustPosition was called as an result of resize and that method did
not check if dialog position was explicitly set.
In addition it was found that in Symbian WA_Resized and WA_Moved
attributes were basically set for almost all top-level widgets
by system. This was also fixed and a new auto test was introduced
to verify these attributes in all platforms. Windows platform also
suffers from bug in this area, and a separate task QTBUG-5897 for
it was created
Task-number: QTBUG-5897
Reviewed-by: Sami Merila
|
|
|
|
|
|
|
|
|
| |
Parent window accepted pointer events even though the child was modal.
That was because closing popup didn't restore pointer grab for modal
window.
Task-number: QTBUG-6659
Reviewed-by: axis
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
Reviewed-by: Trust me
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
| |
On Symbian^4 systems where the window supports surface transparency, we
use this for the Qt::WA_TranslucentBackground flag instead of the
previous method.
Task-number: QT-2026
Reviewed-by: Iain
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
| |
Complete the fix in f72165460d27860cabd51691f4d935fd74b50f80 by applying
the same fix to Symbian and QWS.
Task-number: QTBUG-7105
Reviewed-by: Alexis
Reviewed-by: Jason McDonald
|
|
|
|
| |
Reviewed-by: Trust Me
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|\
| |
| |
| | |
4.6-staging2
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
If maximized dialog had minimum size that didn't fully fit to
the screen, it lost its maximized status when orientation was switched,
because of the logic that assumed that if a window is resized, it must
no longer be maximized. Skipped this assumption for cases where resize
occurs because enforcement of the minimum size of the window.
Task-number: QTBUG-4671
Reviewed-by: Janne Anttila
Reviewed-by: Sami Merila
|
|\ \
| |/
|/| |
|
| |
| |
| |
| |
| |
| | |
The word 'module' was missing.
Reviewed-By: TrustMe
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Docs say: "Note that only visible widgets can grab mouse input.
If isVisible() returns false for a widget, that widget cannot call
grabMouse()."
qwidget_x11.cpp uses the similar condition in grabMouse as symbian
after this commit.
Task-number: QTBUG-5658
Reviewed-by: Jason Barron
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The native FEP handles the 'pencil' key on some platforms by opening an
edit menu on the screen that contains things like 'Insert Symbol' and
'Writing Language' for text input widgets. This was previously not
working in the Qt input method implementation because in order for the
FEP system to open the menu, it must be able to access the menu bar
(CBA). This is done my using the object provider mechanism (MOP) and
an implementation of the MopNext() function was missing. Adding this
and also setting the AppUi as the MOP parent for top level widgets
allowed the FEP framework to find it's way to the menubar and thus
open a menu.
Task-number: QTBUG-5606
Reviewed-by: axis <qt-info@nokia.com>
Reviewed-by: mread <qt-info@nokia.com>
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
There were TODOs in code to remove the temporary solution for creating
native CFbsBitmap out of QPixmap. Now when QPixmpa has native backed
and it provides toSymbianCFbsBitmap, it it preferred to use
toSymbianCFbsBitmap since in best case it can only duplicate the bitmap
handle instead of copying the data.
Task-number: QTBUG-4948
Reviewed-by: Jani Hautakangas
|
|/
|
|
|
|
|
|
|
|
|
|
| |
visible after activating the window.
This change was required in order to be able to run the test case
for the below task; however, it is more generally required. Without
it, the contents of the descendents of this widget will not be
visible, until they are explicitly hidden and then re-shown.
Task-number: QTBUG-4787
Reviewed-by: axis
|
|
|
|
|
|
|
| |
Since raising toplevel widget nowdays brings the whole app to top,
logically lowering toplevel widget should put the app to background.
Reviewed-by: axis
|
|
|
|
|
|
|
|
| |
If toplevel window is raised, the whole application is now raised to
foreground.
Task-number: QT-2162
Reviewed-by: axis
|
|\
| |
| |
| |
| |
| | |
Conflicts:
src/corelib/kernel/qcoreevent.cpp
src/corelib/kernel/qcoreevent.h
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Incorrect optimisation - for popup windows, Qt's focus is moved before
hide_sys is called, resulting in the popup window keeping its elevated
position in the CONE control stack.
This can result in keyboard focus being in an invisible widget in some
conditions - e.g. QTBUG-4733
Task-number: QTBUG-4733
Reviewed-by: axis
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Both reparenting and modification of window flags are done by calling
QWidget::setParent. If either the parent changes, or a non-top-level
widget becomes top-level (as a result of OR-ing Qt::Window into its
window flags), a new native window ID is created for the widget. The
Symbian implementation of setParent_sys had a flaw which manifested
itself in the following situation:
1. We start with a native widget X, and its child Y, which is also
native. There exist parent-child relationships between the associated
CCoeControl instances, and the native windows (represented by RWindow
handles).
2. X gets a new native window created as a result of a call to
setParent.
3. QWidgetPrivate::reparentChildren calls SetParent on Y's control, to
re-establish the parent-child relationship.
The problem is that the window owned by Y's control now has no parent,
so if we try to re-size the widget, the window server panics the client
thread (WSERV-52).
Because Symbian does not allow existing windows to be re-parented, and
nor does it allow a window-owning control to re-create a new window,
the only way to provide Y's window with a parent is to destroy the
control and create a new one, passing in X's new window to the
CCoeControl::CreateWindowL function.
The changes made are as follows:
a) QWidgetPrivate::reparentChildren is therefore modified to call
create_sys, with destroyOldWindow set to true.
b) QWidgetPrivate::create_sys is modified to take account of the value
of this flag in all cases. (Previously it only did so if a new WId was
passed in by the caller).
c) The call to setWinId is delayed until the control and window are
fully initialized. This is to allow us to emit a new event,
WinIdChanged, from setWinId, in order to inform the widget that its
winId has changed.
d) QWidgetPrivate::activateSymbianWindow is modified in order to
support this change of call ordering.
Note that QWidgetPrivate::create_sys requires some re-factoring in
order to remove the redundancy between the top-level and child widget
cases.
Task-number: QTBUG-4664
Reviewed-by: axis
|
|\
| |
| |
| |
| | |
Conflicts:
src/gui/kernel/qwidget_s60.cpp
|
| |
| |
| |
| | |
This reverts commit fafd16474aee5bbf47ee37e1ba739f3b3ceb9c33.
|
| |
| |
| |
| |
| |
| |
| |
| | |
When dialog is shown on top of a top level window,
the focus does not get back to top level window
when dialog is closed. This is a fix for that.
Reviewed-by: Shane Kearns
|
| |\
| | |
| | |
| | |
| | |
| | | |
Conflicts:
src/gui/kernel/qwidget_p.h
src/gui/kernel/qwidget_s60.cpp
|