Home · All Namespaces · All Classes
Public Member Functions

HomeWindowMonitor Class Reference

#include <homewindowmonitor.h>

Inheritance diagram for HomeWindowMonitor:
Inheritance graph
[legend]
Collaboration diagram for HomeWindowMonitor:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 HomeWindowMonitor ()
virtual ~HomeWindowMonitor ()
virtual bool isOwnWindow (WId wid) const
 REIMPLEMENTATION
virtual bool handleXEvent (const XEvent &event)

Detailed Description

A window monitor implementation to be used with the home screen application.

Definition at line 31 of file homewindowmonitor.h.


Constructor & Destructor Documentation

HomeWindowMonitor::HomeWindowMonitor (  ) 

Constructor.

Definition at line 25 of file homewindowmonitor.cpp.

                                     :
        nonFullscreenApplicationWindowTypes(QSet<Atom>() << WindowInfo::NotificationAtom <<
                                                            WindowInfo::DialogAtom <<
                                                            WindowInfo::MenuAtom),
        netClientListStacking(X11Wrapper::XInternAtom(QX11Info::display(), "_NET_CLIENT_LIST_STACKING", False))
{
}

HomeWindowMonitor::~HomeWindowMonitor (  )  [virtual]

Destructor.

Definition at line 33 of file homewindowmonitor.cpp.

{
}


Member Function Documentation

bool HomeWindowMonitor::handleXEvent ( const XEvent &  event  )  [virtual]

A handler method for X events. Return true if the event got handled and false if not.

Parameters:
event the X event
Returns:
true if the event got handled

Implements XEventListener.

Definition at line 48 of file homewindowmonitor.cpp.

{
    bool eventHandled = false;

    if (event.type == PropertyNotify && event.xproperty.atom == netClientListStacking && event.xproperty.window == DefaultRootWindow(QX11Info::display())) {
        int numWindowStackingOrderReceivers = receivers(SIGNAL(windowStackingOrderChanged(QList<WindowInfo>)));
        int numFullscreenWindowReceivers = receivers(SIGNAL(fullscreenWindowOnTopOfOwnWindow()));

        if (numWindowStackingOrderReceivers + numFullscreenWindowReceivers > 0) {
            QList<Window> windowOrder = windowStackingOrder();

            if (numWindowStackingOrderReceivers > 0) {
                QList<WindowInfo> windowStackingList;
                foreach (Window window, windowOrder) {
                    windowStackingList.append(WindowInfo(window));
                }

                emit windowStackingOrderChanged(windowStackingList);
            }

            if (numFullscreenWindowReceivers > 0) {
                if (!windowOrder.isEmpty()) {
                    QListIterator<Window> iter(windowOrder);
                    iter.toBack();
                    while (iter.hasPrevious()) {
                        WindowInfo windowInfo(iter.previous());
                        if (windowInfo.types().toSet().intersect(nonFullscreenApplicationWindowTypes).isEmpty()) {
                            if (!isOwnWindow(windowInfo.window())) {
                                emit fullscreenWindowOnTopOfOwnWindow();
                            }
                            break;
                        }
                    }
                }
            }
        }

        eventHandled = true;
    }

    return eventHandled;
}

Here is the call graph for this function:

bool HomeWindowMonitor::isOwnWindow ( WId  wid  )  const [virtual]

REIMPLEMENTATION

Definition at line 37 of file homewindowmonitor.cpp.

{
    foreach (MWindow *window, MApplication::windows()) {
        if (window->winId() == wid) {
            return true;
        }
    }

    return false;
}


The documentation for this class was generated from the following files:

Copyright © 2010 Nokia Corporation Generated on Thu Nov 4 2010 18:20:42
Doxygen 1.7.1
MeeGo Touch