From 311db796c68e520e5b6d28829d6aaa4bfbcd1536 Mon Sep 17 00:00:00 2001 From: Matthias Ettrich Date: Thu, 19 Aug 1999 23:26:42 +0000 Subject: [PATCH] Say hello to kwin. WARNING: NOT USABLE YET. See README. svn path=/trunk/kdebase/kwin/; revision=27871 --- README | 20 + atoms.cpp | 15 + atoms.h | 19 + beclient.cpp | 213 +++++++ beclient.h | 37 ++ client.cpp | 1464 +++++++++++++++++++++++++++++++++++++++++++++++++ client.h | 285 ++++++++++ kwin | Bin 0 -> 869686 bytes kwin.pro | 18 + main.cpp | 113 ++++ main.h | 23 + options.h | 47 ++ stdclient.cpp | 334 +++++++++++ stdclient.h | 33 ++ tabbox.cpp | 179 ++++++ tabbox.h | 63 +++ workspace.cpp | 859 +++++++++++++++++++++++++++++ workspace.h | 126 +++++ 18 files changed, 3848 insertions(+) create mode 100644 README create mode 100644 atoms.cpp create mode 100644 atoms.h create mode 100644 beclient.cpp create mode 100644 beclient.h create mode 100644 client.cpp create mode 100644 client.h create mode 100755 kwin create mode 100644 kwin.pro create mode 100644 main.cpp create mode 100644 main.h create mode 100644 options.h create mode 100644 stdclient.cpp create mode 100644 stdclient.h create mode 100644 tabbox.cpp create mode 100644 tabbox.h create mode 100644 workspace.cpp create mode 100644 workspace.h diff --git a/README b/README new file mode 100644 index 0000000000..71c80ce1ae --- /dev/null +++ b/README @@ -0,0 +1,20 @@ +Fri Aug 20 01:30:50 CEST 1999 + +This is the beginning of kwin, kwm next generation. + +WARNING: this thing is hardly usable now, neither ICCCM nor KDE +compliant yet! + +All it has is a context menu that allows you to switch between two +decoration styles, KDE classic and an experimental style. + +Please don't work on the code, I'll finish it during my summer +vacations (four weeks from now on). + +kwin was only commited to allow people like Mosfet to have a look at +the Client API (and StdClient) to write nifty new themable decorations. + +Have fun, + + Matthias + diff --git a/atoms.cpp b/atoms.cpp new file mode 100644 index 0000000000..6b96134406 --- /dev/null +++ b/atoms.cpp @@ -0,0 +1,15 @@ +#include +#include "atoms.h" + +Atoms::Atoms() +{ + + //TODO use XInternAtoms instead to avoid roundtrips + wm_protocols = XInternAtom(qt_xdisplay(), "WM_PROTOCOLS", FALSE); + wm_delete_window = XInternAtom(qt_xdisplay(), "WM_DELETE_WINDOW", FALSE); + wm_take_focus = XInternAtom(qt_xdisplay(), "WM_TAKE_FOCUS", FALSE); + + // compatibility + kwm_win_icon = XInternAtom(qt_xdisplay(), "KWM_WIN_ICON", FALSE); + +} diff --git a/atoms.h b/atoms.h new file mode 100644 index 0000000000..437dd3cb39 --- /dev/null +++ b/atoms.h @@ -0,0 +1,19 @@ +#ifndef ATOMS_H +#define ATOMS_H +#include + +class Atoms { +public: + Atoms(); + + Atom wm_protocols; + Atom wm_delete_window; + Atom wm_take_focus; + Atom kwm_win_icon; // compatibility + +}; + + +extern Atoms* atoms; + +#endif diff --git a/beclient.cpp b/beclient.cpp new file mode 100644 index 0000000000..331a831025 --- /dev/null +++ b/beclient.cpp @@ -0,0 +1,213 @@ +#include "beclient.h" +#include +#include +#include +#include +#include +#include +#include +#include "workspace.h" + + + +static const char * size_xpm[] = { +/* width height num_colors chars_per_pixel */ +"16 16 3 1", +/* colors */ +" s None c None", +". c #707070", +"X c white", +/* pixels */ +" ", +" ....... ", +" .XXXXXX ", +" .X .X ", +" .X .X....... ", +" .X .XXXXXXXX ", +" .X .X .X ", +" .X....X .X ", +" .XXXXXX .X ", +" .X .X ", +" .X .X ", +" .X .X ", +" .X........X ", +" .XXXXXXXXXX ", +" ", +" "}; + +static QPixmap* size_pix = 0; +static bool pixmaps_created = FALSE; + +static void create_pixmaps() +{ + if ( pixmaps_created ) + return; + size_pix = new QPixmap( size_xpm ); +} + + + +BeClient::BeClient( Workspace *ws, WId w, QWidget *parent, const char *name ) + : Client( ws, w, parent, name, WResizeNoErase ) +{ + create_pixmaps(); + + QFont f = font(); + f.setBold( TRUE ); + setFont( f ); + + QGridLayout* g = new QGridLayout( this, 0, 0, 2 ); + g->addRowSpacing(1, 2); + g->setRowStretch( 2, 10 ); + g->addWidget( windowWrapper(), 2, 1 ); + g->addColSpacing(0, 2); + g->addColSpacing(2, 2); + g->addRowSpacing(3, 2); + + + + QHBoxLayout* hb = new QHBoxLayout; + g->addLayout( hb, 0, 1 ); + int fh = QMAX( 16, fontMetrics().lineSpacing()); + titlebar = new QSpacerItem(40, fh, QSizePolicy::Preferred, + QSizePolicy::Minimum ); + hb->addItem( titlebar ); + + hb->addStretch(); + +} + + +BeClient::~BeClient() +{ +} + + +void BeClient::resizeEvent( QResizeEvent* e) +{ + Client::resizeEvent( e ); + doShape(); + if ( isVisibleToTLW() ) { + // manual clearing without the titlebar (we selected WResizeNoErase ) + QPainter p( this ); + QRect t = titlebar->geometry(); + t.setTop( 0 ); + t.setLeft( 0 ); + QRegion r = rect(); + r = r.subtract( t ); + p.setClipRegion( r ); + p.eraseRect( rect() ); + } +} + +/*!\reimp + */ +void BeClient::captionChange( const QString& ) +{ + doShape(); + repaint(); +} + +void BeClient::paintEvent( QPaintEvent* ) +{ + QPainter p( this ); + QRect bar ( 0, 0, titlebar->geometry().right()+1, titlebar->geometry().bottom() ); + qDrawWinPanel( &p, 0, bar.bottom()+2, width(), height() - bar.bottom()-2, colorGroup(), FALSE ); + qDrawWinPanel( &p, 2, bar.bottom()+4, width()-4, height() - bar.bottom()-6, colorGroup(), TRUE ); + QRect t = titlebar->geometry(); + + bar.setBottom( bar.bottom() + 3 ); + p.setClipRect( bar ); + bar.setBottom( bar.bottom() + 2 ); + if ( isActive() ) { + QPalette pal( QColor(248,204,0) ); + qDrawWinPanel( &p, bar, pal.normal(), FALSE, &pal.brush(QPalette::Normal, QColorGroup::Background ) ); + } + else + qDrawWinPanel( &p, bar, colorGroup(), FALSE, &colorGroup().brush( QColorGroup::Background ) ); + p.setClipping( FALSE ); + + p.drawPixmap( t.right() - 20, t.center().y()-8, *size_pix ); + p.drawPixmap( t.left() +4, t.center().y()-miniIcon().height()/2, miniIcon() ); + t.setLeft( t.left() + 20 +10); + p.drawText( t, AlignLeft|AlignVCenter, caption() ); +} + + +void BeClient::showEvent( QShowEvent* e) +{ + Client::showEvent( e ); + doShape(); + repaint(); +} + +void BeClient::doShape() +{ + QFontMetrics fm = fontMetrics(); + int cap = 20+20+10+10+fm.boundingRect(caption() ).width(); + titlebar->changeSize( QMIN( width(), cap), QMAX( 16, fm.lineSpacing()), + QSizePolicy::Preferred, QSizePolicy::Minimum ); + layout()->activate(); //#### this is broken!!!!! PAUL!!!!! + +// // // do it manually: #######remove this for Qt-2.01 + titlebar->setGeometry( QRect( titlebar->geometry().x(), titlebar->geometry().y(), + titlebar->sizeHint().width(), titlebar->sizeHint().height() ) ); + QRegion r( rect() ); + r = r.subtract( QRect( QPoint( titlebar->geometry().right()+1, 0), QPoint( width(), titlebar->geometry().bottom()) ) ); + setMask( r ); +} + +/*!\reimp + */ +void BeClient::activeChange( bool /* act */ ) +{ + repaint( 0, 0, width(), titlebar->geometry().bottom()+3, FALSE ); +} + +/*!\reimp + */ +Client::MousePosition BeClient::mousePosition( const QPoint& p ) const +{ + const int range = 16; + const int border = 4; + + int ly = titlebar->geometry().bottom(); + int lx = titlebar->geometry().right(); + if ( p.x() > titlebar->geometry().right() ) { + + if ( p.y() <= ly + range && p.x() >= width()-range) + return TopRight; + else if ( p.y() <= ly + border ) + return Top; + } else if ( p.y() < ly ) { + if ( p.y() > border && p.x() < lx - border ) + return Client::mousePosition( p ); + if ( p.y() < range && p.x() > lx - range ) + return TopRight; + else if ( p.x() > lx-border ) + return Right; + } + + return Client::mousePosition( p ); +} + + +void BeClient::mousePressEvent( QMouseEvent * e ) +{ + + Client::mousePressEvent( e ); +} + +void BeClient::mouseReleaseEvent( QMouseEvent * e ) +{ + workspace()->makeFullScreen( this ); + Client::mouseReleaseEvent( e ); +} + + +void BeClient::mouseDoubleClickEvent( QMouseEvent * e ) +{ + if ( titlebar->geometry().contains( e->pos() ) ) + setShade( !isShade() ); + workspace()->requestFocus( this ); +} diff --git a/beclient.h b/beclient.h new file mode 100644 index 0000000000..7437b0680e --- /dev/null +++ b/beclient.h @@ -0,0 +1,37 @@ +#ifndef BECLIENT_H +#define BECLIENT_H +#include "client.h" +class QToolButton; +class QLabel; +class QSpacerItem; + + +class BeClient : public Client +{ + Q_OBJECT +public: + BeClient( Workspace *ws, WId w, QWidget *parent=0, const char *name=0 ); + ~BeClient(); + +protected: + void resizeEvent( QResizeEvent* ); + void paintEvent( QPaintEvent* ); + void mousePressEvent( QMouseEvent * ); + void mouseReleaseEvent( QMouseEvent * ); + void mouseDoubleClickEvent( QMouseEvent * e ); + + void captionChange( const QString& name ); + + void showEvent( QShowEvent* ); + void activeChange( bool ); + + MousePosition mousePosition( const QPoint& p ) const; + +private: + QSpacerItem* titlebar; + void doShape(); +}; + + + +#endif diff --git a/client.cpp b/client.cpp new file mode 100644 index 0000000000..52a5a67303 --- /dev/null +++ b/client.cpp @@ -0,0 +1,1464 @@ +#include +#include +#include +#include +#include +#include "workspace.h" +#include "client.h" +#include "atoms.h" +#include +#include +#include +#include +#include + +extern Atom qt_wm_state; + + +static void sendClientMessage(Window w, Atom a, long x){ + XEvent ev; + long mask; + + memset(&ev, 0, sizeof(ev)); + ev.xclient.type = ClientMessage; + ev.xclient.window = w; + ev.xclient.message_type = a; + ev.xclient.format = 32; + ev.xclient.data.l[0] = x; + ev.xclient.data.l[1] = CurrentTime; + mask = 0L; + if (w == qt_xrootwin()) + mask = SubstructureRedirectMask; /* magic! */ + XSendEvent(qt_xdisplay(), w, False, mask, &ev); +} + + +static int _getprop(Window w, Atom a, Atom type, long len, unsigned char **p){ + Atom real_type; + int format; + unsigned long n, extra; + int status; + + status = XGetWindowProperty(qt_xdisplay(), w, a, 0L, len, False, type, &real_type, &format, &n, &extra, p); + if (status != Success || *p == 0) + return -1; + if (n == 0) + XFree((char*) *p); + /* could check real_type, format, extra here... */ + return n; +} +static bool getDoubleProperty(Window w, Atom a, long &result1, long &result2){ + long *p = 0; + + if (_getprop(w, a, a, 2L, (unsigned char**)&p) <= 0){ + return FALSE; + } + + result1 = p[0]; + result2 = p[1]; + XFree((char *) p); + return TRUE; +} +QPixmap KWM::miniIcon(Window w, int width, int height){ + QPixmap result; + Pixmap p = None; + Pixmap p_mask = None; + + long tmp[2] = {None, None}; + if (!getDoubleProperty(w, atoms->kwm_win_icon, tmp[0], tmp[1])){ + XWMHints *hints = XGetWMHints(qt_xdisplay(), w); + if (hints && (hints->flags & IconPixmapHint)){ + p = hints->icon_pixmap; + } + if (hints && (hints->flags & IconMaskHint)){ + p_mask = hints->icon_mask; + } + if (hints) + XFree((char*)hints); + } + else { + p = (Pixmap) tmp[0]; + p_mask = (Pixmap) tmp[1]; + } + + if (p != None){ + Window root; + int x, y; + unsigned int w = 0; + unsigned int h = 0; + unsigned int border_w, depth; + XGetGeometry(qt_xdisplay(), p, + &root, + &x, &y, &w, &h, &border_w, &depth); + if (w > 0 && h > 0){ + QPixmap pm(w, h, depth); + XCopyArea(qt_xdisplay(), p, pm.handle(), + qt_xget_temp_gc(depth==1), + 0, 0, w, h, 0, 0); + if (p_mask != None){ + QBitmap bm(w, h); + XCopyArea(qt_xdisplay(), p_mask, bm.handle(), + qt_xget_temp_gc(TRUE), + 0, 0, w, h, 0, 0); + pm.setMask(bm); + } + if (width > 0 && height > 0 && (w > (unsigned int)width + || h > (unsigned int) height)){ + // scale + QWMatrix m; + m.scale(width/(float)w, height/(float)h); + result = pm.xForm(m); + } + else + result = pm; + } + } + else { + XWMHints *hints = XGetWMHints(qt_xdisplay(), w); + if (hints && + (hints->flags & WindowGroupHint) + && hints->window_group != None + && hints->window_group != w){ + Window wg = hints->window_group; + XFree((char*)hints); + return miniIcon(wg, width, height); + } + if (hints) + XFree((char*)hints); + Window trans = None; + if (XGetTransientForHint(qt_xdisplay(), w, &trans)){ + if (trans != w) + return miniIcon(trans, width, height); + } + } + return result; +} + +QPixmap KWM::icon(Window w, int width, int height){ + QPixmap result; + Pixmap p = None; + Pixmap p_mask = None; + + XWMHints *hints = XGetWMHints(qt_xdisplay(), w); + if (hints && (hints->flags & IconPixmapHint)){ + p = hints->icon_pixmap; + } + if (hints && (hints->flags & IconMaskHint)){ + p_mask = hints->icon_mask; + } + if (hints) + XFree((char*)hints); + + if (p != None){ + Window root; + int x, y; + unsigned int w = 0; + unsigned int h = 0; + unsigned int border_w, depth; + XGetGeometry(qt_xdisplay(), p, + &root, + &x, &y, &w, &h, &border_w, &depth); + if (w > 0 && h > 0){ + QPixmap pm(w, h, depth); + XCopyArea(qt_xdisplay(), p, pm.handle(), + qt_xget_temp_gc(depth==1), + 0, 0, w, h, 0, 0); + if (p_mask != None){ + QBitmap bm(w, h); + XCopyArea(qt_xdisplay(), p_mask, bm.handle(), + qt_xget_temp_gc(TRUE), + 0, 0, w, h, 0, 0); + pm.setMask(bm); + } + if (width > 0 && height > 0 && (w > (unsigned int)width + || h > (unsigned int) height)){ + // scale + QWMatrix m; + m.scale(width/(float)w, height/(float)h); + result = pm.xForm(m); + } + else + result = pm; + } + } + else { + XWMHints *hints = XGetWMHints(qt_xdisplay(), w); + if (hints && + (hints->flags & WindowGroupHint) + && hints->window_group != None + && hints->window_group != w){ + XFree((char*)hints); + return icon(hints->window_group, width, height); + } + if (hints) + XFree((char*)hints); + Window trans = None; + if (XGetTransientForHint(qt_xdisplay(), w, &trans)){ + if (trans != w) + return icon(trans, width, height); + } + } + return result; +} + +/*! + \class WindowWrapper client.h + + \brief The WindowWrapper class encapsulates a client's managed + window. + + There's not much to know about this class, it's completley handled by + the abstract class Client. You get access to the window wrapper with + Client:.windowWrapper(). The big advantage of WindowWrapper is, + that you can use just like a normal QWidget, although it encapsulates + an X window that belongs to another application. + + In particular, this means adding a client's windowWrapper() to a + QLayout for the geometry management. See StdClient for an example + on how to do this. + + */ + + +WindowWrapper::WindowWrapper( WId w, Client *parent, const char* name) + : QWidget( parent, name ) +{ + win = w; + setMouseTracking( TRUE ); + + // we don't want the window to be destroyed when we are destroyed + XAddToSaveSet(qt_xdisplay(), win ); + + // overwrite Qt-defaults because we need SubstructureNotifyMask + XSelectInput( qt_xdisplay(), winId(), + KeyPressMask | KeyReleaseMask | + ButtonPressMask | ButtonReleaseMask | + KeymapStateMask | + ButtonMotionMask | + PointerMotionMask | // need this, too! + EnterWindowMask | LeaveWindowMask | + FocusChangeMask | + ExposureMask | + StructureNotifyMask | + SubstructureRedirectMask | + SubstructureNotifyMask + ); + + XSelectInput( qt_xdisplay(), w, + FocusChangeMask | + PropertyChangeMask + ); + + // set the border width to 0 + XWindowChanges wc; + wc.border_width = 0; + XConfigureWindow( qt_xdisplay(), win, CWBorderWidth, &wc ); + + // finally, get the window + XReparentWindow( qt_xdisplay(), win, winId(), 0, 0 ); + + // install a passive grab to catch mouse button events + XGrabButton(qt_xdisplay(), AnyButton, AnyModifier, winId(), FALSE, + ButtonPressMask, GrabModeSync, GrabModeSync, + None, None ); + +} + +WindowWrapper::~WindowWrapper() +{ + releaseWindow(); +} + +QSize WindowWrapper::sizeHint() const +{ + return size(); +} + +QSizePolicy WindowWrapper::sizePolicy() const +{ + return QSizePolicy( QSizePolicy::Preferred, QSizePolicy::Preferred ); +} + + +void WindowWrapper::resizeEvent( QResizeEvent * ) +{ + if ( win ) + XMoveResizeWindow( qt_xdisplay(), win, + 0, 0, width(), height() ); +} + +void WindowWrapper::showEvent( QShowEvent* ) +{ + if ( win ) { + XMoveResizeWindow( qt_xdisplay(), win, + 0, 0, width(), height() ); + XMapRaised( qt_xdisplay(), win ); + } +} +void WindowWrapper::hideEvent( QHideEvent* ) +{ + if ( win ) + XUnmapWindow( qt_xdisplay(), win ); +} + +void WindowWrapper::invalidateWindow() +{ + win = 0; +} + +/*! + Releases the window. The client has done its job and the window is still existing. + */ +void WindowWrapper::releaseWindow() +{ + if ( win ) { + XReparentWindow( qt_xdisplay(), win, + ((Client*)parentWidget())->workspace()->rootWin(), + parentWidget()->x(), + parentWidget()->y() ); + XRemoveFromSaveSet(qt_xdisplay(), win ); + invalidateWindow(); + } +} + + + +void WindowWrapper::mousePressEvent( QMouseEvent* ) +{ + XAllowEvents( qt_xdisplay(), ReplayPointer, lastMouseEventTime ); +} + +void WindowWrapper::mouseReleaseEvent( QMouseEvent* ) +{ + XAllowEvents( qt_xdisplay(), ReplayPointer, lastMouseEventTime ); +} + +void WindowWrapper::mouseMoveEvent( QMouseEvent* ) +{ + //#### we sometimes get these but shouldn't..... Maybe a Qt problem + //XAllowEvents( qt_xdisplay(), ReplayPointer, lastMouseEventTime ); +} + + +bool WindowWrapper::x11Event( XEvent * e) +{ + switch ( e->type ) { + case ButtonPress: + case ButtonRelease: + lastMouseEventTime = e->xbutton.time; + if ( e->xbutton.button > 3 ) { + XAllowEvents( qt_xdisplay(), ReplayPointer, lastMouseEventTime ); + return TRUE; + } + break; + case MotionNotify: + lastMouseEventTime = e->xmotion.time; + break; + default: + break; + } + return FALSE; +} + + +/*! + \class Client client.h + + \brief The Client class encapsulates a window decoration frame. + + TODO + +*/ + +/*! + Creates a client on workspace \a ws for window \a w. + */ +Client::Client( Workspace *ws, WId w, QWidget *parent, const char *name, WFlags f ) + : QWidget( parent, name, f | WStyle_Customize | WStyle_NoBorder ) +{ + + wspace = ws; + win = w; + XWindowAttributes attr; + if (XGetWindowAttributes(qt_xdisplay(), win, &attr)){ + original_geometry.setRect(attr.x, attr.y, attr.width, attr.height ); + } + wwrap = new WindowWrapper( w, this ); + wwrap->installEventFilter( this ); + + // set the initial mapping state + setMappingState( WithdrawnState ); + desk = -1; // and no desktop yet + + mode = Nowhere; + buttonDown = FALSE; + setMouseTracking( TRUE ); + + active = FALSE; + shaded = FALSE; + transient_for = None; + is_sticky = FALSE; + + ignore_unmap = 0; + + getIcons(); + getWindowProtocols(); + getWmNormalHints(); // get xSizeHint + fetchName(); + + if ( !XGetTransientForHint( qt_xdisplay(), (Window) win, (Window*) &transient_for ) ) + transient_for = None; +} + +/*! + Destructor, nothing special. + */ +Client::~Client() +{ + releaseWindow(); +} + + +/*! + Manages the clients. This means handling the very first maprequest: + reparenting, initial geometry, initial state, placement, etc. + */ +void Client::manage( bool isMapped ) +{ + + layout()->setResizeMode( QLayout::Minimum ); + QRect geom( original_geometry ); + bool placementDone = FALSE; + + if ( isMapped ) + placementDone = TRUE; + else { + if ( xSizeHint.flags & PPosition || xSizeHint.flags & USPosition ) { + // support for obsolete hints + if ( xSizeHint.x != 0 && geom.x() == 0 ) + geom.setRect( xSizeHint.x, geom.y(), geom.width(), geom.height() ); + if ( xSizeHint.y != 0 && geom.y() == 0 ) + geom.setRect( geom.x(), xSizeHint.y, geom.width(), geom.height() ); + placementDone = TRUE; + } + if ( xSizeHint.flags & USSize || xSizeHint.flags & PSize ) { + if ( xSizeHint.width != 0 ) + geom.setWidth( xSizeHint.width ); + if ( xSizeHint.height != 0 ) + geom.setHeight( xSizeHint.height ); + } + } + + // the clever activate() trick is necessary + layout()->activate(); + resize ( sizeForWindowSize( geom.size() ) ); + layout()->activate(); + + move( geom.x(), geom.y() ); + gravitate( FALSE ); + + if ( !placementDone ) { + workspace()->doPlacement( this ); + placementDone = TRUE; + } + + // ### TODO check XGetWMHints() for initial mapping state, icon, etc. pp. + // assume window wants to be visible on the current desktop + desk = workspace()->currentDesktop(); + setMappingState( NormalState ); + desk = workspace()->currentDesktop(); + show(); + + if ( options->focusPolicyIsReasonable() ) + workspace()->requestFocus( this ); + + // ignore unmap notify send by the xserver cause the window was already mapped + if ( isMapped ) + ignore_unmap++; + +} + + +/*! + Gets the client's normal WM hints and reconfigures itself respectively. + */ +void Client::getWmNormalHints() +{ + // TODO keep in mind changing of fix size! if !isWithdrawn()! + long msize; + if (XGetWMNormalHints(qt_xdisplay(), win, &xSizeHint, &msize) == 0 + || xSizeHint.flags == 0) + xSizeHint.flags = PSize; /* not specified */ +} + +/*! + Fetches the window's caption (WM_NAME property). It will be + stored in the client's caption(). + */ +void Client::fetchName() +{ + char* name = 0; + if ( XFetchName( qt_xdisplay(), win, &name ) && name ) { + QString s = QString::fromLatin1( name ); + if ( s != caption() ) { + setCaption( QString::fromLatin1( name ) ); + if ( !isWithdrawn() ) + captionChange( caption() ); + } + XFree( name ); + } +} + +/*! + Sets the client window's mapping state. Possible values are + WithdrawnState, IconicState, NormalState. + */ +void Client::setMappingState(int s){ + if ( !win) + return; + unsigned long data[2]; + data[0] = (unsigned long) s; + data[1] = (unsigned long) None; + + state = s; + XChangeProperty(qt_xdisplay(), win, qt_wm_state, qt_wm_state, 32, + PropModeReplace, (unsigned char *)data, 2); +} + + +/*! + General handler for XEvents concerning the client window + */ +bool Client::windowEvent( XEvent * e) +{ + switch (e->type) { + case UnmapNotify: + return unmapNotify( e->xunmap ); + case MapRequest: + return mapRequest( e->xmaprequest ); + case ConfigureRequest: + return configureRequest( e->xconfigurerequest ); + case PropertyNotify: + return propertyNotify( e->xproperty ); + case ButtonPress: + case ButtonRelease: + XAllowEvents( qt_xdisplay(), e->xbutton.time, ReplayPointer ); + break; + case FocusIn: + if ( e->xfocus.mode == NotifyUngrab ) + break; // we don't care + if ( e->xfocus.detail == NotifyPointer ) + break; // we don't care + setActive( TRUE ); + break; + case FocusOut: + if ( e->xfocus.mode == NotifyGrab ) + break; // we don't care + if ( isShade() ) + break; // we neither + if ( e->xfocus.detail != NotifyNonlinear ) + return TRUE; // hack for motif apps like netscape + setActive( FALSE ); + break; + default: + break; + } + + return TRUE; // we accept everything :-) +} + + +/*! + Handles map requests of the client window + */ +bool Client::mapRequest( XMapRequestEvent& /* e */ ) +{ + switch ( mappingState() ) { + case WithdrawnState: + manage(); + break; + case IconicState: + show(); + break; + case NormalState: + show(); // for safety + break; + } + + return TRUE; +} + + +/*! + Handles unmap notify events of the client window + */ +bool Client::unmapNotify( XUnmapEvent& e ) +{ + + if ( ignore_unmap ) { + ignore_unmap--; + return TRUE; + } + + + switch ( mappingState() ) { + case IconicState: + // only react on sent events, all others are produced by us + if ( e.send_event ) + withdraw(); + break; + case NormalState: + if ( !windowWrapper()->isVisible() && !e.send_event ) + return TRUE; // this event was produced by us as well + + // maybe we will be destroyed soon. Check this first. + XEvent ev; + QApplication::syncX(); + if ( XCheckTypedWindowEvent (qt_xdisplay(), windowWrapper()->winId(), + DestroyNotify, &ev) ){ + workspace()->destroyClient( this ); + return TRUE; + } + // fall through + case WithdrawnState: // however that has been possible.... + withdraw(); + break; + } + return TRUE; +} + +/*! + Withdraws the window and destroys the client afterwards + */ +void Client::withdraw() +{ + setMappingState( WithdrawnState ); + releaseWindow(); + workspace()->destroyClient( this ); +} + +/*! + Handles configure requests of the client window + */ +bool Client::configureRequest( XConfigureRequestEvent& e ) +{ + if ( isShade() ) + setShade( FALSE ); + + if ( e.value_mask & CWBorderWidth ) { + // first, get rid of a window border + XWindowChanges wc; + unsigned int value_mask = 0; + + wc.border_width = 0; + value_mask = CWBorderWidth; + XConfigureWindow( qt_xdisplay(), win, value_mask, & wc ); + } + + if ( e.value_mask & (CWX | CWY ) ) { + int nx = x(); + int ny = y(); + if ( e.value_mask & CWX ) + nx = e.x; + if ( e.value_mask & CWY ) + ny = e.y; + move( nx, ny ); + } + + if ( e.value_mask & (CWWidth | CWHeight ) ) { + int nw = windowWrapper()->width(); + int nh = windowWrapper()->height(); + if ( e.value_mask & CWWidth ) + nw = e.width; + if ( e.value_mask & CWHeight ) + nh = e.height; + resize( sizeForWindowSize( QSize( nw, nh ) ) ); + } + + // TODO handle stacking! + + sendSynteticConfigureNotify(); + return TRUE; +} + + +/*! + Handles property changes of the client window + */ +bool Client::propertyNotify( XPropertyEvent& e ) +{ + switch ( e.atom ) { + case XA_WM_NORMAL_HINTS: + getWmNormalHints(); + break; + case XA_WM_NAME: + fetchName(); + break; + case XA_WM_TRANSIENT_FOR: + if ( !XGetTransientForHint( qt_xdisplay(), (Window) win, (Window*) &transient_for ) ) + transient_for = None; + break; + case XA_WM_HINTS: + getIcons(); + break; + default: + if ( e.atom == atoms->wm_protocols ) + getWindowProtocols(); + else if ( e.atom == atoms->kwm_win_icon ) { + getIcons(); + } + + break; + } + return TRUE; +} + + +/*! + Auxiliary function to inform the client about the current window + configuration. + + */ +void Client::sendSynteticConfigureNotify() +{ + XConfigureEvent c; + c.type = ConfigureNotify; + c.event = win; + c.window = win; + c.x = x() + windowWrapper()->x(); + c.y = y() + windowWrapper()->y(); + c.width = windowWrapper()->width(); + c.height = windowWrapper()->height(); + c.border_width = 0; + XSendEvent( qt_xdisplay(), c.event, TRUE, NoEventMask, (XEvent*)&c ); +} + + + +/*! + Adjust the frame size \a frame according to he window's size hints. + */ +QSize Client::adjustedSize( const QSize& frame) const +{ + // first, get the window size for the given frame size s + + QSize wsize( frame.width() - ( width() - wwrap->width() ), + frame.height() - ( height() - wwrap->height() ) ); + + return sizeForWindowSize( wsize ); +} + +/*! + Calculate the appropriate frame size for the given window size \a + wsize. + + \a wsize is adapted according to the window's size hints (minimum, + maximum and incremental size changes). + + */ +QSize Client::sizeForWindowSize( const QSize& wsize, bool ignore_height) const +{ + int w = wsize.width(); + int h = wsize.height(); + if (w<1) w = 1; + if (h<1) h = 1; + + int bw = 0; + int bh = 0; + + if (xSizeHint.flags & PBaseSize) { + bw = xSizeHint.base_width; + bh = xSizeHint.base_height; + if (w < xSizeHint.base_width) + w = xSizeHint.base_width; + if (h < xSizeHint.base_height) + h = xSizeHint.base_height; + } + + if (xSizeHint.flags & PResizeInc) { + if ( xSizeHint.width_inc > 0 ) { + int sx = (w - bw) / xSizeHint.width_inc; + w = bw + sx * xSizeHint.width_inc; + } + if ( xSizeHint.height_inc > 0 ) { + int sy = (h - bh) / xSizeHint.height_inc; + h = bh + sy * xSizeHint.height_inc; + } + } + + int ww = wwrap->width(); + int wh = 0; + if ( !wwrap->testWState( WState_ForceHide ) ) + wh = wwrap->height(); + + return QSize( QMIN( QMAX( width() - ww + w, minimumWidth() ), + maximumWidth() ), + ignore_height? height()-wh : QMIN( QMAX( height() - wh + h, minimumHeight() ), + maximumHeight() ) ); +} + + +/*! + Reimplemented to provide move/resize + */ +void Client::mousePressEvent( QMouseEvent * e) +{ + if ( e->button() == LeftButton ) { + if ( options->focusPolicyIsReasonable() ) + workspace()->requestFocus( this ); + workspace()->raiseClient( this ); + mouseMoveEvent( e ); + buttonDown = TRUE; + moveOffset = e->pos(); + invertedMoveOffset = rect().bottomRight() - e->pos(); + } + else if ( e->button() == RightButton ) { + workspace()->showPopup( e->globalPos(), this ); + } +} + +/*! + Reimplemented to provide move/resize + */ +void Client::mouseReleaseEvent( QMouseEvent * e) +{ + if ( e->button() == LeftButton ) { + buttonDown = FALSE; + } +} + +/*! + Reimplemented to provide move/resize + */ +void Client::mouseMoveEvent( QMouseEvent * e) +{ + if ( !buttonDown ) { + mode = mousePosition( e->pos() ); + setMouseCursor( mode ); + return; + } + + if ( mode != Center && shaded ) { + wwrap->show(); + workspace()->requestFocus( this ); + shaded = FALSE; + } + + QPoint globalPos = e->pos() + geometry().topLeft(); + + // TODO for MDI this has to be based on the parent window! +// QPoint p = parentWidget()->mapFromGlobal( e->globalPos() ); + +// if ( !parentWidget()->rect().contains(p) ) { +// if ( p.x() < 0 ) +// p.rx() = 0; +// if ( p.y() < 0 ) +// p.ry() = 0; +// if ( p.x() > parentWidget()->width() ) +// p.rx() = parentWidget()->width(); +// if ( p.y() > parentWidget()->height() ) +// p.ry() = parentWidget()->height(); +// } + +// if ( testWState(WState_ConfigPending) ) +// return; + + QPoint p = globalPos + invertedMoveOffset; + + QPoint pp = globalPos - moveOffset; + + QSize mpsize( geometry().right() - pp.x() + 1, geometry().bottom() - pp.y() + 1 ); + mpsize = adjustedSize( mpsize ); + QPoint mp( geometry().right() - mpsize.width() + 1, + geometry().bottom() - mpsize.height() + 1 ); + + QRect geom = geometry(); + switch ( mode ) { + case TopLeft: + geom = QRect( mp, geometry().bottomRight() ) ; + break; + case BottomRight: + geom = QRect( geometry().topLeft(), p ) ; + break; + case BottomLeft: + geom = QRect( QPoint(mp.x(), geometry().y() ), QPoint( geometry().right(), p.y()) ) ; + break; + case TopRight: + geom = QRect( QPoint(geometry().x(), mp.y() ), QPoint( p.x(), geometry().bottom()) ) ; + break; + case Top: + geom = QRect( QPoint( geometry().left(), mp.y() ), geometry().bottomRight() ) ; + break; + case Bottom: + geom = QRect( geometry().topLeft(), QPoint( geometry().right(), p.y() ) ) ; + break; + case Left: + geom = QRect( QPoint( mp.x(), geometry().top() ), geometry().bottomRight() ) ; + break; + case Right: + geom = QRect( geometry().topLeft(), QPoint( p.x(), geometry().bottom() ) ) ; + break; + case Center: + geom.moveTopLeft( pp ); + break; + default: + break; + } + + if ( geom.size() != size() ) { + geom.setSize( adjustedSize( geom.size() ) ); + setGeometry( geom ); + } + else if ( geom.topLeft() != geometry().topLeft() ) + move( geom.topLeft() ); + +} + +/*! + Reimplemented to provide move/resize + */ +void Client::enterEvent( QEvent * ) +{ +} + +/*! + Reimplemented to provide move/resize + */ +void Client::leaveEvent( QEvent * ) +{ + if ( !buttonDown ) + setCursor( arrowCursor ); +} + + +/*! + Reimplemented to inform the client about the new window position. + */ +void Client::moveEvent( QMoveEvent * ) +{ + sendSynteticConfigureNotify(); +} + + +/*!\reimp + */ +void Client::showEvent( QShowEvent* ) +{ + setMappingState( NormalState ); + windowWrapper()->show();// ########## hack for qt < 2.1 + } + +/*! + Reimplemented to hide the window wrapper as well. Also informs the + workspace. + */ +void Client::hideEvent( QHideEvent* ) +{ + windowWrapper()->hide();// ########## hack for qt < 2.1 + workspace()->clientHidden( this ); +} + + + +/*! + Late initialialize the client after the window has been managed. + + Ensure to call the superclasses init() implementation when subclassing. + */ +void Client::init() +{ +} + +/*!\fn captionChange( const QString& name ) + + Indicates that the caption (the window title) changed to \a + name. Subclasses shall then repaint the title string in a clever, + fast mannor. The default implementation calls repaint( FALSE ); + */ +void Client::captionChange( const QString& ) +{ + repaint( FALSE ); +} + + +/*!\fn activeChange( bool act ) + + Indicates that the activation state changed to \a act. Subclasses + may want to indicate the new state graphically in a clever, fast + mannor. The default implementation calls repaint( FALSE ); + */ +void Client::activeChange( bool ) +{ + repaint( FALSE ); +} + +/*! + Indicates that the application's icon changed to \a act. Subclasses + may want to indicate the new state graphically in a clever, fast + mannor. The default implementation calls repaint( FALSE ); + */ +void Client::iconChange() +{ + repaint( FALSE ); +} + + +/*!\fn maximizeChange( bool max ) + + Indicates that the window was maximized or demaximized. \a max is + set respectively. Subclasses may want to indicate the new state + graphically, for example with a different icon. + */ +void Client::maximizeChange( bool ) +{ +} + +/*!\fn stickyChange( bool sticky ) + + Indicates that the window was made sticky or unsticky. \a sticky is + set respectively. Subclasses may want to indicate the new state + graphically, for example with a different icon. + */ +void Client::stickyChange( bool ) +{ +} + + + +/*! + Paints a client window. + + The default implementation does nothing. To be implemented by subclasses. + */ +void Client::paintEvent( QPaintEvent * ) +{ +} + + + +/*! + Releases the window. The client has done its job and the window is still existing. + */ +void Client::releaseWindow() +{ + if ( win ) { + gravitate( TRUE ); + windowWrapper()->releaseWindow(); + win = 0; + } +} + +/*! + Invalidates the window to avoid the client accessing it again. + + This function is called by the workspace when the window has been + destroyed. + */ +void Client::invalidateWindow() +{ + win = 0; + windowWrapper()->invalidateWindow(); +} + +/*! + Returns the minimum size. This function differs from QWidget::minimumSize() + and is to be preferred + */ +QSize Client::minimumSize() const +{ + return QSize( minimumWidth(), minimumHeight() ); +} +/*! + Returns the minimum width. This function differs from QWidget::minimumWidth() + and is to be preferred + */ +int Client::minimumWidth() const +{ + if (xSizeHint.flags & PMinSize) + return QMAX( width() - wwrap->width() + xSizeHint.min_width, + QWidget::minimumWidth() ); + else + return QWidget::minimumWidth(); +} +/*! + Returns the minimum height. This function differs from QWidget::minimumHeight() + and is to be preferred + */ +int Client::minimumHeight() const +{ + if (xSizeHint.flags & PMinSize) + return QMAX( height() - wwrap->height() + xSizeHint.min_height, + QWidget::minimumHeight() ); + else + return QWidget::minimumHeight(); +} + +/*! + Returns the maximum size. This function differs from QWidget::maximumSize() + and is to be preferred + */ +QSize Client::maximumSize() const +{ + return QSize( maximumWidth(), maximumHeight() ); +} +/*! + Returns the maximum width. This function differs from QWidget::maximumWidth() + and is to be preferred + */ +int Client::maximumWidth() const +{ + if (xSizeHint.flags & PMaxSize) + return QMIN( width() - wwrap->width() + xSizeHint.max_width, + QWidget::maximumWidth() ); + else + return QWidget::maximumWidth(); +} +/*! + Returns the maximum height. This function differs from QWidget::maximumHeight() + and is to be preferred + */ +int Client::maximumHeight() const +{ + if (xSizeHint.flags & PMaxSize) + return QMIN( height() - wwrap->height() + xSizeHint.max_height, + QWidget::maximumHeight() ); + else + return QWidget::maximumHeight(); +} + + +void Client::iconify() +{ + setMappingState( IconicState ); + hide(); + // TODO animation (virtual function) +} + +void Client::closeWindow() +{ + if ( Pdeletewindow ){ + sendClientMessage( win, atoms->wm_protocols, atoms->wm_delete_window); + } + else { + // client will not react on wm_delete_window. We have not choice + // but destroy his connection to the XServer. + XKillClient(qt_xdisplay(), win ); + workspace()->destroyClient( this ); + } +} + +void Client::maximize( MaximizeMode /*m*/) +{ + if ( geom_restore.isNull() ) { + geom_restore = geometry(); + setGeometry( workspace()->geometry() ); + maximizeChange( TRUE ); + } + else { + setGeometry( geom_restore ); + QRect invalid; + geom_restore = invalid; + maximizeChange( FALSE ); + } +} + + +void Client::toggleSticky() +{ + setSticky( !isSticky() ); +} + +void Client::maximize() +{ + maximize( MaximizeFull ); +} + + +void Client::fullScreen() +{ + workspace()->makeFullScreen( this ); +} + + + +/*! + Catch events of the WindowWrapper + */ +bool Client::eventFilter( QObject *o, QEvent * e) +{ + if ( o != wwrap ) + return FALSE; + switch ( e->type() ) { + case QEvent::MouseButtonPress: + if ( options->focusPolicyIsReasonable() ) + workspace()->requestFocus( this ); + workspace()->raiseClient( this ); + break; + case QEvent::MouseButtonRelease: + break; + default: + break; + } + + return FALSE; +} + +void Client::gravitate( bool invert ){ + int gravity, dx, dy; + dx = dy = 0; + + gravity = NorthWestGravity; + if ( xSizeHint.flags & PWinGravity) + gravity = xSizeHint.win_gravity; + + switch (gravity) { + case NorthWestGravity: + dx = 0; + dy = 0; + break; + case NorthGravity: + dx = -windowWrapper()->x(); + dy = 0; + break; + case NorthEastGravity: + dx = -( width() - windowWrapper()->width() ); + dy = 0; + break; + case WestGravity: + dx = 0; + dy = -windowWrapper()->y(); + break; + case CenterGravity: + case StaticGravity: + dx = -windowWrapper()->x(); + dy = -windowWrapper()->y(); + break; + case EastGravity: + dx = -( width() - windowWrapper()->width() ); + dy = -windowWrapper()->y(); + break; + case SouthWestGravity: + dx = 0; + dy = -( height() - windowWrapper()->height() ); + break; + case SouthGravity: + dx = -windowWrapper()->x(); + dy = -( height() - windowWrapper()->height() ); + break; + case SouthEastGravity: + dx = -( width() - windowWrapper()->width() - 1 ); + dy = -( height() - windowWrapper()->height() - 1 ); + break; + } + if (invert) + move( x() - dx, y() - dy ); + else + move( x() + dx, y() + dy ); +} + +/*! + Reimplement to handle crossing events (qt should provide xroot, yroot) +*/ +bool Client::x11Event( XEvent * e) +{ + if ( e->type == EnterNotify ) { + if ( options->focusPolicy != Options::ClickToFocus ) + workspace()->requestFocus( this ); + return TRUE; + } + if ( e->type == LeaveNotify ) { + if ( !buttonDown ) + setCursor( arrowCursor ); + if ( options->focusPolicy == Options::FocusStricklyUnderMouse ) { + if ( isActive() && !rect().contains( QPoint( e->xcrossing.x, e->xcrossing.y ) ) ) + workspace()->requestFocus( 0 ) ; + } + return TRUE; + } + return FALSE; +} + + +/*! + Returns a logical mouse position for the cursor position \a + p. Possible positions are: Nowhere, TopLeft , BottomRight, + BottomLeft, TopRight, Top, Bottom, Left, Right, Center + */ +Client::MousePosition Client::mousePosition( const QPoint& p ) const +{ + const int range = 16; + const int border = 4; + + MousePosition m = Nowhere; + + + if ( ( p.x() > border && p.x() < width() - border ) + && ( p.y() > border && p.y() < height() - border ) ) + return Center; + + if ( p.y() <= range && p.x() <= range) + m = TopLeft; + else if ( p.y() >= height()-range && p.x() >= width()-range) + m = BottomRight; + else if ( p.y() >= height()-range && p.x() <= range) + m = BottomLeft; + else if ( p.y() <= range && p.x() >= width()-range) + m = TopRight; + else if ( p.y() <= border ) + m = Top; + else if ( p.y() >= height()-border ) + m = Bottom; + else if ( p.x() <= border ) + m = Left; + else if ( p.x() >= width()-border ) + m = Right; + else + m = Center; + return m; +} + +/*! + Sets an appropriate cursor shape for the logical mouse position \a m + + \sa QWidget::setCursor() + */ +void Client::setMouseCursor( MousePosition m ) +{ + switch ( m ) { + case TopLeft: + case BottomRight: + setCursor( sizeFDiagCursor ); + break; + case BottomLeft: + case TopRight: + setCursor( sizeBDiagCursor ); + break; + case Top: + case Bottom: + setCursor( sizeVerCursor ); + break; + case Left: + case Right: + setCursor( sizeHorCursor ); + break; + default: + setCursor( arrowCursor ); + break; + } +} + + +bool Client::isShade() const +{ + return shaded; +} + +void Client::setShade( bool s ) +{ + if ( shaded == s ) + return; + + shaded = s; + + if (shaded ) { + QSize s( sizeForWindowSize( QSize( windowWrapper()->width(), 0), TRUE ) ); + windowWrapper()->hide(); + resize (s ); + } else { + QSize s( sizeForWindowSize( windowWrapper()->size() ) ); + windowWrapper()->show(); + layout()->activate(); + resize ( s ); + if ( isActive() ) + workspace()->requestFocus( this ); + } +} + + +/*! + Sets the client's active state to \a act. + + This function does only change the visual appearance of the client, + it does not change the focus setting. Use + Workspace::activateClient() or Workspace::requestFocus() instead. + + If a client receives or looses the focus, it calls setActive() on + its own. + + */ +void Client::setActive( bool act) +{ + if ( active == act ) + return; + + active = act; + if ( active ) + workspace()->setActiveClient( this ); + activeChange( active ); +} + + +/*! + Sets the window's sticky property to b + */ +void Client::setSticky( bool b ) +{ + if ( is_sticky == b ) + return; + is_sticky = b; + if ( !is_sticky ) + desk = workspace()->currentDesktop(); + stickyChange( is_sticky ); +} + + +void Client::getIcons() +{ + icon_pix = KWM::icon( win, 32, 32 ); // TODO sizes from workspace + miniicon_pix = KWM::miniIcon( win, 16, 16 ); + if ( !isWithdrawn() ) + iconChange(); +} + +void Client::getWindowProtocols(){ + Atom *p; + int i,n; + + Pdeletewindow = 0; + Ptakefocus = 0; + + if (XGetWMProtocols(qt_xdisplay(), win, &p, &n)){ + for (i = 0; i < n; i++) + if (p[i] == atoms->wm_delete_window) + Pdeletewindow = 1; + else if (p[i] == atoms->wm_take_focus) + Ptakefocus = 1; + if (n>0) + XFree(p); + } +} + +/*! + Puts the focus on this window. Clients should never calls this + themselves, instead they should use Workspace::requestFocus(). + */ +void Client::takeFocus() +{ + if ( !Ptakefocus ) + XSetInputFocus( qt_xdisplay(), win, RevertToPointerRoot, CurrentTime ); + else + sendClientMessage(win, atoms->wm_protocols, atoms->wm_take_focus); +} + + +NoBorderClient::NoBorderClient( Workspace *ws, WId w, QWidget *parent=0, const char *name=0 ) + : Client( ws, w, parent, name ) +{ + QGridLayout* g = new QGridLayout( this, 0, 0, 0 ); + g->addWidget( windowWrapper(), 0, 0 ); +} + +NoBorderClient::~NoBorderClient() +{ +} + diff --git a/client.h b/client.h new file mode 100644 index 0000000000..1571cc0789 --- /dev/null +++ b/client.h @@ -0,0 +1,285 @@ +#ifndef CLIENT_H +#define CLIENT_H + +#include "options.h" +#include +#include +#include +#include +#include +#include + +class Workspace; +class Client; + +class KWM +{ +public: + static QPixmap miniIcon(Window w, int width=0, int height=0); + static QPixmap icon(Window w, int width=0, int height=0); +}; + +class WindowWrapper : public QWidget +{ + Q_OBJECT +public: + WindowWrapper( WId w, Client *parent=0, const char* name=0); + ~WindowWrapper(); + + inline WId window() const; + void releaseWindow(); + void invalidateWindow(); + QSize sizeHint() const; + QSizePolicy sizePolicy() const; + +protected: + void resizeEvent( QResizeEvent * ); + void showEvent( QShowEvent* ); + void hideEvent( QHideEvent* ); + void mousePressEvent( QMouseEvent* ); + void mouseReleaseEvent( QMouseEvent* ); + void mouseMoveEvent( QMouseEvent* ); + bool x11Event( XEvent * ); // X11 event + +private: + WId win; + Time lastMouseEventTime; +}; + +inline WId WindowWrapper::window() const +{ + return win; +} + + + +class Client : public QWidget +{ + Q_OBJECT +public: + Client( Workspace *ws, WId w, QWidget *parent=0, const char *name=0, WFlags f = 0); + ~Client(); + + inline WId window() const; + inline WindowWrapper* windowWrapper() const; + inline Workspace* workspace() const; + void releaseWindow(); + void invalidateWindow(); + inline WId transientFor() const; + + virtual bool windowEvent( XEvent * ); + + void manage( bool isMapped = FALSE ); + + void setMappingState( int s ); + int mappingState() const; + + void requestActivation(); + void withdraw(); + + QSize adjustedSize( const QSize& ) const; + QSize minimumSize() const; + int minimumWidth() const; + int minimumHeight() const; + QSize maximumSize() const; + int maximumWidth() const; + int maximumHeight() const; + + inline QPixmap icon() const; + inline QPixmap miniIcon() const; + + + // is the window in withdrawn state? + bool isWithdrawn(){ + return state == WithdrawnState; + } + // is the window in iconic state? + bool isIconified(){ + return state == IconicState; + } + // is the window in normal state? + bool isNormal(){ + return state == NormalState; + } + + inline bool isActive() const; + void setActive( bool ); + + int desktop() const; + bool isOnDesktop( int d ) const; + + bool isShade() const; + virtual void setShade( bool ); + + inline bool isMaximized() const; + enum MaximizeMode { MaximizeVertical, MaximizeHorizontal, MaximizeFull }; + + inline bool isSticky() const; + void setSticky( bool ); + + void takeFocus(); + +public slots: + void iconify(); + void closeWindow(); + void maximize( MaximizeMode ); + void maximize(); + void fullScreen(); + void toggleSticky(); + +protected: + void paintEvent( QPaintEvent * ); + void mousePressEvent( QMouseEvent * ); + void mouseReleaseEvent( QMouseEvent * ); + void mouseMoveEvent( QMouseEvent * ); + void enterEvent( QEvent * ); + void leaveEvent( QEvent * ); + void moveEvent( QMoveEvent * ); + void showEvent( QShowEvent* ); + void hideEvent( QHideEvent* ); + bool x11Event( XEvent * ); // X11 event + + bool eventFilter( QObject *, QEvent * ); + + + virtual void init(); + virtual void captionChange( const QString& name ); + virtual void iconChange(); + virtual void activeChange( bool ); + virtual void maximizeChange( bool ); + virtual void stickyChange( bool ); + + + enum MousePosition { + Nowhere, TopLeft , BottomRight, BottomLeft, TopRight, Top, Bottom, Left, Right, Center + }; + + virtual MousePosition mousePosition( const QPoint& ) const; + virtual void setMouseCursor( MousePosition m ); + + // handlers for X11 events + bool mapRequest( XMapRequestEvent& e ); + bool unmapNotify( XUnmapEvent& e ); + bool configureRequest( XConfigureRequestEvent& e ); + bool propertyNotify( XPropertyEvent& e ); + +private: + QSize sizeForWindowSize( const QSize&, bool ignore_height = FALSE ) const; + void getWmNormalHints(); + void fetchName(); + void gravitate( bool invert ); + + + WId win; + WindowWrapper* wwrap; + Workspace* wspace; + int desk; + bool buttonDown; + MousePosition mode; + QPoint moveOffset; + QPoint invertedMoveOffset; + QSize clientSize; + XSizeHints xSizeHint; + void sendSynteticConfigureNotify(); + int state; + bool active; + int ignore_unmap; + QRect original_geometry; + bool shaded; + WId transient_for; + bool is_sticky; + void getIcons(); + void getWindowProtocols(); + uint Pdeletewindow :1; // does the window understand the DeleteWindow protocol? + uint Ptakefocus :1;// does the window understand the TakeFocus protocol? + QPixmap icon_pix; + QPixmap miniicon_pix; + QRect geom_restore; +}; + +inline WId Client::window() const +{ + return win; +} + +inline WindowWrapper* Client::windowWrapper() const +{ + return wwrap; +} + +inline Workspace* Client::workspace() const +{ + return wspace; +} + +inline WId Client::transientFor() const +{ + return transient_for; +} + +inline int Client::mappingState() const +{ + return state; +} + + +inline bool Client::isActive() const +{ + return active; +} + +/*! + Returns the virtual desktop within the workspace() the client window + is located in, -1 if it isn't located on any special desktop. This may be + if the window wasn't mapped yet or if the window is sticky. Do not use + desktop() directly, use isOnDesktop() instead. + */ +inline int Client::desktop() const +{ + return desk; + } + +/*! + Returns whether the client is on visible or iconified on the virtual + desktop \a d. This is always TRUE for sticky clients. + */ +inline bool Client::isOnDesktop( int d ) const +{ + return desk == d || desk == -1 || isSticky(); +} + + +inline QPixmap Client::icon() const +{ + return icon_pix; +} + +inline QPixmap Client::miniIcon() const +{ + return miniicon_pix; +} + + +/*! + Is the client maximized? + */ +inline bool Client::isMaximized() const +{ + return !geom_restore.isNull(); +} + +inline bool Client::isSticky() const +{ + return is_sticky; +} + + +class NoBorderClient : public Client +{ + Q_OBJECT +public: + NoBorderClient( Workspace *ws, WId w, QWidget *parent=0, const char *name=0 ); + ~NoBorderClient(); +}; + +#endif diff --git a/kwin b/kwin new file mode 100755 index 0000000000000000000000000000000000000000..24bdbe865115393edfed09835f15ea77e8cf0e5a GIT binary patch literal 869686 zcmdR%e|(i?{r~U5nH+S=%vqSIQ_)aK2cm+g4cI~W$n$=Z<23r4q=i}ym zKd;|E-q-v3ao_jxcHgqaX=!Pe`I}%(v`7_y_IT$&&RmfpUURH$>o{wMb(S>^(z56` zryXH%#c|Io9hV2!L|mi1;K%C}-1DLz({^%$pM`69ahk=8@vThle=S12k?!R+P=L4r zOY)`v1O%J9Jz;GaoI?;%{Pa9;{}66736{{0*mifC=d#eA=UoC^6h$ZA~t zYgEE&(2^n>R|T%)5%zPqKE(aAxX#8s|87*m`V!c5(bI6-f@>z+Dk1manyP7caNkh3Rv7XXTvx!Y9&#J5&)|M9dZ^ixnxN>pvZ$GX-;>yRh2-pANdH~mCTx)RMhwCE5-H7W%T$kW_9&V4|`Yi5` zKu(7IK4cK`R9si!{wt9Dy93wDxc)%E-;+vMWso!VeFnlpHLVKBS&%p3x()Z=)&BS6 z{ytn0@X5Hoh-E=i=huak%b+|F0o4A-Cb; zUxSu26k3--K91`y&Hsj+i!j-^HsU^t>jmxi70BP=x(e6TxQcO2LAWMde%$l#0$i)X z{QDKIuj%_Y#Kp3ff!E>cz_k!=cSBx->r!0&TL}4Q$lv3-3HQq(InHm#br!A?T%B;g zOo#6P^Y2!09ptby6(@}Qf4V$ZyY7#5`xotafh&!6+~4WqpSU7M zwR^G4pWa!Tcj~YcT>fj}wp6=M({dixKNJzNh#f9p-G@{{z=jSNs#en{c`Rnl#KtxI$N0cNlZ;(f-$I zhaYPBrU~GZTXfi3?H1E~BKQnkZ{s>&yG_*cddOZKzDvsh+tjI*L)`(_20u=i#aY zpQAm$p#2^Kzl7@?@ZH+4R7;A>aed0gyuA@&uY~-}IQInjX883$-mcSUkniBS!^L#t z-WxaNP3!H%~q}@y4{&if}f}0`hAV+Y$qy0atCB>QW z-v#*t?e+lptGHjUnPP>$55e!F{??B3JHf@*x$aH;&*SD#23&HHD{L$7&&Bm=m%q7n z1+%i@$T7^dGW}1s{(9tm^0`UA3he(C*5mm5gmr?f2Ug`+b<9cH%(mz@AVsJIeo1?>XT+eyS9C&Z$o)5 z(CG!h)yQv(_OAweew*Yr@Z7JZdryKt+b;~B0cLpe-QelyPmVR__YioSi=PC?UGd}K zZdd$1@J_S`$1LO9;A+$_TQfJI9;7!@^QqwK-*~)lXr2Y`0dr1c{HwqtNdI))vwTay zbI=}_>hQOa(Vn!$4Bx`|(9d;~6n_g`^R0C8XZ-Jjv))Yh$FmHN{-P~n{9f?xKX|;{ z&ye2&Z$o+559CpB2lS2OgXv9#BGrIR`Az|MeIwbP+4Og{*Tvv!)ZdhUAvlEa7wYr^ z;0*AUnk&J1D6eU+b>Q7#qknghQQtiX&+=^p??nIKsrg~>HjMX8nx6z`Jdo}^4b1XC z1MYM6-+u6btGus)JCI*M$NxQeI`r>q&4YH z`=O6q*Ri}oa5eltulY9c%pJ-0To2w2`)Ar~E7*d+u_q7GAN5 z^ZzZ_gZO#c-v(EsJ+9H^Ps2FaiTK7oWq?D_Z(|=$C&ONH?Z@;l1^0lzj{9?P`M|qT zf7%QBF9#Q4Ja8{fZUzq`J)c#L`v(WzsG(Q90iuO4d%=+vH zZ^L*r<^40*gZ!S*>B-Fa>vZpQgg+ZAm@LeMInd|Jbo{fy(-EHY9?KH|??n5U`QS_7 z4)izeF#Ycb=b^tdbod{Gcf0saa0ul+QHLJ}ug83liSV31{sqo)@o|&U9!S4Jr*{fC zg!VV{aW=Rg?a91(%?6LT`uke&sEcm~Pjk&bjbO{gUjk>j_&)F)^q-l}9-=?$Z}@xQ zYS_=)bpHFnqwuFaV0nH84nd!3-^jz@sTj{E;-3BU0l3U%FEXI${m^GKpPUKyy6nfr z;3cl`*MP@hFHQIYa5wDT**g77a6kAnn(M%22yf=6jo@mGXJcRP1$Ur5e~Iuc?;h}U z*uM`n?+53B&3fZ4um}B{t;a_K+=lT4A@!Sl0@?%iV@&t=G;lxcMKA0I)1L$027PD$ zlWziNA$^V&auc`%`rE2`Gk6g8@wYm?o#5T@AJhIXf{UPEM*rRc_qfK}WO!sDf8#$L zH`7r*!wYfKgYos6POl!^Kj`u1>iT^NTn&BXT9)N|0K60BnXKotJ&X_k@96ligSVl5 zR%t!~9lsOhHTHKFcnQ$3B}uq{2$TzF9r`HyjkzA0{0{QGVR|1&Z50SJ(>P} z;N9R1o&F=>QM8X4e?JBnq5S{S<#`nx!g%c0>HQJxL3?b{JO-|Y{|%ZaLlKM6{wp<4 z19w0_jlN$F9z}aJY5yXy2jw;W6{J7dwC6f-5z1$H8+ba>&(-n21MYx*_@w5ag0tZN zJI%jle6-KE^>~?ZGR7a$GwnGIT#f#2(%~-!k79mDG-{V&oy6@jwArhVpvr=xtvzXCi5<84@n-%N(Sc4_`DxY{-T zdg+hx0X32Q{s8Vr`x-v(6pROq51;nG2<*W#8 z@Ep|F@L#|ou!%nf3yYm-KjS}#jPjZG^nEIo%^~A;C zQS@Jlj=u;z9bBOMuZsRCznQP@AR|9Be!dD0p})@5;hzNep!_@+VEgxgJ5c^dF#ySb z1m|JDa1QR-9}}?f+Kv3mb^fPb&-8x|-U)rdG$ZK`fcw!Ow`)G>bkrB^U8(sq;0~0B z@AvC(z_Bo-DU4qg6AOoXSII|I1A(1a67mk{Zpp>zXtBY z`ZgQP@;?FgpuG3!_Wu)j5ccnN9sZm%;16D=%j*XZqJLIv|E=H-v?roT`JMq+BmawZ z{SSeM(I0Go=J$7S2>sQl!%xP-DGU8ut9cq3?X^JjLU11XFR1wjum|Bc>hx~~_aOfV zwSSc1q0i=guN%A*?ejm{zaQLz@;{>a@8E6le^B!$&O-gbW_+Fx9t9iwQwGjMe#V}( zf~ULU-wmFF^smf=j-sF2WKHa!>hp|*aM?)ZQvrbkI~N<8U6hO9sg_KQIxMs z^CRHhXurQ{ei}Rn{r9Zq=fQ)B&*vR1@2lWy=-XcH|2uFI(wn7ul;L6TAJObVMdu*C z*FE-YOwzh<+Zs?@w)``+ckIS^uDZ_X|cRJGjlTR@$2a}Omppbt ze@yy3=sxT^@0db==*K~wUKV&do_Bb_C*$pxbLo%v{)hIz49q{}kM|D1gIZr%z9rg! zG45HPYR#rSLz>Na-3Wdk=K%< zZsC=t+d}d#)5Wu_^1K_bUy#3akyU=}vKtmISXO?+;>7`9QF+mVh0A>9R(WkhZOAHL z34vs)gU!KJwJo7wbNR~V%GE*mu55(+v0Xzo&5di}yP~zWK2+OK-Vk(Cb+A4d3R*~O zb!|gsC|F*;c#TzdZ7}3(ZfDrl80Z9wpb1);{(u4LB) zt57gWti1g4f<=w>jm@>SDDK7Oa|`^H@IW?9xU{yRx^b<)xv?qO99n0UEp8458S1iv z#f=T9LoE9 z$SQ~5#nqL~w=S%2MfL$*uO*cY)%C$<>$Xt&+STk4le`m3`pR|EoaE-l#?V@{zBKQm z<{)xZ4Z$+BtqO+9L&4Qe<*TX?VujTb4CPnWHk8&@)2Dpa>;e?7zP73|RNL6#zoI~S zSV(YbHJZn9SQTts9Sk)i+oW3?;Ie{3)XJi}zFk{e9jb8$s|nVwszF}Kh$hHo1%cWx z1T80k=IUU}t)a%I@uh<*wS-CoY*JTZ#kE##OG#}@?TUK0vsHyIM@3tlg0WlujkOJ- z6;@e6Yp{7;k*EiHU0k71E$bSp%8tr4*arO@*HBj5tXZmy@`Eicm8+2RN3^8>it;kw z8uaA~Xtbk#W%-p&x|5(64b>8Yy&bH&wP;;auv&R)XGgUcgrL1ETG0;ZAl1sc(Opd_ z{UOa~dZa$MlFhG!LIW729K(VVBdOLx@MWoi&@ag-O_j~4fl>`u(_3YQm9;HK+sdwO zu3T|laNUZ=%I0dTY(af}<65aei&a+Ku*&Vpp(c$kdSmXXPUgN@N|@A`^72abq-noG zc<6x)k0y*`!zn(l3Nl0?Oj~0^p>BtQ*~Vp7j`Cr{qmxudCa?*ltcP+%Af>6)8P!nE zI4Oq}#6V*%)a{}ijyT?#_BK9NbFc~eiGDC~P06S!IuYF*NM&{7nqZOXB~>v;p+&Q9 zSW$;I!wA+luq0ye6iN`)WUeNvqA8VD7aPZ-7Oq;6Vq}|xE2VX7paRtv=La{Zc+o<` z$iaWsEZseMm7z+@>70vOB$e`p*7|yDb>*$WfbjJ|Nl2OI+gd`+RWMjGC!pq-eL|ty z@)pidrl}l51%n9#Ko5Uy+v>_DD}+vz8mX}peO7!vvfCvo0<0qkR^wuJ%`AonUclsD+huTBz1q3HzJRDP~-Q`qgY) zi=I<~mNr0RJ|YklE>u~C*~By?8Yxuk)JuWslXBMB0a2Q&`pTA;Hfxtqvo`Fc55BgQbABewvbYKo4%mAfT6E zVmWte!^QEqL{FYBCuOOPL$jV-70VD-E+zmHf#FCdx}q_J^%a^t8DpV#GEr(<)R;6u zOk}I6k@G2rcYb4QOVA9Z)wN>rlEw7aowgI+5I)G4Y!tGdU?4^=agryTMdnqV*r$c-xvUKKdNk|XihLupzFC3b}e7f zqRPn>i={`MvFcn@Q(KRbg*T=O(w z61cuGRJ#%@GLt!rhgIXp_*QY@u}H;U(7Z~fT4x^dJ3Ur3i~8kjsKi=JYN;AkttzpD zSlzl>O?9SWI6-p3+4fOh48F9X3az8Fx3IG6)>X}otqs-rjnyvIplwv)X3a?r z!`zZCvQtRaC~-;+r8LkT%rO&4P46$<-pMTk{JFDmd+NQ0_Tj?4a+MhUWFS}ZFLMQ8 z9a%D+qs!;Nj;f4LGB{@kZID`_o}uyns&iUyO^u;v5QNXK9Pg(WKuoI=Ga5FX&e(LV zE8x8p+Lr34EwlFH{x8*EFX)&pjZ0B8dSCX2rn5!O7B^P4ih3#qU=0>v5xYjOLX%0- zM*{mBvAvPeprW{%f0ipiGJJDmn=81p)L?+(rfTdyT8=dWY8uzNGOww1E3DN5-+T@b zsJm<6D0hyIW4K?hx2UH2FuwJ*EixDCx~CdUjJ4(|r&)bKNl6Sw0q0T=<;-uhcW4tB}VCnb+6~tBFlx)vfd5`ZB=ul zj6!9AP0l>k;W+{~ODZh__D334HaD(bhIL89EOw@vdSyrE96cCU?7*GFC2R<}-odsG zyS)~iGdBbSO_fzLOLGV3_FStie5!MDkx*-`;K~khRl|&n?+%F8Gs>uRgPwYo(uT=| zn;D}Vg*eeI&96iO+fZX34dE=tRTnCT+uE~d>T8?Sx~5zXlx2&{NUp^Wf;34rojtHL zzlzGkG{@cD=l&qpKrSDn>#!SZ&9c++uEm6AYQgR^J7_jFO6-I~wOm!an7ed$yW?mg z88kVl^jbJ2nbeqmmtRZkiV)Ucs-;vjxEiF&Ed5YktxsizdZyN=nrvpRChpdjQ~G?W zDh>q$SS9i_T-5jI<1nSd*gWGfMW@=#lls-BsZt%akG1K zwm24Q+t5<4PL|Ou?lbX4Rj>n<)i{#XN9H*N3me;(RjzAn<#C&G=6Z^T&|O)?!N3ZJ zcz!X<6$xt{u2{7RQVE%@8!Kl@mApdb(it1Fe4ODH$g}l1s32qBAGh3*|wQa#_ zRYX?@rS9dOGYA&!zpcbLdm;_Pqa>VeuVWokG^eoE@0UZ^RA*-$pX%(Wk`-*LMfFpC zYw^TNZR%6q5lgF!StnIBu3lXma?bi(np}v*MnKIX`IQZLXwhu7V8NvysHCQQjIfv) zljEId^`>c$+IBc6TJ`#D3Qa8b=UQy$oAB@p<_|}|)j@w{Ly#6ad9uhsU&sTdWcU?0 zDl`w>Br1mXe-|+sj|NxmI33%_oW$ZP#jnM=Bqt(v*+=JMjQjW^CUaWBCx~dAlqwW( zU?giaPi_kvv2I$4XMJk^ODPzaMe0Z%PkTb#Nsl{p!;p{%C`!rok*cgqoby6X3LMOH z3%C~#U<^6aOTlc%aSl`9F|^|%QOrT_xN})Gj<0R5tyTliQCc=8M}yl=&MG)|Kn7CL z#VVu(Qtq%-2vgX&)>&Pk{gUC7HyZIHy(Qr#j+vIC;gFwahLw%-phQAohN?8y7B<#D zuYfKbJGDiZV#w(j*z@z?9H*X6cs4ACQ_^869;5pguPI-H6>oK*6;GhW+&B-oopCDD ziCUOBCWs3&4SZr;Ta`>VIU(qNk;mPxWwX{ds*iZFZ}si0oTScuv-9)@W9lqnQd3auRH zwAvM#=E*g~F?j7bC%g<(hTRokhq*lY`U(4O1)5S`Lt&6vvvi0B)zw9f0nUp-ynj(B z$M%b{TXLKhb4AC>NNPByY-r)T8rX+$T?* zZd%r@76(XSdho5FmQZ!oMHi_zgXYm;wW>5uMOG236pnx2$0}cXL;39TS$LhLnoBb` z_2pxdd#ju3e+n&9Z)yB7#vooaR*{7OSV$Y}y;tY~Rb`M{~6 z+PZex(uIr4XX8yQbBDL^`In~uQMjl;86EihLDvgh&QcnHXg!%ZGCe;5wGPOR2j6Av?<9*1+&3(_9#(jJ$sqU#X zKCGKn`s!c0r^ZYrcf9}ZexeS>-^V@6uExP1?SKu8_eqWP~>*U(n z6ZuPX58%B>{xQ^I?N81W{|VN&w0{=ftvn8e<~x?@W9r-I^eVg~OAf1VW7EH+-Vsgb zkD}mR;q=XT=aLdX>ce-3)A3^={027t4)t3N>3F%G-^`|WpiGp3H2Fq1eWNA6{gBRY zF6fSL2d3k&JsP_z#78gHl=BTx^grcK`93)0i}=QYazUE4lk(;?YZql3 z`k(TYG`trMxirn%O*s?&Pq_m9Pk9&mpYpHxmV(ko|5F}D|5Lt+{-^Y!|0yp(|5NTl z|5N6n|0&m@|0(f9VK!wq`k(UiumhCeLH|>pi~gs)9d>|{KTLHVt(X$E?;<;$!A^%3IL?l-@LJ3ne}h+)8;l`k(Sz^grd=G;2F0 zzUA6M8Abn7{tV-vvI_lAc~P46IOW+G|CGPP_^0g0H#C$9^gm@${W+HQOa+j z|0&mF{8RD=%Fc)UGy0$MAo`#3_vnAhe`B7ZY{dAd#K%ulDc?ZpT82^-W(yTnnKcW9A=VJU*-U<6pnSpOZDC^U# zGRjY(|0(Ox|CD?1Jp$zr`kyi#sBtLT5qCt?37XQBToFG2rP zUIhD3`D^q)<)_g9l$W9ZDHovsDc8XMQ+@^gPdO9zpYmpmf699FKjk;k|CF21|CIPh zVlU;H=zq#O^grd#G5#qJVEj{FhVf5%Tbk8Rxeve1NEt!@Q=W(MPkC{gHAwlt_?;li z`|x|SlqX~SQ)XfOQ%+5@#whVo++oV;u>YTd{9Kylp~R0mc`5&b{-+#7|5N%g{wZI8 z{iiHM|5N?}{ZH8d`%ig3`k%5C{ZDxY`kxXX-OZtV9sN&v4aPs^(-{AhcccF)e~133 ztVaJ+K7szH>_h)kzKrotnS=hPY)Ai7o`e3U!~&>>vIgUyGBeF;qAW_YLX^j2{8LtA z{-=B%{ZF|X^FQUO=zq#zq5ml-qyH&0(EpUL!2VONLjO}XVf<5`4f{{I1pQBWFUCJ* z3HqP%G4wy>eAs`=XVL$ZKZgCM{2J^(&czuxNsABJGompMD8MY3Ad4VkvoOg zle@|7!tLZe1LSPs?PQyrDZGO`Lbimv z$YbP@4_N=5WXuYvzwjMz_w&Lvj}_mVLSqyEAN$bNFJa38shoFm*%t{`U%A0*e1GldV4o5+^%0J)7k za+viWB)5|Xgl+N`a-Z-pxsx0h9wBchcMFe_yU1O_W8_`rPT|AkZgRV@h1Fio9&(eg zha4wY2z$xBWWR6*xsRMHoJl@N&JoTc50JBkr;=@QrtmcK2-y}PNCtDN1 z1Hv=NUUHxCOmZeUE}TQ=PxcLU3(p~Ele>iHl4p=Rg|8y#klTfG$#cm~!g=Iea)s~` zGCwUH@(V8``^mY&esUQ(N4SVwLCzK~BiE2Kg>NP|kuBj0GJi5~Xyknv|KxV^fN%|Y z3%O6Yp4>@}3pbIsle>jOB5_X$5v&Lqc$ zyUA0@-NL)c+2k(aJ!F3BJk%+?mz+ax7mkzXlADBk$hqVS;a>6*vS0WB*-y?D?jx6x zbADtcp7Jh0Dk_aadL(57IH7yFT9o9N6r=QBp)Q_2yY_~kh6uilWlUQ@DB0_*%Iy|kC8|I zA>*HHrGp2Acagp1KHmyvUX`^gpLY~h3C8gi!aA#xMh5*{G8kw->l{FB?s1Hv|W z3%O5tnA}N@3y+Yule>jS$z9|w;W6?qa;NZNayPkM*urkFW)HbZ*h7w!D}=q|Ub0^} zgWN~X70x6dBF zlH`-PX0{p4I> zKe>#YBV0tTAZH7gk!#4A!Z(wf$d+&gxs5#XHyQurcJhF54S5T>Pq?1kNsbFQk++k( zg+t^na+h!$c^A1;cs;qB+%DWs-a~E@?jXm>6~bG{y=1@eR&pOXSGbdWkenmDjXXfk z7T!*_$(h1C$RlJ+xQjeS9{H<`f3k(`>(GGkE;7!EP=Dda$(iK1a5s4>xm$QQIh))i zyoWr4+$p@5oI`FGj+5t-n}mDFx#SArUh)#MU-$soPtFzYBbSkLg!{=AvVRARQ zUD(2Izh)1)N!UY` za-ZJr{VoCQw+qL~bIDD@J>*<+g>Wx<3E3}v zfb1vd3ipxA$T`COm`XPk@sSLPvle&IBFf~dzd%jxmN2?P1Ydde-o4E{&a@M(SgO@MgM8v(H zVIjaZOYjU@Mfeg$TToj@Kd&{1(%1w)VR#>Bl6C==VwO*O2tfh#XAt9Q36Zoi;#uO9Jgzhu8w42?>AQ zR6B-<;T{jl@M29i+ynNlP?~U$H?l90Zr_dxByw33+!N=bS^@h*oG2i8;tvTg*e-{^ zeHUig7*5kID;6BP=@#V2b{@W}w1kze;cEp^-&B9pmxU`6SB5`eUyyBC;hw4c7v*&Q zDBZh%QFa`{z6tsn^BoTO?Ng-`o^a2HD{Im$xcTh|cQJ~W_W}ELZ0!McMfS_8NT|WS zI;-wT-30t=1xoBiF#h45X_5U2ul+;Zqr8y~WAILk`o{eBpk$B{Egp+5%nrwk>W;6Q z04R*kJ@N)R1&O59O$gZEewdk}eNb-1YCv7XJz2~|_1kIgF}Y%Oq%K%r}UZd0D`--^U|T zw9KI2?j2$&P{{Dul#Lh0dn2E)lO&2ak=_{#oo_)SRwD%ckn7)U=IX7RZZDC}pc45Gpy26I--y3%Ml}CGfqf#j zU}&(2uQzdAr+o=xNAr6lQ9Kl}qQ#@q^#165#6oak)Emj~iRSkl`2|y!7O*eGs0T6r zyQma%hc;AWZ%fw`>|euC)hBXr=-a5#&`#DE>Fl=|w5PF6lcN8m1%8iQ#;dk@Woy6WP*F7@;d-AE@4l!x&+8^s&C z1)S{POHfq%^JoM!UiRE{OZiJLV!Uvuqz(o(PHt4`sBw&Nn}(O5tz=}W05eq&1#JEZ zKMEDF>r`)SiFd@Obl@!vYxA3}>9gVqPiJh=bboB~AyfnHhoOrC#x@^dtyG5;c)~Aa ztNQ|fboP;7BE33G1@YULKPFX5I$Wk4Vw?9M38>t?(oP=5br!Pfm8|AT+rZAno?=KR zf!OA~;(wasuN-u|5_?3MB9)+%+!qp#KD-6hKnF+x{Pth5-K9!+?fr1ac&C@j;+M)x zr)=6F=TEu~bOrkUNY)i_T59DtrQX!PMxCFk*Cr>w(qw+Bbr);xY)+Ogph6E_OB<)g zd$N3&YtMyBqjbY@f6oft=?bsXe@CfXVl(w0?VznFT!o+Fmn6WM2izaia3BlNcmUWhIH5MjDR$5m;l z=6?J8CQ!^j0ht*^xB>?S;ht=rRT{E--PlSb^O8=+$*SI@qOy7)VJ@+1aY|Uc$-(x&0R{qze7PBf3#z{)tZ7+r?3jUq@HZl!_Qv`^99;2~NygRLp?A z>FbiNG8BBkht&k0{#){}EVel=Emr+717%|H-cJXlLRIkFql2Oum^RUh%IQhz5{z@d z?lI$$A!)e!!L-D4?=X=pXa1RjR!j&k+e{GX4CX2<+vXauFZ zEv8~I|1ca?;-41#gznvngkTm|qG`pdkWH4zt;3z$Z6-Im`t2|4grRcvDwS-L3fXVB zN)4#(FFgPLS&?5nKXg_sD=pIZ{8$>5(kbEFDqVCRRM3>LO~z3+rt=43@z~%hQSL8j zZ=ChW?b@3q_uD5MbNsmA9m%B6bn-h}9JRqf<-e!Kh0+AJb=?tv-PyYROnJ6Gz!sW@ z@|>hIR0?%KC6+ADyXej2IC@*@$Ix9CUX|c{pH!X8RR<4!2lIZie%xQ6enaUr!8*LE z+U45kcx``G{>xPULqS(~)yFG!)^+f~d{c^YaXrlTialD5=5gC!HBqn1VI^UV@j@8& zAz-J;3RM|nwPs$g*32>AD4OnfGQvEu)`6Js5O{?O4nP|sh`+>sORQ8z%s1e-PkB(1 zMNhX~71=P7n1uHsp8JDT-*?Dww?8D=b9u(N_O`d!7EmCr89ymbn~akgkFq|5aVwM7 zLD>1ekqsvX>?MX1SmloRqhYS!{B|XB!)OlJyPVNzKl@wBCg$sR%^n%!))?^h+qawY zqizR2Ht+$og)8u0SK#rhmzZy_-+n;UOU#e&@sADsINHe-7|r&iU=~`n_>hjez!Q#7 zD>RGN9IleEDH%Wyb*csgaP`AhzecV9r4Nr?&MPAuI-(moxasgnX{R^^2-t5q6JE@> z({Jw(FD|4u>_jwJUfF20{iGh@tbNE!ms)@wK3U?Vl@Qw#2u*(EhhH#>No7Tnr(~ zx3bfuU_XJE0BIeSLaQ-TT~|TF)#bO}R>o$(uj_2-E^oxwjWR@hyZ8I{p!R70%!qIA zeqS8-(0mMYoRNGHMm7?k=kvBs5~oZ_EDD>(^8&BmJ|3fr%fy8PRIMy?9+kyID2_so z@fZ$kc#OaUDMrhZe>1>H;3brc38aZt%i#zb4sRH?TBjfho)Dg-&qMaW8XQTS9^Nnt zH~2*}3+?ris|OknEwW^9A0EbO&0!XvS@NWa8R^U_kOU7%;+x~QbNh7>iWDtA96de) zJ;=gc_yv!G!x)n)@$R&Qhx(~)#HQh$NSm4y^Vxp;LN)vD_YE@3{k{Pu4k~eo0%tq2 z9>l58!__#zjQTSQrT4Fw(qyv7TdTxnF9s+ZV^A4IHb#GVLqCp)qL|Y&!@u)vel;|i z_x_AX@nDKqw&OJ|g0aR}83^gOOW%@Fp8y?eXw77Q%!fs zE#oUP^uil5ttof!L7~DMvT%pDv{BvO`M%7xC!=)peOYTK55Zc=d0A}p&FFu>?Nvp2 z6Z)6m6X~7xYN7wFnbR?lfBUcSu=h99roRat#WCJ7d`uEgNe^eCoU!|vXkn~)CpJ~T zmE|Dxl*Nax{`L)4$D24_*6;R|WchcBs(TZetfqwhz79Ltw$b2bJ%OHFr-BYq-$iG= zSctM?a-?It)Y-l0S1WW2w17IB3&n)O?+v$QTcM?N^k>g6&InzjZX?BU-1zNo(Roku zH)PRRp0ji{|Es$N|2g;5dIr7pA z9!t$rn})kkO2;03U1@TvJ(AX_fDc<^%Ryb0i0@E%!y&OPhg`Phkg+W;FKt`krECkl z(DGQ#{aZTSqpZo*Voi9cVT{U0SrQ(1%cy=CD?S!#B4oG+*5m+2HD4!HcI6#yP1vEm zxM+)ZVGSzdQV(wBuB=HsX-%G28#*K|QNAqA%590{8_@Z_`8xB})+C04yR3=Hu+wj6 zNvj^6p|&Q)uDlTXd{>@)_R6Zmdu)4h zK-&}8l~jAe+0Ae7Q5qoj|(U_=p8dq#s1EbzJmBbSh zD=v=@vmwwTkwqa{%<>5LZ$Fm`MHhwq_IsFj*n=M`x0>4ru0)79h9pLZM1(_W6SOYsLOPIAf%voZyWzaHQ9iFZP z>?@tHHC8)^yS+pQ&y*x*xX!%@A-V<75Lll_oK6(W+|h~ z2VUai=;ZSyS8D}qe0j`W3Kc0}7pZh)yMgfP2~%rENx=To0coX#6*;IL@WRl`{=$UO z+lRXJy7Yj(2PR9-i;oV^P7HrBWQB49cB|+Bn?7LwOKd0a*(lOri_zNbmTP{&yr(9g zS2$_p1?*X_G@d#-jR`u9_oaQOO1gi+&}O<{an;t@cS+f@B-}n7?r!u1)+fpQu|e3M z8)DJ(knh8>6f9tJa0K1uXHBUvA|rw;R~4)Z4| zlPe7B>^!547H32!U@yHs5FSh4cv5)mxX}E>wc1`mlQz{or6Su(=zxHfqJ1JU>_DUMN5$V z6R`xj5V7!9bcWx)QY@s&E?F)BMI#%(}OH9$bFFZo$ePMaKWq%l78OqJ)ho=LWhr?tqQszTx|HQvKDUop5d$uTx<34O?jQh;J+!_Q=iQeZF_C_6-?U=tSJ54dJIAWPcV7??jC7fM;{O z^%MhX*s32l^b9;Y!_Vx3utGSu9r4>w-yzkY`nBeYOaEr=f&~x)yq$_`On4mVGaVIZ zhg3By{LJI7q^~nUout>Lrgevd(J&*bw5FSA3KyuPSw&Ns2}p2?0WV-eVs7}EZpj)o z=8cMbzf4Nr@H4xOA8(Z3ztGE2j)0x*7-0LdeRRXaltCOB$BIX=cC1rY7OW>QKi(Qz zjn8zkyW{*Gu+{vFgx-)8r5A^PDhbJH7`N5ZlJlMF3SQ-)J{HT+IRxw{&tUrA_6_e^ zt*7CzY~BXbCH5EU#f!}mu+L7qKfOr@iOBG#R^5bcjnwe{^-lDAQiI`iJ-rL%(`W0R zhbwT-u{MUNB>dUxCrF#vKjY0j`XRqy~SCR(UQ`-51xMKIdc zdIwL5v7bF5{0!C9YRyQ%j_}rtE4q9vY0I-@e7Fw9#BLVo#O5VU$CQo}p!?wshcUmV zaTNH*>W<)04BaeX` zvJXwF-%|@jXox(XSf6}0!RKj>NQwIi44xd72y{cvI6ZP?b``u(nmwY}9+gNsKb=e_ z1N(s8FxCu&H_PHGP~s*sD$%WY=uB8foz4T=sTfYq z{vAc#tfOw$NwsS3g8h8}IoQ1{5$5AqaL_!r#5s>yYPEV3i}ifW!`U(2Z7_b3@Gx3W zrHZ9n_QU)^9>4lmdh~X#SD_x?l3Ha)mya49kadTwCE|y}V^gQxIRUK{^=#hu{dDh< zf#iAuqYyv*K)u}Z!j`_FKT(rpy=vpmxc0LTQGVs~Wi>b?{EwaRIi6&A>ZIE5AqG|~ zh4wF@axCaydZ1DXWXoFiv59(KOtek2kReozAICTnx|yI1nl3nNqT&0 zn-*G#e{MekBkrWcQdOR@iJ{XIS3Ak_dqcEQ;v&?8Q$Afyo4UuxSg zh&5n`et;=}@;uQ%WuQ(gDY2i|q2cwFQbzP5$xoHonEIKDYJWI+66ljyaGU!*JuWbQ zby%7k~D#iLt1;3|{?o3}P`T%ih_ zvH8_09eC*g-C4ax+9-nVJW<&<9?2dmv9Hq}=(Fmihm);-w1D)oBgj@K>~#t=9Yu`s zb=kPoAE$qOHef&5&g?QGFMxEL`b(nu@dEoEF%6jA`?0p3Evo}>iTw{05?z?=?cL*^ z$H7i5%nFaq2%U+4)@Fpq&J9(E$37D}E3rB}mKU0lSgG_sV81#hO*-^tBpG=xV4ox- z&@=QUVfQ+@8mddhoVlMdj$S7R#C|j@JxSo$OWC*Rsq(xgH*5Zc*35vtI9rOIIO}Nt zg&D1ru}9Vk$nzpo!xWv&qfTz{?)M$|Bnlb5HiVv$e+NqK8=h4f;_EH79|}30I9EHz zqs6^xFW{+9sqK4ShwLe}@&99Gdq%LSy;wUVWDi5yrFNTs(harU+@2kl@f*1i4V?<))C1Z@}7&1@K*~rS9 z1s|Pogz_o0ETlhVq?BIZkTL5k=xjO@u!;# zH>MH_59A`572)T45!>2`Cl!bJfb;naei7;Y+CRk=-52!@PkG`_2Ejz1_F`oD;qY?@ zOoXv$@rVltMydU(4(b!i(xLRF&F2CM;c~3Uw)=b*cwS?XR1V^Lz(bg@sNyRAD%>{2+ra zKgcRH>YzTMw@rl*;vg4(u#2M8uzHCT5|a~?%=*NKR|VpFXsC6M^ZpC0zu*4qI$bfW zET(M!8G2Q3YbGcUXIt~TMjg;^Uvv|1y_leXmUO(bQXIMb;U*lXTFwex9hktrAiw+c z{DedP=n_xlzO4uwiFQ((TE}7=M$~IxU;B~hAm4^6wf(9j@RSq^ObY(e65Ia;l`D4o z#fKwuC>6PHJ5ozrW$d@#{y}mHHKBDn&Vf*lCyX1G!~8)jT3498tebh8k(i|4M=)=a z=<{BQT5Y1D$yz7r)1X8;Uh`h#UYl$hrmaxsvi+G3l*ww%lTGg9aF>+sXf+v|mp!0( za?ZqN>}Ih0wjiFgUP^N zb0cqYN+oerV+ZW+AM3%6cFt1uieWD%rL*6-Z+lE9s`tIq&}zQsIM_9oJntctk^C@nn>@9|1rIA$-?bU+IDY?Q7(C$Ss-nOQpQ?4 z19oXLT$3vt+U+z)tzy0{e*4o-wBju#IA%ln-uwy6|8e#GCsv&@zHyfNLsMD%Gp>wK z>~0sfV+|`PtujEgK7cgB}Ms%lV`v_!wG4xahzkDYosW{;=)SYPX}F;@5t)$;~H!qY>Avlus`o~ zk`35TJnb~!*lo#*^Vx^r-st4^6dhvEmf_!k{Y58Esr{B}#Mowfl_>o>{XZ6mzd$Gb z7kkPtNzQPREU_zelG^J;$IE`u=`m@wS6l^Nf@J*m&%{NVhYq@VqI>_7K79)&P3zNx zPdN?pMw8PZY_Elze%(INKiT>Oi(L??+-`#IItvCZ_-?ep(v{zG{ZpQe$F z`S$qj=fpPP3oNxC!p?bf4l}{CmToC%>?v|=^9=r5yaz^kP?b|TmEc=ODS|BVLV?&* z*%ExJ6Z|O?oK8Hj%^GFG-q>b_RHc|F+kZUP%1-Y=Q!yXs4dd0Zr!o;RU{~)pEmvaq z>O{pWw%P0C_JqlePAJ?7(xs|!=f*Z$PQW`%Ksv$jEdIWfN;V{qj((_L8pgbgXKBgj zTl)PyIomOl?x`qtI9?w;l|P1^EH`!z`0P0OeXUwX&HtNJ;uz;ec;`?}<~%N*IV`1t ztzD^gB(gv9A-C~eXrB_!1X#}>KJqHo6>1MPlH5Z{I<43yKj@15Z#M2uL=L1x#=%OB z3FWuv6*4zhePclM-VbMXz_9GUNC=(mDMm&Gg z>y&-+$nYMsYT@D}^2>=o*nGeC-_1c}UP^Wh)U2?t&KUVoxr{q;`@-pSyE9Dz|T-4l@Z(d5Ai%cArkKtLq zeLBYY^8K%N|CsWz4_m$~W;aR`;^t3y^e!tc3A5%ZAAG&;hPRZ*nQxH==+E2XG z@q?7|{U{~QcTF6YkKtLqJ9Lckq>i2-~4AH@bFZH#;#qD_;ilk2FPK|^QjSD8J9>L#;LoBY)PujGAU0$wh?t1y({=7Uk6_YMT&FLThhQhO$|2PjA z3(2t}^B3NIsxZx9pH;@&WT<4G*x$`x)E45~@vG%TY^s^N!($Ud$MczjFX2OYeHieM z8eKvt1)p)gu1d^KKl3`t1dj2f<7W$0&Z1z*VG!MmKRT zJkP=s8p9s1&fqCO&#mML?=Ut~lc(Hy4?MA%n)U;E!1c6BK&LZG8d}W|`Q8G1jxL*T zXLR{ae1H5cJ^Uii|MORod^~_t;rVi_oThkmcpSKXPd5!-FJMX!nwG)=+XXyeGjY=p zw-X-|F=GiCzeO62k5ATp*W~x&Ki`ZjA06ta*7E$BNq$ua#ChNHVXQ626;2A&V#3(b ze7nG&F+RaC6U6xg)4SG$l>;t&SX&6+fcXB#m>#^#CKV9ZQ%syg(dF1T_kPC|SQ=<_ z2){kg^iBPE;xw>a)z5b@nt!ms{)fq?Ukdz=lTCjA1<&L6H--k-FpT&u6R|Iv-&bH? z^_a;^8fQ$(6EMx4Z#_p%P7LwEq|)c@bIRP=D`&Ftoyq~h|# z;y2nCyXl?_Uf6?rS&~s>F$X{JS22li`9Le7mUB2tcYfMb+k9t{0pOa5j zO9(s#oI9!Yd>QWe9!CcGh#d3DvDmz8Wjy22U&!#qT{-4Ixte)!?}mdwpN$>PeX4l?dL4@WLb(hMd_X0(5|7qC$!CYY zWKr*4tc!|QuGjGGH$BM>B%j0M6-=}aYz?3F>CgZ4C`N&>->*`NjYqFi{bU#CVno(b{(pHwt3}LD|C5l`1g3@m`G|%2Tk4w(os*hc zw)n5o{%DWP+fPIS6PW<5ai{oS;r3VGBhE=CxjMA~jPGImT~7ReRyy_fNcz|sSVLPJ z|2MQhYTKDi42{1&6Nw#%aEV)-^KSIt567p6LsKg;UqA1|nRhb1KC{Y@&Xn}L41AJK z59zb7^tWfR;4rladgbg5d>NRFCarD2Jd`K%5T<_FY>weKww(1tVwEYM_T~S_De1e^ zMB@L(Dd{|$>noKS|G!O1kJF5E>W&us*>U@WXtDRMyLjNcrB{suy*~>N&*fe=-+R|4 z`d;bFXiXRGx(fp`-@8Rzant@IdgGlQc1A3JERsKn*NJIuelO4CJ$wMY^?O>wa8|%~ zW2EclS+V*I693m1Mv3MR7T6W?5e4%ou)A~;akF*ij4w~VF;NZB`r+-PF^Ov*e3E&1 zhxmX(%5f-`Z%6Vm^B|#8oe;j5%kM`%n2feOBxOpP4qb#p1@>>`(+O3CGn^ve1Nr;| zk^DZ)NYMq^>0QW&lau?!0gq&MrZK(v_Sj^i3wfz3qy$@AB04SB?sU3{>jTP_>!x=W zFn}!1V!^#~IN;K&yX0k3_RECCb?B5W!tKw$lVd&j%vNL*e{w zP+FePAnG#lrGUiu%M&vlf2PF$O_w|Vlw|y!Dt^FTt1864Y0YFEb|9j8t1oet&aPDj zA6kd=C+)OCIVHZGe82XIZ{lsQUn3KJJ|{D*d#>SB)Ba6vsXkQV1NBNBzLe!>6i;CA zuw^Gbz*5WGG*dd-(DG)bg(t|q(e;xO#cF?2JQnlZ4{w;H!_gDv%>~bd`3pR)liQ=r z1aCp%H`k6C2A}t;FcXgW#uAT7di>CKBc77uJ-JiWY^(MZBkEmz7GCcMC!n#;me&MW zY@Q#m*wzjyHeNp8eLhR2H;mrY4P%MC79-1#Fe`lspm$p?R$ZkH$xf0{1cp7sdJw&5^+xHgy7PtLG`!m{7u#rDdkmF8G2Qs zOU1cQ+ceC*#=gx{pjTG=)ot?Afm}tjx1Bs8gpZzib9N{_aRJ7oQ0DQiXVi3Ic6s

0HKR$-nh$X=DI~tm8cx+Ib4IS_OT2ZN_8ZQI2ivs=wU+sY zp-w+T*l7N6L%9y=*wc- zvZe5wv z2#F$sMh~}eNTn@WORYx5)}pppFQuq8Rw|U*N|joQv`t&u?hxA2ikkA$^8MDDnSJ(2 z0``61|M!2s?|r@lD|=?mn%kN+Yt~%$Y{nIi9O->Ey)^&5^`j3qFgPolDoy_O{f9^V z^RSyHX-w}e1i}`M>i-l1dHqMfMzm|Jf8WC)HiX{m-zY(|ot?Jjw z>KPXGS5S=XW4%m^xap{$`K2cFmN|k7X*t*G96V|iF#T|uRyW!*9}@q4%8MSMKTf8S zu0QTft+VS{rP}DW;YLJ?k2I7QG3E>~lLhVHu+<>nFi2suG?e!noe!IHF&V8TikoWZ z$lH>iS^j=a9@Ea`=tEcwiKb{(SDb1s988WrsK*TTJb=dgwiz{BzsUO*84be`ffr5c zv^`tC&nP!Ir=drf>|LKxBk#m-D3e0pW73fFs{iD6<-I7ayn{@>cH-NV?9a|bqNzX* zWt5xiIL(fWoX|T-X?xl-K0?=HjS4%LTNHJU$lG&!RA+|Wy$>a2mGij|wyKxc4=Kt}WO%MU^?kW*hl}N{hd5A zyv0Z;3xg;c?``dh7y#^*os1aBI{zCoT;u=vpQd!XTZj7caul^e75laJHTvC9{=`tW zHn;w|HOqS+8atkON9l6R$(Qywsk|_`elTJx{;P|GHP>eY`LmoX4~~|RMw%txR3A4ruc7i-%p7YiT+l9 z*$YI2{CuDM&B|uT%e{yt7yWiRi;$No~ow#tItk?2J4=MS3Xi;s}LN5OS| z#3`CnUNKR&`caD8DjSI-m$`b6xM+t|zkHjBGCMk@$waz873pAQ2posh#(A?{BvGhK zG|GYcQ?{BYQ&Lg9%4r(K8|Phaqi~+d8zH5WK@6+Mt3PEsG_AE-zcTOp*j_Yx%P&>m zlzZQ@{xL0w1m#xgxN0S5)P1}sw)6i*>yV|N7xTVg6a~fPN?wlEJ*N6W4#7Bk>mG`k ztle7w{CLFPM4IA9DsCcHvbKpmPZ#kO`r}CAxcPJKEA`J$@}r)Win>{&ZZ7ve>!Q9O z_F6B^?}hs3r}&W$n9*BC(M=j@Q@Pis+@qk+NdKpbetyr?KR?Zn`dljNQyTTDa;v|H zx&*Clk>Sgfw6Kvj2faRs7DgF#!k`=UlH{)& zS;bT8ZCtBzD;zvX`Jbk%T7HSfn}xRe49#R4AxG;d_c>>RwDv#kv%S>& zigt3||L6UeBF$SDD!MPGf1^ZcDL}g*ig%C z{;2(6N27f0+u@em{&AFx*?U{xzwoJg?_m*V9To&iyG>^{;g(T~Kq3FhBB~XEntjhA z)++)P`a_F&RS~Gh7c9a9Vfp%4QVZO2{eM_{NEJ`g60QVm2|dJ=nzg)g#GvRSwMJZ9 zzHd=&?5#6de6DEU(nvDZ9)Rzro&bu3FmOZ!Ydm?l&*LR&)!i3HCPdA82!gjX!Xm zd6iaQ`cmiDnUC((!WdEEwZwKtatd;!l5Gv1b0uNCf-sedcEwJ~Q5Yd_Q~) z-e=y;1lcrPou@SfGC)&@f;I3t^Pt&t((#{kB|lS==d22jdMi`;nfq>UUvCN-xX(Oc zs5`&U{1zK{HBFz&pwwp2@jmlYZTfPbd8TBp_Oo{p{7Apg+&_m=%$+&8 z-rv@)G&Qh#!HQs+x61TGmY~aBSN)+z&9Nj7EBX=*A!j!C4GCI01u{jCJQn6bMMOcB zdKpSAd@%^iSC`h0uag9_?t|JVFsZ8a`c6hsY%9gd4!Uch4a2ky0nE2L zU&WWE zd4Acw^A%^RVX~iXTHLS+wRpNVrY~qRThTkoHBHC9wgRbpAN0{;()R69%fCysG&G4f zg;1%OQK9oNlxRRVf4s^DnsQuhgsA07?8SENak+`tQe}o@d!c^JV&}>Tj=o5V>U-K( zqWT5w6!u}mvX*Pnx{ltI>pde_Eu*bIHU(<5L;QHK+8^#mD!na!eN(E}p1%m(Cwpw& zn|_~cX`z!L-hWyl-066qZ0L7_=WXb~k+Rf%vZoGmDR@)Q6=(W=vN6@=96_gL|6`z% z;?b!I8nZ#G==8Wu<2zcPg2nnY8ndUj8s7TtEvo!Zt1%*8H9@dj-wCqAc7O3hG~N<5 z+3{oRt`_Hub{}W|r{TmHr3-kufsG{h752TYf zDf+dhXjb>Q+uIl3Yv?bs@e?-w)3!n<+X`)x`7bHTcz3^4%+yB~4jEg;zGJ(Stue6- zr>fY=pNoqL+`ao@!+>wlf<*-N-qZ0vWXR&#Ec<2$|R;yiN}@^ z>(KS3i`<&(fj<6PHv%{BK9yW$rTt9R$3s;{t4`DvvRhT;&e5k8|~y|>i}mi37aUwtU`F0n+twV}8OfhjRX z{HjYC%m03ta{XcV)rc-{i@Qrhn9(>C;>!`gi z_#t|e74p$SjeL1#K61U4%wk)V>rH+wHyULpEFEr9Q!R>E=LF>W%cLms{F)S9_b?AmSyr|0U)dk+kt1k!bDqsu>X-@_W7nlFww9ktvWta?xS*c+T=OuW9NzG3&j z5OZfL$%Pi*Rb44IM!EO2$xGcA`EJNDbaj|5OKJj~ZEV;@LP`BAn{N5#-cMbG`fbTE zCbONv%({@-h(KmnI(qpEO}Y0PT^_EYDe!WeBsPs^IWgHF$w-!B)Fkzxkp2*7QVpQ55`is-GsOPfcRB@eD8kLU&E8~T_88VzxRNgC^ssyvkyxB zS+x=UsU}tQL)?Y>Axg*A(D)ntZ+KCN z8eSE?HmE6Rjt@;YlG)Jk3IX*EFYveWuUZf@A$ZI&#aOyYr5MY*(qS{>Z_rOVRsM}A z$n9rP_+m?$TDU@gdaj^a;TDswiep*>KUmeM#B9$jj>->+-Zsx@ebT=ie%E?Xp%704G)O0vi+Q^ z*10qA`J|I10=__nFDv!Uu-~{gmhV=)zN+DQ=xDE1#X#LimbGQJ>ax)5-GMkv(9^qTXqeq2Z^g?>nmSqOE0>9|Rh>2{IbT&G<~} zrB&_I9ct5!c&{xDGHa<#bhc%#x7F~eDl@5C+MiiYQ@nfwQ!A+~=#a}VE*1Id!+3l> zxw!Gz&W}#ASw*}dwg^U##I@H)TTVks==lOGTEEkVh_=X;$Rbsym%L@MHS}B89?~iJ zj++fxK#0(rR(jZC?+DNvQM=EEEKZ}JYq8%5(3_M_yL;V<{`n!H-Z9i^ZjaZi`= zw?66QTMBuZiP*ZS^;@mai2RePhI{u2FYU<~`ZMzfGZIR<`6j69RyhP#_a@vNmS5_v zzEX96!?1pg1J2#Q)LUTO-sg!T_F|ql9uZ-gW;aG-9^)UHOd9<<)98GsmeGuMdUM#o z(3``q2vy1sptni&oivQxC|mAL`MWSIi(Ply9*?3{>+c#;6|L-XRH|QnvZRt#)x-Ly zT7TI3$5?;F`mZv6pZ{Y>5B*ufL;45vv7v(TzbAK*dux9s>CXbt<>^E)^>BM1>75Zd=gZ zzCR*2e}J;nYObqF=J3UyJ(x|B{O=ZOYsiNqIOz0Oa+WXF^jh`@TpeODA3H4M48|M@ z;BJtH32VkRl;vY(?73Rml`LK}cvwjdpDeIp{RsQM3G;FN!EH1+yM{nC=Dgp~v`rGV zCkU?0d#{hC>n&z%;#KHjc{SHn&J>ya9$bbmsvJ=cn!+D$Q=HW6FdAE)k1H9U6j~#j z)|;u7#-QAG?dxdqk(M1OLl{%)y?V#XUr8$4JE2R1&XkNOM){R3d=q zw)UofCE8BuwX#4E;pIyZnWN3Be_JjRl;n^@4uk%)IsB6`M`DvnLH6LQb85Qt%AE(2 z$8UM8^^^V$J}o?Ae12HndOhpQHigpc!DV^9mj8@u`*EIjaad&0#TB_#-jsCTN7_B4 z>mBjt&}~h3P^(uTSpZCZBl$H=Qzz*JSsO+Z%gNzry`HpB7T47; zpQ*&l%#pus%je>ivNmX{tOj#s<8n!m@1fY-A7j+VJhbm=wic%3<=aF|6ZUhDFYNYw zW$Vp}txfgK2xP;eaQ%BnzSoO%K6tV|*Sk-JsX&CT^;%x8Gy3OP)Z-(Py`es%^#q1f zLoaWeaMHkkKfK||fmBFM4C%M_&SVsf5v|A&Nk-J4@&8E2$&@-At>I=#A>3Ld=c`an zy-X~*N?@Ef=qyb_zPy@Mi{KLeSCfifHL%m3hqk!Zb#fkBZ&^0wvEP&BUJqC)}x)|*I1hB0-ZepnXw zy>Oq2|Ao!qof-+Q!q;z;S2v(D)doD>EG!s58n#E!kN*9KSr|ZiOFetXh@?`}N3@mG z^P)BFD`$E?s!*4C_w|&@$$h{KbNT|B-9M0J(b_YpPFL^iVyMx9zF(ykZav-14?rCi&soyVP*%ko=Cb(~?hgNPcX` z#la_5H53kr}f9otsMW(QUi|6I~%)!}9A}zu~q*o4& zXV&lN@=li>^*`%6`bct7xFOuD*Gt)hClu6{Q<;w$_@!-+k}3jl?8<0E-l!}iPt{@~ z0V5rT-Z9Jc4l$Nx)~da6+4EB7FW6kZr)`y1W;g!Zl6TV!p&9Q?(Hn9`6F=0k>=P;b zV4Lc&{X)}~ zMK4p?p6x34RTHkMoT^0}YD!{rpJK=JGC!V4=MBSE(q#sFq|_@5q+^)$p>8!eCYe$H zA0}2>&4MOwrBxFDz;;F1p4#JJ-YQ8}r4?ne7Wh6tmN9Go zZrJHp=)MlA|jAN~l zKS^nFyO`e(#6lW!0MnKxnY30i^2gl<+lsSk5X^n9Lk@|qbl>ky9LO>{ z(OM{CvlOejR_Z-FLp7FEfzM8aT9%+E6GL}$U@=s?!267)y5?qIOCGVWV#|6D<4X6t zGg?O^<+^S@DctMZaw)LW&?b(>u6MO`E-^S-0AO61nmcTSEk*tHCRVzpM9Vab@ckw$Gl zXWqJx|Lj$B%6xSK6G@_-03joyHFS-v%AUKL+`aflWe*7t2fl}Xp)$fGa-K4-@D-Il zl~JsFSXteq7~J*4idxMrFK48vYPhFikxAHJ^&-}@uNr2_uD#)}x%-A>1`iuhbDHq4 z*YaFsQ!z!X(#h9>($^0C8G@OkU}iFkrsTv&3b&4Ry}>B2GFr!|*7&rEh1Td_?!8s% zGqdJ18vL)%YJo(lFd3U-Y}nQu+De0eZ%Wm|B#pfXz4Ar%sM9HT6~Ht(yj!`Q%6Jd! z6b(tzI|(>mFjzakYzjoY`=`^d?qXS?pzLiw~Lixu!zTtHiu7UODi4 zc7x~)(|v?1e5`iu*BI_tbsdqc81-vLimVHRVZrS|GoR6t2a!KtZ4B>Q1 zRhXohFSVYa<8>;%^ZfMQn&zk1VAC7t(yL2P&wNNK0fY2BNRPEt(w6TQt!NJATarp| zs7Vj4S3itdtw_4C#rww;DJJt{nW?c@)i$%Hd!ntPCcE`anQ&dFk{)e6nODlnyaMYp z-#gqktQ3AQCLEDR>%4OBVbi@@=F`p-z0X_U7xC$Ssq8czdLtPQsogzGRnvMR1AQPHKZbB*gYqX0TLC5oN zCda!^Q@WQOUBjZ>`k{WVyI9;ZlZg(;=S(?l^tox#r7Vw08cabR6OVjHL$q8WBZ*1w z&8~6_7^mQFb}_k0b(msGE#^&)a-tvQ;|sR&x+^1eXerX(>V^Vfl*TZ`T&NNEQTFR6{Te1N(U{UmGOzsR#pZ!>>sJO1-aZ{}L_4d;(r7 zW%2n!sTQ|PG0J5Lw&4PY6Re+cDw7Cow?Fy*jd%%{}uS6!wWsIYfG`xFxnum?e$uNjQ$?r`fkvG2i7Rjinl11Ea( zCRveS4}$Bb*cPy_UM5E$sUIyjMb(Etb+q`P#=PKMt&d(A;q;j-`d!QXQOvU2CQ4$m zvcag&OyOdS@1b}-aVR&i5ORmAKbBimUVeswsd6bJpJHBf7#LL6s;QCz-`PT4NI!S` z=l9>>Yn1+nJ z{O;D~P7RimP4i2W95fWW9fjHG^9K49$fz{8muWECB$1ZA$d;mi%y9tUMNIa?8mO>$mr7gI z#T=3rTJCKQ#EiKxiYjfz9Rb=XToOV3PBoz|E#SB>E#m$8decI1^z&wMtn~sJ1MuH% z{qLvtcVC0r+dtXqd;1EMv8@W!%p1BFg%+y4K}I0fAn7*rADAeH<`G%C)%W(zG8u~z z{~|#VP3gb#JW&Vx{`E~yNIH+npHi>h27Zd=exyrg3^t_NhTJhuLb8)LzLGj;Yu+t@ z1@*&95_gq^YA#Ie_nST2pue=D1a0>0iI@?iar1GF5D&{9p>NN>5dxG+1MZ5r(_<Yf=Y4ckwh4-8P!l>ZpqR45C@CwyK*^p&U{xX=dSfSKU6i9bz%VlN z(NdYi?~7?kjh}A1E9hrNw$=Dmr54?2TTOQO%m$#aAE#T=RkEKvreu_qOJ!KY9a1T8 z<$0GIsdZMi+*QH(n|-RLb5iGTK2uINT6&~)h_T1ad8fnJXR5s9S_&~Ui9697sM9Cz zA2`5yu|G|KN1T7=q9?hkN!6uUjJeThE*~d?eyzbV)mmNr@hxU7nXpna5sMs+v+i%| zX}zf2`?Sfth4LR=JJCDQcv~Bcy&-YPA0_W{SVeTHrIWR*D3Ay(T$R6 z79|6BF0ZU7tjznd4$`zvsaL6e%uLfx(%?#o?;RSeWs)VupbaYNi5M!;W4ZD^9QTv! zsLSVO>*X6%KVs|1?6nLv`9@p&neuwSCtu;I{0rn&QYLxjqQxYF%2(x*B-i9rlD;=t zl@(~wo769Pf>70OPp#h!eF(ZxZOr>P!YXc4RhP<|mx;YZ{z#BFOI1MjX7MOzgj@Q) zjPR=wx^#Z+BLl;)ZxO~?`WPvo@@t^>TE{O5u9W!R*3#qiONbo5Rv81LBfm_(DSll= zxqW`6^2$|?2)`tP@=NOR5?Q3z!_#_1efc)E`NwsBZK{lh(MkGAm70U3;(eqQj(V)8 znbsHH`)w~It}d@2jo5n~>T+N}VyMZ!N6QVO_QhVQrc>Xd);51Rzr(24@1jT)&q1z( z+*bT|K^>Z6P@bap3+ljjgKAdP?*z5)NPmsETTy!iwKw--MeS77JA&Hv7F1Q;yvtRZ zRUN&REPiWS=vAtKBhi$#Ews(KbGLLgG>7V4t!RWmK%#h>+ZWi5TFxvdx$gVWdJg2F! zi2w+T-54%1a57~}mw^K+1L4+z^&eGA!|@%qf2P|1EY--i{Ux|kQt&<+ZKS#L_7@Vr z{ng0m*#1LJz8S6Od4DE9Uy4(Cj8hqtN(iZazpL_@HI!kVblRI$Orw>H8o=Btm{Nzi zAIx0ATxl=?-5_bD>4vAE6Wt(ZK~y(9^E$C#kUtXSjl?{|7TPQx;heEu;N|Mo*+k(k zT(?dv^6$PsFxHr{`obh<8cZjlkLY?K`~3|o`Vkr3_|_=pB%AkWN3+c5^ka%P$Ivz& zo0j*WAg_%kZ_IkL_-N>gN9yRAd=K^e@;q8|O1XCpBL+H3jfHLu7xXtMyR0rgDvJyp z#B_Qhxmw}`c%*fu0|x5~F1h+Z2fF0yEMa4cCqg%3i9tC1JYrEhe@&V{u|?AD(rex8 z0p601!FN3dKGXr9JVAs%P?p5d?Y6ByH$u!~#)0k9%sb_e1bI_+pvvAX9?m;hnbSI? zmoa&QXx6l}H`}z|zc!fmZb@5$yskEF@%Z;qnsLVcHRIRj7?*FP_tAr7X2zSogz=3x zbfX<_wwqan?V%D}De=AWR1pK>nB%h$xjve!+OLy7YVu8uH^a!+@2RQ0o*F56Nl%ps zW_<4RB}y`1D!#>(B+v(iDvfu$E$=4EG)mefhxbq``^X;&^0w(9lD%0x${E8k%dctB zrSt2M&#zg8ai*=r=hs8JeC)<&39gj*ULMVMJbnq0yy)=`ogsqAV~k`%u>^p|%1=>$n7jh~+7=NLM@^0OZY+A9ah9|_{lVySHQ zX7O~wPw3M5+2-@JiZH%Erv{nYJ0)iXM+gb7oW>t-7g-;dpAb2IKBQW@6MmX}Q~dl5 zjPv=K$}3+vCj68LhMx~VKuH!!Wd~{FgSPr-a~SpF>Zg5slwqE)p9Zw^=cW5kkX+LE z-KP9L)2n8%;~vKt-pZ}Q3JLJOq6Ns>ES>zDPeMUbie_$Y#qy03+{Z5WYd z+fHf#-(-x|*JrzL9w}lF*(@du<8auFt-73U^hz=_@p{;g?RcJLcrN^(z>T4=YFEx? z+G|HqyZ5MhXQ$*wsFPP`B`1gZ$nq}>B|x(>Ws?nW2y!MEFwB$pmp_I^#bd*2RaGsCIBl5f9Z*_luJxi%OPOUb0lXl}}% zlC`X4dH8~z4W(ViC5K0ory6IOC%YiJk(MS+Dj$Kk966OqzuZ3739+dsiv+b<$TY$W z>CDba{W7Pw=fzFQ%xkY05v}csMB-p;-!ajb)ooXck`HY|v+?)pENtJS+pdnvLtaN$ zsn&99zZ}geqh#;Fr`MiH{~UaMxVBqsH_<01*+4&~*qzCakxTN_Y%Bke{t@PT{cyL}#XIp+3)i^#bY^5Jkb{!EGlNYM8P?k@xQ4EPfEi{ z?y&H7bQMX%N=uV8$v-vEVVSUuZ}`}~P$TR*jS2J<8f>Ykn2Fwe1cAOwq>0>@U_9lr z(wOW{ei=Fhss&Eq{_%KB1u5Y$Uc95rzLcp_xWYpzALw~-~PE|*HW+fKU9ZQ zWqIGx5l7Y>-Xx&hyG}ERvig{M|Emxl4{kl*p3g1!&NOja|6tbp?jfA_liYe=`%zo@ zrEBcyiyQfF;xO8kI*|Ege&*azpJmYX@$wP>C0tg2I3+Gu%(KpYiZYRx=EG*eI%55Fb6s}+PzNL3kWu;{8Nbd*&3>J1$~Bwi ze0KOAFyUOG%11i*Oss554RvXFoIg{ySfR2ZSgx1BU!hFQYF#h=7nwM#^)nMaPY3C6 zON^e$`=Hkrxc5P;rLK1QnkG|z={@gOZgSvMPu0P?G}J~OZDYMJ*oNYiMZ`ODl{;d= zS}jUB`KfxW0ppSplXsn{RS7)HPIeLT=Bs`g#>4H{rQxI3us9@(yuYxiHnrxro@drW zHMa{*;aeXdv-`=++d}b8xGWgxHSb1W@KG31PZ{-vcHpHx((kZi+(>NesNanB`-V0~ zzRNz@owJ{8(@U97c1Y6=btq|7NUDofb;T+c6n684}tCCDLf0wni zml(9p7Ifo6KzHj{LI2a+T`Zl|b*ga7CwkpJG}e;5#d2!E{jGreJHETjd*^bY&vk_` z^;dh1yN%cxKGD`yzD??{r-^)z2nPh*l%0N1Un*0+v|l@UoAA-UFKwl+pC*#d8uW;jy@(ZP{C;G+0NdIYloNf-(rwxry1tx0g z&oHGo3i{V3#4qR|oAG7#{2w{{=MT=bVJ)qHa_7yiBHXKz3aLEEcoNX@LB`_t3Y9B- zi%mLUpzQ+fb@!!OQb%Gw50YArH%&~)H|sAIyND@^m?knI^HsW$ zi=$2t`HH=3eK#2we#LMuQFNMPvr1#A#7945Buixc(@!_5N&xSd*}H~4L1)(`uMX4t zL(!L=3SCV}-6W~w*_BdvP77;>ma%?SG(S0GtK*q_XI_Ri zbGl}o+1ck9gEO)2a~S)+gnM5*bp(KMFkjbd-qxaF*CewCpIqCOS56e&UyZhKtL$^I znQod|PpzirOBu;Y;bc#%bj|cg+Su|s>>K&u)Fx2+kxoko=2JAzXbcwYg>~)h1uJ`I zEWsqvc>$)nXY3TFOElDcV_>>jf}1+|GNAnHL_Z8{XQ<{I|5{;y_OUX9P|GxfPiKkN zI8AYeU#Hb}H@rDTgR)If>uYi(U;Bo6WykR(u_&6h5CGmaYPlyJ>@H?lpUR(*YGpHT zxmRX?k3TW~c(=!;D`%_i$wG#-x7um)K9;ek;Vd$M0Gxph48M+EXYJLum1(kxrwIr=#3_*)g(Dr#UMhZNE*;cMl%W z=E9KpfsW-ekvisl_uH4WoA1U=95>&+pKxyrV@$fe>N>pEJviSjGv+0k7yFqr-(B;u z88~#lJD4>8hs}4}u(0SNZoYf{#m@e?N9y_s^W8JB35hI6e>A$AhX*l9e?bK9_@oX97gM4rg^4&R<|8x;fr1cf zlZHj4a#2Juj}*e@kwVx!CXpy?IVN8kPm4qaF3C+n6aK%q!v({|U0}n@19bBPZb!cY z+|Im6GbBFA{wYC^#QHFfE_q7>HdGiCzlK02+avKx{40~*ufG+Jf=Z@L)2E}IA#O794&si9oJ9|z= ztfsPJLB;tCW7Fp@sF*(U&e-%AL^G@Jh}}AU-t<`&3t|gu=gpfvZ&o}OljyN|)itq& zHPaW=RLsl_ojWr$q;}q%dDVB!yD~IsT*Ym*6$@)ZCYy5?=J#K8?%YKe42qq*FjLE6 z0&bZ;dv5K5irCEB1*99BJ#Ti+?CEo7FPvU8yL#T>*z}vL7t|17qNJ5yJWGlq(fq3; z(V9PoqwD?nun&8ymP_RcK z-ERU?39;3AeptY(^Vo*-+FaK=fHZRg~h)I&BpnZgB6v2i} zh2qtdw`Xug45Bui5km#wmoBuqI7w7ENkG{z+Ix4Gcs zzxV@)I0#Kv64eAG7ni6_Kx5ckBmon{B2s?K4^2Q)pd1(1RL`0S zUq+eO_~{E#D0q&mi#v4Yc8Hl33+L2S&kxN&71dP4Mi*ThyQ6x+oQ3nJ&!~vqQoSIC zzKPku>9Jd9&W=%`ig`7X%z|q4s=!vw||CijYOX$p5V{L-Dcg{^Ef6J z_+3<4eQU)<6*V;rX3wa+sAfU++__U{+`jOl+iEVFJ#WU`+L;v>-FEx*xwRE&vzmBi zXm(9}UiHk1*jYnSn=>myg=J;M&5s!r3!I zS66&i_42}+JLgt}iYjJQFK{a9m}8tP;?)(y3_t9{;oWmDN^KwKyytF;MDu+6{Tc$-nSR}c4xZUey6DxdJlB!t z2I37s|E@z%57>_%{2}!13+UkS${xE6Gy-aI}9Y5*-CB z0iHTL5}ir>93T(60gN33C~J0Kcm*^b3P&gLEQL2=#*FclF-OveegI_&9S%pE2;V@u zqb`d?bEN*%B?s6?{u|&ySki`eAMWu|c4(GSzjf4MtMCJSk(8aZbFnLmu82f)FT_S5 z?@FF~{~3<1;<*ke_!n+$0y$bqvlR^V8~@m2m+99N7fhc&zhXgX?8MnKXI0dMtgxgM zLb?v{wZmwuCPpL57leHD1)*DN=guvoTUN|NWwcW{*HvF#y4>^GWi#0hti_TqknYiF__1 z?0=Vh=8?C^X9?iT=jFJO&tMBn`yTj0B>L8I+E>CGKb30V-S|Dus4t^mIQ`Rx|Npgb zy8ih;rF~1j7>VvaPWwvusw~sKV!sc-A8XgX{r@j$-_6uP#+SW3k2St5IT2X~r2lT^ z+1dCq6Wu?6aWaoSyNj_a>x4+B{kIhSQ-F*wZ;{r2cYJZ<#>E3Vs_16fPhw2D+-mKM zFHIjgFbhA?776xy=Ps+6X;bWcI1v4?>`Rg8zT?P`glCUQ>4*9F*CInf{m_X2f0BN9 ztNfGglkMY-{vQZ${{Phf(a z^&;PJabo2^MSga1?*HI%TvahcCw_kG8%NQD=#Q$@ z`cQxT*}S_DTpxZbBGHq8bASOraRAD3&jKW#fS<5+?0X>+{R*X zs{EIbrtsgTKO~TclxH;ln}BMd4)_A_IPg5M6_D`u^$7ClcUB>;2t2DM=<@)+_@n8cNTCAT>q~{qHETZ2lI4UUs%Q**R3zqFvtDYU&7Jv z13Q7A0Ph2T0M7nvI6C8R;poS})woCV+y~6Zy#lDiecHir^n73~?kPNX0!_GQ@O%nr z#C?e82|V8gmH^$Eub%=u0sQfUaI}=UbT-eQ0GH$L&+~R5hWi?xHv(O83(NrK13v<; z`3Ly{zyBy4&HorY?i1R=(eDC{xXXAx3ar4L30wrc1k3^c2pj~8StBTB4!;SQfO`or z4R?Y1?KdMM9=>ebpy8Ij`5rUyo>u}o~6JQ*^%f-paAz^AOWleW}Xs> z4muS#a2xJrzy#b|c)kTx;y%jrWS(_^gf#-+0DdtT{s1$FM53nweStdw@vj6P0RB2O z61|pniTOZJ;4EMoa09RuSPr=M`BVXQD1>J~9`0(Me*mt)T?DMfJ(K5rpb_`OJf8+O z;r@{4NS^Nirvv?f*MT)als%18fG+Hj3FFcx<+&kul`arXq~19t!~0?S87qQAc` z68*X0aqq<4{TlQ=(1?E{&+h>*;BMymci;!O&nSsRKMTBzyOih6z&_kbo?in##NEX6 z9iSU&w(;zFE%Jc-UY=hB@^Qb)^F5#d_pe5<=QonJ#QitiXW|}{aCgIf6!&o42Z2+8e!#mH zE+xDG*b1})k#Po2;TZ!a1NQ1^}hNXkb2Y2hakHzk&JzmrSOQV9Sb~&`yQSz0-JDOPuh0_&A7k8b06>#?lXb& z$iF|ZZ3A)&cosh38G4d1U@$Pl!aSa}z;A#{zK-4p{(}2oz}2|V2Koax1LB_v%m=;= zybt^d_%ZNH;A89m2hYeiQvH0&Omt)g{Sf#f?#F>IviJIV7aKn(X8z^y?z842z&*28h8=-2*~&rvS(o*&x62O-$vI1Yk}3kBfygY z*EELC2ILH*z%ZZ`hyfP@WfpGYSpm3yDCdyn*Co_tNi-`QUd80UAAYebqu70Nn5FQ< z=<oOrk_9=(NAr|OfR85CckSTA7xZ5^!h0e13UA6XlV;yPI*lG8e7rUYMXHlH}BQ zZfFQ$@+~RZ*ZT|Y;nS_`S-2vrFmZy({T7W-qkl8r6d4O=AcaPzy(pkKv8s zT?yf`-zf!i=@VY84Fpc+d2^wW{m?H3XiQnBXd{k_XHANSC&r`Km{?N3M&fLKkhw)5 zPT|U~g)72^iO3D{@SX8|O?$hP@5|T%0lK0Ubo*{FVN5)WmY*NbH6007hNRygA8nH2HC5EsbYOp7WuZ1Whnc z(O0X$SAyq?4!08VQ>e3{xGoB%TFM^4tea8#E^dXte&| zqhINWm$T)$;N?Pd#}}dR2R4d%p{G?9sYrt2wOD9J98^A9D zFJpr%k1qq@qzv1k+0;pz&ET8br784n;CFUHpUtZl&F$!=ee%H{1mC`WVuTeDmc5>N zC2qfb+6KrTILS}$l%E8RxE+nSh|-RKlkL;SAP=0^w8QIk!sqI&gKsOu`%RyZF~6`qBHA#IwiAAQ?pq zg)>? zQKs>fN$x=@>WM8B)SrpW>*CouR7nM|6RjmlXnh%{a5I>Tflw09nIJSeIfO1 z1K$jOeK4Mu6&5mL3cE}`rvFG@{m|92=XrK8PNFMDlacjNgv)+tXW`OcWbBcBQsI~5 zkEFW{yzF`28NkDTgf&ZT&<%u_^kUtBGP`(1D|;8NIHNGp2iD$5iRqNIdPO`3PL7Xf z)84dQMrAyVWD|hU&J{6>%BUS9pElBza|rT=rc2YbIaU_9DL@}&{}430g8AxTJzNLJ z3~Z;2;VM@0SfZBFP4Or_jLhNN(s&jQOb|K&LP!wEj8T$-)O!i(Z_i=w5GX@Yf)0kT zi~{#C;W?+UUeF~~#-bI`!bFeB@vMdM=#AQGv0T(Tlb%NM$Tj+bN?-yRosdDN()nUiGC+7{gVq<cF4 z4}q66f0qXEMsBfz!AalD#UbadxGvDIJG`NUM)n61E@yH|0^vm~!-Z<@8tK%z!8GXP zTvpIF^yx^AxrUZ?6?AeIQ0zs=Ybi$~csYM{Rsc^qXjD_qCZ2LGD|U?VX2Rv{R%hYD zqfigVzIOQvJ{P>4Lp%|;E05s&gO{^tL3|8+3HTSl7Y67lCwd4804H^s3r!m|?c{Bw z5X1;yLwJ6_NOTx(m#1kLL~>F*OK3JhGZz|py)T^x83HFXyP(PX?D1*Zpm_$Gt2(5U z%BxRiD0JWx(kXyuP5k(I@g_w`?&U=dw<|M(!o)cr{3>YVqTbm-nnYJL1U3|-z3IsC zhwvAml^cA!bV;RW=5V4^kpBz}ox9`F7_`mM%B8(&d8-_&iJ@u{U^L*M1qJL-xCZHOT-?5$=KD<^1kff^D$!Q-v!|DomVwmsrVJH|jD3 zx(WLP)pUb;G2~@rp6+;CM>@@eSo;g4Z^|%JD-#310h*G*tdn=3fnO+)A>g+|vl*I> zd>RwaCU;{BU>W&t`XvLStXD}MGSPg7eXiF6c@!nOvEq|)pX;Cfpqa})*yI2WeSB&> z8+{H=%25iukN@1;R>5`@#-sv&aH2 z2JD8W2AaMdXs%NlsnZdgN3iUI&k+Pa33g={d_RkCPhWHl{1otwl%YL+jiqm&{u=O` zpg*f!z8k>r0w0tK;omEg&cp5azF>swD@4&l2#O(yB}$_ZwpB)kFXNL zg6nQE@I%1Q1V0eB%fnw2K>-NOG-w_^4vpl!44P(W(%RG3qmeNAwXer!i*H|#ofh9& zJq{3-^|g-m2+JZGziR-$9%{#%v0HeMZ)wEsXr$}~;N?t+T>j|r)3IrVPJXhklK-pJ zx=Md=(s!Ha%dO9@JR0Xo(qR&kUReC&mjFXIRfh3!=xBx6_DM3E$h>wu`_o0WWF0x){BKU4u0i z1OG5Io1h8yry^a7!x|P3F_A@J330O< z*~1Ow<+mr+rWtOS_R1<4EEZYaM4Y#XBW_m*ac`G$fN#If+zkE@c(DZ>z0V)Uc!?Xv z#u@k+XHEh%A`fyO#3=CXb-TnFNLVFd!Tj>Tmx8YYKQfS(X;=Cv>l)*crx;<2pxX)E ztN@)^gU6l#CvEXCGzE{RuLJmc3#*P*GuR1ZEd5*1H$vZO+hKoULy)+kmpaIre(n>I zD5j^+8^Oz(ejfOs%nCpHftUAwFAva9MG|B9OQg{Jf^z8B8@!}D*V2gFwS~Bsfgji| zKf%jS^iscHr}WYkaH^Lm$9Ck|rBk%BN8yUh!bDFdx5y2ZH1-M(l#P)jcu&tn{Gh>s znlTP&Fg7!$3nS%j=OsK>4d;9^28m1mnw1w6uIO8sxG=akd9&_KPFLABdy}j~utUk> zCAtkmmn<-mai9*4gTX|epc4poG&8jH(n)a8f!W3+m0Lw}vNP)AQ5eof6PsRls+MHi z3vEGX0na2|6esH?>~XT%caQT@0NhABLB?&!{5>;S+*zs11E}AOM_`2Tcp1EqGyXyS z<7~VV!Z#2u=iKEAA)ilyy-^mRG8kTEZxj}jy(w&mz0nwH$@jnH{CW{?mzKZZMO{SK z<&ck@Ykw$>M)s|+)mT`hQnFp8dQtR}oPYmn2U>zu2_(TxjLoeg<;r@-}naJNhpWD^y>-yF}Ht)mvw1#KR!VRlZ75?a_0Y)v^YHr6Io0`kq)XzNlXLJwfT%Ej=UeR^Vo4<3vpzN z;p(`qi>xA!{Hg%Q8(#+n_7pc+x@Q7($J!&){WRc~a`F7gZ7 zRwAEy7B8~lm(A`yN_Y|Bjiet-4_9MJ^vg`bn>x`uvfeAdV1A(Xen@z$t*|5&W zinj>cMLs7&=gKMh@3V2*@~`-eLAw&D8KgfveziTAbkwK z>@~{ocsl$cOC$LP>mu<)SFdSK>1t^gX@`TzoSX}D^yrXLx*Na%#?Cu`4V~x|c_(CG zIxQxL89yq)HxV8z_Y`n-z)tXgMu)gOidJS8uCU!fmRWQ^iLS^R4Z2mP_7&=$EN2cx z8yMY$Y>0ZY9e{KP0L?(t4V&gvp{P0PH%ljUubP`?wPHaedU!;|1y1I$_ypG$IwP>ZCtLcy_JLQN5a>#g#B(r%C`+Pu=Ue)qeJ*(Ui4M;BT}lUw zeiT_Kn8|s{fSw4>vvlP;Yo4;#Sf7{0Bl$jViti2Mkh_sgg zp_c*(?Q>uqX)-H zO7~>5Nh6mtp>i3!YrmouXB8&SW>Envku7{oBnnrpdQB8Lg9CF0-QLf+Q56rlE2iW6j%qXyvz1o`im>WH7hSETybe(VgRh{dO9kO zsjZ%b$iXnblXNh?*r9F4Y<~9cdZ>TpcIbu& z=@MO;zR;;@Z=INJHH&j`J&RC?I&Wyv%&2A33ndaOo$>bU_yg~P| z8Eo2Nw2fqodz$jPfc!%6IJ=f}_-XB9^~Y>Rt>Kc2#F-=0Al&w>j-Xik??)0vq_OFC z&gJHvZ=|E2%4LvLODf$i2Pg~T^{!UMy12QRk z(ZT)i{P)Tu{Xa~>qKnhlE42TE&jbJ6G~RS8)T56yFPao~+@TC&Xr_)#S4-l3_>1WI zZY0NdvoB)YG4d6AdGB4EPfz269HW@;uTwQbQ?P`y*8v(MUzj@x0wM;z(a&NpzX0vZ zAg!Lg;V>sOBI5_48L~7I9TKdQF6<#&Rl030-G<(UOwp}{4|(X#MR&Jfo3wmD5}9UV z7_rDj2cdT`#;~nohMc=n4oijyPoPY&V9{WrW0#TsGj$#IqIE#dCwv3pZxJs2 z)0Z!&L*N1SRM&SoHXyoVC$zioWA2hhYtIbKP%VSPAO?RcsVK_~tQ?4ln|@7o;1!CF zqViXDVjkxR+Lo~gn#MDkXF`OD7)B?f-(>}ZgeeeHSmS0w35LM{!WlY_N_}cb@1Yf( ziNo#JCvh@U$Nr2G6h#Y^9f}d&2yOn#^tqmy-!nQeI*Sdk6`Cc`yb~;+TT4VLIj+E* zP;`c@LT9jDM?`!&_H{?+)~BCYDk9BX@RPucF80f~GFqrxlXQKf-8j1|LmhQ5*X0&g zEnq6bqeh05e;VmL!&rPSZkLXcU*rXxlwlb(&Cmqx^%(ev!MB0G40n25R12C;c-aI^ z|EK=VbzEo{L7Uehy%DMpW8kytCymg2K0s5X{R8uVX*?|U-vDU(e=}WQF#piHloB?I zu=Z=BmEfm=@62XgM%a>0(vxz^`G|)IOWVhHHW#DEC`vAL+o5ZQt`4{3RnQKsh1RyZ>!IW^JW%kgsfiAW_C$9=|6kdU zC?am?+wIoW-2M`l9bJ{B*!2B~MZ|f9IMN1=C*oc!#yoDSqvFJJ8~T`XSqphJx>kNqSNTxq~psw-`9F$K)=;(L7w9j3bB^<^nT6X}9q} zDKvf4Y06}8QqrvfmJmK95MIgpuY|1yHWMcAzPa>eq?0l|1IXQo!SYL-t$^I27#wqD zzdHuL8CXkSk#f8A46jvP%V!4l*IE7Lj;zk=FLz~qQvK_oIbQwc8{qBhFLjjq%iU}3 z^L+}u+`(4H)2~OOE2dzI?{5({s-g3IrCkmH@}=?H0`^hH=drNfj^|3=vL`P0`nAtH z54_y(HwKzO-sWVNZSxXnM%~|e-qJ?0Zn=o?pgiAf+g$dZHW4;BkiKj4M#AL2!S-#w z8NA#}*uKrB9=iw|NLVnA)*t*R@S-aN_0aPSF>qq5&nG;s-R${$H*WWb=HXAE84t~N zXi5V4n7w>+&P~d=2%79Kq?b|KAADXX_@}@R>;&HgepDy;-QcHz54NSGe-QlqPViCY zpLLz!W8l|v9k~nblk~$u zXwu{?(KSs!%D2bc>j$SFClPim{U~>{wdafIN4dkTeP5CCHUskeujog)!>hCU%Uxcd zRR7qzuOjSN^=~9BSSFEGssE-<@O#0_U1aU~bqKuNS=Jf9WUWzt{}q18 zomj!L#cVoqH`XWdYd$o`lNb3`__6r4o3LZ?>mXslGC6*Q9_)x0er0!p7k<115nR~*~-aubq5HJFm3{(M&fz`lzU?Z>v*a7ST_5+83OzwW|4fF*D0V9CP zKozhUSPiTPHUe9K9l#!7KX4ex+)I3*FE9ug0Zay}fW^RSU_G!A*aGYT_5k~V!$9V* zh!6Ay1_2|0$v_pb7+4Lg2Q~s*fE~adU_Wpe$mD*g-aubq5HJFm3{(M&fz`lzU?Z>v z*a7ST_5+83OzxZN4fF*D0V9CPKozhUSPiTPHUe9K9l#!7KX4exY$iU?7Z?PL044)f zz+zxEupZb5Yyoxvdw~7GVIY$`YI_5HfkD6sU@}kzECyBs>w%5H7GMXk2iOlB1~Rz| zv^UTf7zB&}CIeN#Vqi6}9@q$M0d@d;fc?N>Ad@@(dINodLBI%LGEfC9237;>fsMcx zUT{lH-$llxqI1AT!(zzAS6 zPz5XoRs-vSjldRQ2e1d&4;%(Exv#J{&=(j4i~uGBRls6kHLxDo2y6j%0DFM_z+oVh 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�?1rgw~?W;Y`DT-SSe-#wpnO-^8~~ss`@ui9SLi- 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%0AK@vK~J`b2XOJAPOkDAz7*J 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Ç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 Ylswjk{|`pDT(&#T64h1Cfkw*z0lcm1IRF3v literal 0 HcmV?d00001 diff --git a/kwin.pro b/kwin.pro new file mode 100644 index 0000000000..8895e7e2c7 --- /dev/null +++ b/kwin.pro @@ -0,0 +1,18 @@ +TEMPLATE = app +CONFIG = qt warn_on release +HEADERS = atoms.h \ + beclient.h \ + client.h \ + main.h \ + options.h \ + stdclient.h \ + tabbox.h \ + workspace.h +SOURCES = atoms.cpp \ + beclient.cpp \ + client.cpp \ + main.cpp \ + stdclient.cpp \ + tabbox.cpp \ + workspace.cpp +TARGET = kwin diff --git a/main.cpp b/main.cpp new file mode 100644 index 0000000000..f2fb0e4e10 --- /dev/null +++ b/main.cpp @@ -0,0 +1,113 @@ +#include "main.h" +#include "options.h" +#include "atoms.h" +#include "workspace.h" +#include +#include +#include +#include +#include +#include +#include +#define INT8 _X11INT8 +#define INT32 _X11INT32 +#include +#undef INT8 +#undef INT32 + +#define i18n(x) (x) + +Options* options; +Atoms* atoms; + +static bool initting = FALSE; +int x11ErrorHandler(Display *d, XErrorEvent *e){ + char msg[80], req[80], number[80]; + bool ignore_badwindow = FALSE; //maybe temporary + + if (initting && + ( + e->request_code == X_ChangeWindowAttributes + || e->request_code == X_GrabKey + ) + && (e->error_code == BadAccess)) { + fprintf(stderr, i18n("kwin: it looks like there's already a window manager running. kwin not started\n")); + exit(1); + } + + if (ignore_badwindow && (e->error_code == BadWindow || e->error_code == BadColor)) + return 0; + + XGetErrorText(d, e->error_code, msg, sizeof(msg)); + sprintf(number, "%d", e->request_code); + XGetErrorDatabaseText(d, "XRequest", number, "", req, sizeof(req)); + + fprintf(stderr, "kwin: %s(0x%lx): %s\n", req, e->resourceid, msg); + + if (initting) { + fprintf(stderr, i18n("kwin: failure during initialisation; aborting\n")); + exit(1); + } + return 0; +} + +Application::Application( int &argc, char *argv[] ) +: QApplication( argc, argv ) +{ + initting = TRUE; + options = new Options; + atoms = new Atoms; + + // install X11 error handler + XSetErrorHandler( x11ErrorHandler ); + + // create a workspace. + workspaces += new Workspace(); + initting = FALSE; + if ( argc > 1 ) { + QString s = argv[1]; + int i = s.toInt(); + workspaces += new Workspace( (WId ) i ); + } + + syncX(); + initting = FALSE; +} + + +Application::~Application() +{ + for ( WorkspaceList::Iterator it = workspaces.begin(); it != workspaces.end(); ++it) { + delete (*it); + } +} + +bool Application::x11EventFilter( XEvent *e ) +{ + for ( WorkspaceList::Iterator it = workspaces.begin(); it != workspaces.end(); ++it) { + if ( (*it)->workspaceEvent( e ) ) + return TRUE; + } + return FALSE; +} + + + +static void sighandler(int) { + QApplication::exit(); +} + +int main( int argc, char * argv[] ) { + + if (signal(SIGTERM, sighandler) == SIG_IGN) + signal(SIGTERM, SIG_IGN); + if (signal(SIGINT, sighandler) == SIG_IGN) + signal(SIGINT, SIG_IGN); + if (signal(SIGHUP, sighandler) == SIG_IGN) + signal(SIGHUP, SIG_IGN); + + Application a( argc, argv ); + fcntl(ConnectionNumber(qt_xdisplay()), F_SETFD, 1); + + return a.exec(); +} diff --git a/main.h b/main.h new file mode 100644 index 0000000000..5bb44fa4d6 --- /dev/null +++ b/main.h @@ -0,0 +1,23 @@ +#ifndef MAIN_H +#define MAIN_H + +#include +#include "workspace.h" + +typedef QValueList WorkspaceList; +class Application : public QApplication +{ +public: + Application( int &argc, char **argv ); + ~Application(); + +protected: + bool x11EventFilter( XEvent * ); + +private: + WorkspaceList workspaces; +}; + + + +#endif diff --git a/options.h b/options.h new file mode 100644 index 0000000000..764f23fe06 --- /dev/null +++ b/options.h @@ -0,0 +1,47 @@ +#ifndef OPTIONS_H +#define OPTIONS_H + + +class Options { +public: + + /*! + Different focus policies: +

    + +
  • ClickToFocus - Clicking into a window activates it. This is + also the default. + +
  • FocusFollowsMouse - Moving the mouse pointer actively onto a + window activates it. + +
  • FocusUnderMouse - The window that happens to be under the + mouse pointer becomes active. + +
  • FocusStricklyUnderMouse - Only the window under the mouse + pointer is active. If the mouse points nowhere, nothing has the + focus. In practice, this is the same as FocusUnderMouse, since + kdesktop can take the focus. + + Note that FocusUnderMouse and FocusStricklyUnderMouse are not + particulary useful. They are only provided for old-fashined + die-hard UNIX people ;-) + +
+ */ + enum FocusPolicy { ClickToFocus, FocusFollowsMouse, FocusUnderMouse, FocusStricklyUnderMouse }; + FocusPolicy focusPolicy; + + bool focusPolicyIsReasonable() { + return focusPolicy == ClickToFocus || focusPolicy == FocusFollowsMouse; + } + + Options(){ + focusPolicy = ClickToFocus; + } + +}; + +extern Options* options; + +#endif diff --git a/stdclient.cpp b/stdclient.cpp new file mode 100644 index 0000000000..73503bf63d --- /dev/null +++ b/stdclient.cpp @@ -0,0 +1,334 @@ +#include "stdclient.h" +#include +#include +#include +#include +#include +#include +#include +#include "workspace.h" + + +static const char * close_xpm[] = { +/* width height num_colors chars_per_pixel */ +"16 16 3 1", +/* colors */ +" s None c None", +". c white", +"X c #707070", +/* pixels */ +" ", +" ", +" .X .X ", +" .XX .XX ", +" .XX .XX ", +" .XX .XX ", +" .XX.XX ", +" .XXX ", +" .XXX ", +" .XX.XX ", +" .XX .XX ", +" .XX .XX ", +" .XX .XX ", +" .X .X ", +" ", +" "}; + + +static const char * maximize_xpm[] = { +/* width height num_colors chars_per_pixel */ +"16 16 3 1", +/* colors */ +" s None c None", +". c white", +"X c #707070", +/* pixels */ +" ", +" ", +" ........... ", +" .XXXXXXXXXX ", +" .X .X ", +" .X .X ", +" .X .X ", +" .X .X ", +" .X .X ", +" .X .X ", +" .X .X ", +" .X........X ", +" .XXXXXXXXXX ", +" ", +" ", +" "}; + + +static const char * minimize_xpm[] = { +/* width height num_colors chars_per_pixel */ +"16 16 3 1", +/* colors */ +" s None c None", +". c white", +"X c #707070", +/* pixels */ +" ", +" ", +" ", +" ", +" ", +" ", +" ... ", +" . X ", +" .XX ", +" ", +" ", +" ", +" ", +" ", +" ", +" "}; + +static const char * normalize_xpm[] = { +/* width height num_colors chars_per_pixel */ +"16 16 3 1", +/* colors */ +" s None c None", +". c #707070", +"X c white", +/* pixels */ +" ", +" ", +" ........... ", +" .XXXXXXXXXX ", +" .X .X ", +" .X .X ", +" .X .X ", +" .X .X ", +" .X .X ", +" .X .X ", +" .X .X ", +" .X........X ", +" .XXXXXXXXXX ", +" ", +" ", +" "}; + +static const char * pinup_xpm[] = { +/* width height num_colors chars_per_pixel */ +"16 16 4 1", +/* colors */ +" s None c None", +". c #707070", +"X c white", +"o c #a0a0a0", +/* pixels */ +" ", +" ", +" ", +" .. . ", +" .X. .. ", +" .XX...X. ", +"XXXXXX.oXoXoX. ", +"oooooo.oXoXoX. ", +".......oo.o.o. ", +" .o...... ", +" ... .. ", +" .. . ", +" ", +" ", +" ", +" "}; + +static const char * pindown_xpm[] = { +/* width height num_colors chars_per_pixel */ +"16 16 4 1", +/* colors */ +" s None c None", +". c #707070", +"X c white", +"o c #a0a0a0", +/* pixels */ +" ", +" ", +" .... ", +" ..XXXX. ", +" ...XXXXXX. ", +" .X.XXXooo. ", +" .XX.XXooo.. ", +" .XX..Xoo... ", +" .XXXX..... ", +" .XXXoooo.. ", +" .Xoooo... ", +" .oooo... ", +" ...... ", +" ", +" ", +" "}; + +static QPixmap* close_pix = 0; +static QPixmap* maximize_pix = 0; +static QPixmap* minimize_pix = 0; +static QPixmap* normalize_pix = 0; +static QPixmap* pinup_pix = 0; +static QPixmap* pindown_pix = 0; +static bool pixmaps_created = FALSE; + +static void create_pixmaps() +{ + if ( pixmaps_created ) + return; + close_pix = new QPixmap( close_xpm ); + maximize_pix = new QPixmap( maximize_xpm ); + minimize_pix = new QPixmap( minimize_xpm ); + normalize_pix = new QPixmap( normalize_xpm ); + pinup_pix = new QPixmap( pinup_xpm ); + pindown_pix = new QPixmap( pindown_xpm ); + +} + + +StdClient::StdClient( Workspace *ws, WId w, QWidget *parent, const char *name ) + : Client( ws, w, parent, name, WResizeNoErase ) +{ + create_pixmaps(); + + QFont f = font(); + f.setBold( TRUE ); + setFont( f ); + + QGridLayout* g = new QGridLayout( this, 0, 0, 2 ); + g->setRowStretch( 1, 10 ); + g->addWidget( windowWrapper(), 1, 1 ); + g->addColSpacing(0, 2); + g->addColSpacing(2, 2); + g->addRowSpacing(2, 2); + + + button[0] = new QToolButton( this ); + button[1] = new QToolButton( this ); + button[2] = new QToolButton( this ); + button[3] = new QToolButton( this ); + button[4] = new QToolButton( this ); + button[5] = new QToolButton( this ); + + QHBoxLayout* hb = new QHBoxLayout; + g->addLayout( hb, 0, 1 ); + hb->addWidget( button[0] ); + hb->addWidget( button[1] ); + hb->addWidget( button[2] ); + + int fh = fontMetrics().lineSpacing(); + + titlebar = new QSpacerItem(10, fh, QSizePolicy::Expanding, + QSizePolicy::Minimum ); + hb->addItem( titlebar ); + + hb->addWidget( button[3] ); + hb->addWidget( button[4] ); + hb->addWidget( button[5] ); + + for ( int i = 0; i < 6; i++) { + button[i]->setMouseTracking( TRUE ); + button[i]->setFixedSize( 20, 20 ); + } + + button[0]->setIconSet( miniIcon() ); + button[1]->setIconSet( isSticky()?*pindown_pix:*pinup_pix ); + connect( button[1], SIGNAL( clicked() ), this, ( SLOT( toggleSticky() ) ) ); + button[2]->hide(); + + button[3]->setIconSet( *minimize_pix ); + connect( button[3], SIGNAL( clicked() ), this, ( SLOT( iconify() ) ) ); + button[4]->setIconSet( *maximize_pix ); + connect( button[4], SIGNAL( clicked() ), this, ( SLOT( maximize() ) ) ); + button[5]->setIconSet( *close_pix ); + connect( button[5], SIGNAL( clicked() ), this, ( SLOT( closeWindow() ) ) ); + +} + + +StdClient::~StdClient() +{ +} + + +void StdClient::resizeEvent( QResizeEvent* e) +{ + Client::resizeEvent( e ); + + if ( isVisibleToTLW() ) { + // manual clearing without the titlebar (we selected WResizeNoErase ) + QPainter p( this ); + QRect t = titlebar->geometry(); + t.setTop( 0 ); + QRegion r = rect(); + r = r.subtract( t ); + p.setClipRegion( r ); + p.eraseRect( rect() ); + } +} + +/*!\reimp + */ +void StdClient::captionChange( const QString& ) +{ + repaint( titlebar->geometry(), FALSE ); +} + + +/*!\reimp + */ +void StdClient::maximizeChange( bool m ) +{ + button[4]->setIconSet( m?*normalize_pix:*maximize_pix ); +} + + +/*!\reimp + */ +void StdClient::stickyChange( bool s) +{ + button[1]->setIconSet( s?*pindown_pix:*pinup_pix ); +} + +void StdClient::paintEvent( QPaintEvent* ) +{ + QPainter p( this ); + QRect t = titlebar->geometry(); + t.setTop( 0 ); + QRegion r = rect(); + r = r.subtract( t ); + p.setClipRegion( r ); + qDrawWinPanel( &p, rect(), colorGroup() ); + p.setClipping( FALSE ); + p.fillRect( t, isActive()?darkBlue:gray ); + qDrawShadePanel( &p, t.x(), t.y(), t.width(), t.height(), + colorGroup(), TRUE ); + + t.setTop( 2 ); + t.setLeft( t.left() + 4 ); + t.setRight( t.right() - 2 ); + + p.setPen( colorGroup().light() ); + p.drawText( t, AlignLeft|AlignVCenter, caption() ); +} + + +void StdClient::mouseDoubleClickEvent( QMouseEvent * e ) +{ + if ( titlebar->geometry().contains( e->pos() ) ) + setShade( !isShade() ); + workspace()->requestFocus( this ); +} + + +void StdClient::init() +{ + button[0]->setIconSet( miniIcon() ); + + // ### TODO transient etc. + } + +void StdClient::iconChange() +{ + button[0]->setIconSet( miniIcon() ); + button[0]->repaint( FALSE ); +} diff --git a/stdclient.h b/stdclient.h new file mode 100644 index 0000000000..7b75757bec --- /dev/null +++ b/stdclient.h @@ -0,0 +1,33 @@ +#ifndef STDCLIENT_H +#define STDCLIENT_H +#include "client.h" +class QToolButton; +class QLabel; +class QSpacerItem; + +class StdClient : public Client +{ + Q_OBJECT +public: + StdClient( Workspace *ws, WId w, QWidget *parent=0, const char *name=0 ); + ~StdClient(); + +protected: + void resizeEvent( QResizeEvent* ); + void paintEvent( QPaintEvent* ); + + void mouseDoubleClickEvent( QMouseEvent * ); + + void init(); + void captionChange( const QString& name ); + void iconChange(); + void maximizeChange( bool ); + void stickyChange( bool ); + +private: + QToolButton* button[6]; + QSpacerItem* titlebar; +}; + + +#endif diff --git a/tabbox.cpp b/tabbox.cpp new file mode 100644 index 0000000000..845b7357ff --- /dev/null +++ b/tabbox.cpp @@ -0,0 +1,179 @@ +#include "tabbox.h" +#include "workspace.h" +#include "client.h" +#include + +const bool options_traverse_all = FALSE; // TODO + +TabBox::TabBox( Workspace *ws, const char *name=0 ) + : QWidget( 0, name, WStyle_Customize | WStyle_NoBorder ) +{ + wspace = ws; + reset(); +} + +TabBox::~TabBox() +{ +} + + +/*! + Sets the current mode to \a mode, either DesktopMode or WindowsMode + + \sa mode() + */ +void TabBox::setMode( Mode mode ) +{ + m = mode; +} + + +/*! + Resets the tab box to display the active client in WindowsMode, or the + current desktop in DesktopMode + */ +void TabBox::reset() +{ + QFont f = font(); + f.setBold( TRUE ); + f.setPointSize( 14 ); + setFont( f ); + + + // TODO icons etc. + setGeometry( qApp->desktop()->width()/4, + qApp->desktop()->height()/2-fontMetrics().height()*2, + qApp->desktop()->width()/2, fontMetrics().height()*4 ); + + if ( mode() == WindowsMode ) { + client = workspace()->activeClient(); + // todo build window list, consider options_traverse_all + } + else { // DesktopMode + desk = wspace->currentDesktop(); + } + +} + + +/*! + Shows the next or previous item, depending on \a next + */ +void TabBox::nextPrev( bool next) +{ + if ( mode() == WindowsMode ) { + Client* sign = client; + do { + if (client != sign && !sign) + sign = client; + if ( next ) + client = workspace()->nextClient(client); + else + client = workspace()->previousClient(client); + } while (client != sign && client && + !options_traverse_all && + !client->isOnDesktop(workspace()->currentDesktop())); + + if (!options_traverse_all && client + && !client->isOnDesktop(workspace()->currentDesktop())) + client = 0; + } + else { // DesktopMode + if ( next ) { + desk++; + if ( desk > wspace->numberOfDesktops() ) + desk = 1; + } else { + desk--; + if ( desk < 1 ) + desk = wspace->numberOfDesktops(); + } + } + + paintContents(); +} + + + +/*! + Returns the currently displayed client ( only works in WindowsMode ). + Returns 0 if no client is displayed. + */ +Client* TabBox::currentClient() +{ + if ( mode() != WindowsMode ) + return 0; + return client; +} + +/*! + Returns the currently displayed virtual desktop ( only works in + DesktopMode ) + Returns -1 if no desktop is displayed. + */ +int TabBox::currentDesktop() +{ + if ( mode() != DesktopMode ) + return -1; + return desk; +} + + +/*! + Reimplemented to raise the tab box as well + */ +void TabBox::showEvent( QShowEvent* ) +{ + raise(); +} + + +/*! + Paints the tab box + */ +void TabBox::paintEvent( QPaintEvent* ) +{ + { + QPainter p( this ); + style().drawPanel( &p, 0, 0, width(), height(), colorGroup(), FALSE ); + style().drawPanel( &p, 4, 4, width()-8, height()-8, colorGroup(), TRUE ); + } + paintContents(); +} + +/*! + Paints the contents of the tab box. Used in paintEvent() and + whenever the contents changes. + */ +void TabBox::paintContents() +{ + QPainter p( this ); + QRect r(6, 6, width()-12, height()-12 ); + p.fillRect( r, colorGroup().brush( QColorGroup::Background ) ); + if ( mode () == WindowsMode ) { + if ( currentClient() ) { + QString s; + if (!client->isOnDesktop(workspace()->currentDesktop())){ + //TODO s = KWM::getDesktopName(client->desktop); + s.append(": "); + } + + if (client->isIconified()) + s += QString("(")+client->caption()+")"; + else + s += client->caption(); + if ( p.fontMetrics().width( s ) > r.width() ) + p.drawText( r, AlignLeft, s ); + else + p.drawText( r, AlignCenter, s ); + + } + else { + p.drawText( r, AlignCenter, "*** No Tasks ***" ); + } + } else { // DesktopMode + QString s; + s.setNum( desk ); + p.drawText( r, AlignCenter, s ); + } +} diff --git a/tabbox.h b/tabbox.h new file mode 100644 index 0000000000..d6ca7ae863 --- /dev/null +++ b/tabbox.h @@ -0,0 +1,63 @@ +#ifndef TABBOX_H +#define TABBOX_H +#include + +class Workspace; +class Client; + +typedef QValueList ClientList; + +class TabBox : public QWidget +{ + Q_OBJECT +public: + TabBox( Workspace *ws, const char *name=0 ); + ~TabBox(); + + Client* currentClient(); + int currentDesktop(); + + enum Mode { DesktopMode, WindowsMode }; + void setMode( Mode mode ); + Mode mode() const; + + void reset(); + void nextPrev( bool next = TRUE); + + Workspace* workspace() const; + +protected: + void paintEvent( QPaintEvent* ); + void showEvent( QShowEvent* ); + void paintContents(); + +private: + Client* client; + Mode m; + Workspace* wspace; + ClientList clients; + int desk; +// QValueList labels; + +}; + + +/*! + Returns the tab box' workspace + */ +inline Workspace* TabBox::workspace() const +{ + return wspace; +} + +/*! + Returns the current mode, either DesktopMode or WindowsMode + + \sa setMode() + */ +inline TabBox::Mode TabBox::mode() const +{ + return m; +} + +#endif diff --git a/workspace.cpp b/workspace.cpp new file mode 100644 index 0000000000..15eae53c56 --- /dev/null +++ b/workspace.cpp @@ -0,0 +1,859 @@ +#include "workspace.h" +#include "client.h" +#include "stdclient.h" +#include "beclient.h" +#include "tabbox.h" +#include "atoms.h" +#include +#include +#include +#include +#include +#include + + + +static Client* clientFactory( Workspace *ws, WId w ) +{ + // hack TODO hints + char* name = 0; + QString s; + if ( XFetchName( qt_xdisplay(), (Window) w, &name ) && name ) { + s = QString::fromLatin1( name ); + XFree( name ); + } + if ( s == "desktop") { + Client * c = new NoBorderClient( ws, w); + ws->setDesktopClient( c ); + return c; + } + + return new StdClient( ws, w ); +} + +Workspace::Workspace() +{ + root = qt_xrootwin(); // no MDI for now + + (void) QApplication::desktop(); // trigger creation of desktop widget + + // select windowmanager privileges + XSelectInput(qt_xdisplay(), root, + KeyPressMask | + PropertyChangeMask | + ColormapChangeMask | + SubstructureRedirectMask | + SubstructureNotifyMask + ); + + init(); + control_grab = FALSE; + tab_grab = FALSE; + tab_box = new TabBox( this ); + grabKey(XK_Tab, Mod1Mask); + grabKey(XK_Tab, Mod1Mask | ShiftMask); + grabKey(XK_Tab, ControlMask); + grabKey(XK_Tab, ControlMask | ShiftMask); + +} + +Workspace::Workspace( WId rootwin ) +{ + qDebug("create MDI workspace for %d", rootwin ); + root = rootwin; + + // select windowmanager privileges + XSelectInput(qt_xdisplay(), root, + KeyPressMask | + PropertyChangeMask | + ColormapChangeMask | + SubstructureRedirectMask | + SubstructureNotifyMask + ); + + init(); + control_grab = FALSE; + tab_grab = FALSE; + tab_box = new TabBox( this ); + grabKey(XK_Tab, Mod1Mask); + grabKey(XK_Tab, Mod1Mask | ShiftMask); + grabKey(XK_Tab, ControlMask); + grabKey(XK_Tab, ControlMask | ShiftMask); + +} + +void Workspace::init() +{ + tab_box = 0; + active_client = 0; + should_get_focus = 0; + desktop_client = 0; + current_desktop = 1; + + unsigned int i, nwins; + Window dw1, dw2, *wins; + XWindowAttributes attr; + + XGrabServer( qt_xdisplay() ); + XQueryTree(qt_xdisplay(), root, &dw1, &dw2, &wins, &nwins); + for (i = 0; i < nwins; i++) { + XGetWindowAttributes(qt_xdisplay(), wins[i], &attr); + if (attr.override_redirect ) + continue; + if (attr.map_state != IsUnmapped) { + Client* c = clientFactory( this, wins[i] ); + clients.append( c ); + if ( c != desktop_client ) + stacking_order.append( c ); + focus_chain.append( c ); + c->manage( TRUE ); + if ( c == desktop_client ) + setDesktopClient( c ); + if ( root != qt_xrootwin() ) { + // TODO may use QWidget:.create + qDebug(" create a mdi client"); + XReparentWindow( qt_xdisplay(), c->winId(), root, 0, 0 ); + c->move(0,0); + } + } + } + XFree((void *) wins); + XUngrabServer( qt_xdisplay() ); + popup = 0; +} + +Workspace::~Workspace() +{ + for ( ClientList::ConstIterator it = clients.begin(); it != clients.end(); ++it) { + delete (*it); + } + delete tab_box; + delete popup; +} + +/*! + Handles workspace specific XEvents + */ +bool Workspace::workspaceEvent( XEvent * e ) +{ + Client * c = findClient( e->xany.window ); + if ( c ) + return c->windowEvent( e ); + + switch (e->type) { + case ButtonPress: + case ButtonRelease: + break; + case UnmapNotify: + // this is special due to + // SubstructureRedirectMask. e->xany.window is the window the + // event is reported to. Take care not to confuse Qt. + c = findClient( e->xunmap.window ); + + if ( c ) + return c->windowEvent( e ); + + if ( e->xunmap.event != e->xunmap.window ) // hide wm typical event from Qt + return TRUE; + case ReparentNotify: + //do not confuse Qt with these events. After all, _we_ are the + //window manager who does the reparenting. + return true; + case DestroyNotify: + return destroyClient( findClient( e->xdestroywindow.window ) ); + case MapRequest: + if ( e->xmaprequest.parent == root ) { + c = findClient( e->xmaprequest.window ); + if ( !c ) { + c = clientFactory( this, e->xmaprequest.window ); + if ( root != qt_xrootwin() ) { + // TODO may use QWidget:.create + XReparentWindow( qt_xdisplay(), c->winId(), root, 0, 0 ); + } + clients.append( c ); + if ( c != desktop_client ) + stacking_order.append( c ); + } + bool result = c->windowEvent( e ); + if ( c == desktop_client ) + setDesktopClient( c ); + return result; + } + break; + case ConfigureRequest: + if ( e->xconfigurerequest.parent == root ) { + XWindowChanges wc; + unsigned int value_mask = 0; + wc.border_width = 0; + wc.x = e->xconfigurerequest.x; + wc.y = e->xconfigurerequest.y; + wc.width = e->xconfigurerequest.width; + wc.height = e->xconfigurerequest.height; + wc.sibling = None; + wc.stack_mode = Above; + value_mask = e->xconfigurerequest.value_mask | CWBorderWidth; + XConfigureWindow( qt_xdisplay(), e->xconfigurerequest.window, value_mask, & wc ); + + XWindowAttributes attr; + if (XGetWindowAttributes(qt_xdisplay(), e->xconfigurerequest.window, &attr)){ + // send a synthetic configure notify in any case (even if we didn't change anything) + XConfigureEvent c; + c.type = ConfigureNotify; + c.event = e->xconfigurerequest.window; + c.window = e->xconfigurerequest.window; + c.x = attr.x; + c.y = attr.y; + c.width = attr.width; + c.height = attr.height; + c.border_width = 0; + XSendEvent( qt_xdisplay(), c.event, TRUE, NoEventMask, (XEvent*)&c ); + } + return TRUE; + } + else { + c = findClient( e->xconfigurerequest.window ); + if ( c ) + return c->windowEvent( e ); + } + + break; + case KeyPress: + return keyPress(e->xkey); + break; + case KeyRelease: + return keyRelease(e->xkey); + break; + case FocusIn: + break; + case FocusOut: + break; + default: + break; + } + return FALSE; +} + +/*! + Finds the client that embedds the window \a w + */ +Client* Workspace::findClient( WId w ) const +{ + for ( ClientList::ConstIterator it = clients.begin(); it != clients.end(); ++it) { + if ( (*it)->window() == w ) + return *it; + } + return 0; +} + +/*! + Returns the workspace's geometry + */ +QRect Workspace::geometry() const +{ + if ( root == qt_xrootwin() ) + return QRect( QPoint(0, 0), QApplication::desktop()->size() ); + else { + // todo caching, keep track of configure notify etc. + QRect r; + XWindowAttributes attr; + if (XGetWindowAttributes(qt_xdisplay(), root, &attr)){ + r.setRect(0, 0, attr.width, attr.height ); + } + return r; + } +} + + +/* + Destroys the client \a c + */ +bool Workspace::destroyClient( Client* c) +{ + if ( !c ) + return FALSE; + clients.remove( c ); + stacking_order.remove( c ); + focus_chain.remove( c ); + c->invalidateWindow(); + delete c; + clientHidden( c ); + return TRUE; +} + + + +/*! + Auxiliary function to release a passive keyboard grab + */ +void Workspace::freeKeyboard(bool pass){ + if (!pass) + XAllowEvents(qt_xdisplay(), AsyncKeyboard, CurrentTime); + else + XAllowEvents(qt_xdisplay(), ReplayKeyboard, CurrentTime); + QApplication::syncX(); +} + +/*! + Handles alt-tab / control-tab + */ +bool Workspace::keyPress(XKeyEvent key) +{ + if ( root != qt_xrootwin() ) + return FALSE; + int kc = XKeycodeToKeysym(qt_xdisplay(), key.keycode, 0); + int km = key.state & (ControlMask | Mod1Mask | ShiftMask); + + const bool options_alt_tab_mode_is_CDE_style = FALSE; // TODO + + if (!control_grab){ + + if( (kc == XK_Tab) && + ( km == (Mod1Mask | ShiftMask) + || km == (Mod1Mask) + )){ + if (!tab_grab){ + if (options_alt_tab_mode_is_CDE_style ){ + // CDE style raise / lower + Client* c = topClientOnDesktop(); + Client* nc = c; + if (km & ShiftMask){ + do { + nc = previousStaticClient(nc); + } while (nc && nc != c && + (!nc->isOnDesktop(currentDesktop()) || + nc->isIconified())); + + } + else + do { + nc = nextStaticClient(nc); + } while (nc && nc != c && + (!nc->isOnDesktop(currentDesktop()) || + nc->isIconified())); + if (c && c != nc) + ;//TODO lowerClient(c); + if (nc) + activateClient( nc ); + freeKeyboard(FALSE); + return TRUE; + } + XGrabKeyboard(qt_xdisplay(), + root, FALSE, + GrabModeAsync, GrabModeAsync, + CurrentTime); + tab_grab = TRUE; + tab_box->setMode( TabBox::WindowsMode ); + tab_box->reset(); + } + tab_box->nextPrev( (km & ShiftMask) == 0 ); + tab_box->show(); + } + } + + if (!tab_grab){ + + + if( (kc == XK_Tab) && + ( km == (ControlMask | ShiftMask) + || km == (ControlMask) + )){ +//TODO if (!options.ControlTab){ +// freeKeyboard(TRUE); +// return TRUE; +// } + if (!control_grab){ + XGrabKeyboard(qt_xdisplay(), + root, FALSE, + GrabModeAsync, GrabModeAsync, + CurrentTime); + control_grab = TRUE; + tab_box->setMode( TabBox::DesktopMode ); + tab_box->reset(); + } + tab_box->nextPrev( (km & ShiftMask) == 0 ); + tab_box->show(); + } + } + + if (control_grab || tab_grab){ + if (kc == XK_Escape){ + XUngrabKeyboard(qt_xdisplay(), CurrentTime); + tab_box->hide(); + tab_grab = FALSE; + control_grab = FALSE; + return TRUE; + } + return FALSE; + } + + freeKeyboard(FALSE); + return FALSE; +} + +/*! + Handles alt-tab / control-tab + */ +bool Workspace::keyRelease(XKeyEvent key) +{ + if ( root != qt_xrootwin() ) + return FALSE; + int i; + if (tab_grab){ + XModifierKeymap* xmk = XGetModifierMapping(qt_xdisplay()); + for (i=0; imax_keypermod; i++) + if (xmk->modifiermap[xmk->max_keypermod * Mod1MapIndex + i] + == key.keycode){ + XUngrabKeyboard(qt_xdisplay(), CurrentTime); + tab_box->hide(); + tab_grab = false; + if ( tab_box->currentClient() ){ + + activateClient( tab_box->currentClient() ); + } + } + } + if (control_grab){ + XModifierKeymap* xmk = XGetModifierMapping(qt_xdisplay()); + for (i=0; imax_keypermod; i++) + if (xmk->modifiermap[xmk->max_keypermod * ControlMapIndex + i] + == key.keycode){ + XUngrabKeyboard(qt_xdisplay(), CurrentTime); + tab_box->hide(); + control_grab = False; + if ( tab_box->currentDesktop() != -1 ) + switchDesktop( tab_box->currentDesktop() ); + } + } + return FALSE; +} + +/*! + auxiliary functions to travers all clients according the focus + order. Useful for kwm´s Alt-tab feature. +*/ +Client* Workspace::nextClient( Client* c ) const +{ + if ( focus_chain.isEmpty() ) + return 0; + ClientList::ConstIterator it = focus_chain.find( c ); + if ( it == focus_chain.end() ) + return focus_chain.last(); + if ( it == focus_chain.begin() ) + return focus_chain.last(); + --it; + return *it; +} + +/*! + auxiliary functions to travers all clients according the focus + order. Useful for kwm´s Alt-tab feature. +*/ +Client* Workspace::previousClient( Client* c ) const +{ + if ( focus_chain.isEmpty() ) + return 0; + ClientList::ConstIterator it = focus_chain.find( c ); + if ( it == focus_chain.end() ) + return focus_chain.first(); + ++it; + if ( it == focus_chain.end() ) + return focus_chain.first(); + return *it; +} + +/*! + auxiliary functions to travers all clients according the static + order. Useful for the CDE-style Alt-tab feature. +*/ +Client* Workspace::nextStaticClient( Client* c ) const +{ + if ( clients.isEmpty() ) + return 0; + ClientList::ConstIterator it = clients.find( c ); + if ( it == clients.end() ) + return clients.first(); + ++it; + if ( it == clients.end() ) + return clients.first(); + return *it; +} +/*! + auxiliary functions to travers all clients according the static + order. Useful for the CDE-style Alt-tab feature. +*/ +Client* Workspace::previousStaticClient( Client* c ) const +{ + if ( clients.isEmpty() ) + return 0; + ClientList::ConstIterator it = clients.find( c ); + if ( it == clients.end() ) + return clients.last(); + if ( it == clients.begin() ) + return clients.last(); + --it; + return *it; +} + + +/*! + Returns topmost visible client within the specified layer range on + the current desktop, or 0 if no clients are visible. \a fromLayer has to + be smaller than \a toLayer. + */ +Client* Workspace::topClientOnDesktop( int fromLayer, int toLayer) const +{ + fromLayer = toLayer = 0; + return 0; +} + +/* + Grabs the keysymbol \a keysym with the given modifiers \a mod + plus all possibile combinations of Lock and NumLock + */ +void Workspace::grabKey(KeySym keysym, unsigned int mod){ + static int NumLockMask = 0; + if (!keysym||!XKeysymToKeycode(qt_xdisplay(), keysym)) return; + if (!NumLockMask){ + XModifierKeymap* xmk = XGetModifierMapping(qt_xdisplay()); + int i; + for (i=0; i<8; i++){ + if (xmk->modifiermap[xmk->max_keypermod * i] == + XKeysymToKeycode(qt_xdisplay(), XK_Num_Lock)) + NumLockMask = (1<setActive( FALSE ); + active_client = c; + if ( active_client ) { + focus_chain.remove( c ); + focus_chain.append( c ); + } +} + + +/*! + Tries to activate the client \a c. This function performs what you + expect when clicking the respective entry in a taskbar: showing and + raising the client (this may imply switching to the another virtual + desktop) and putting the focus onto it. Once X really gave focus to + the client window as requested, the client itself will call + setActiveClient() and the operation is complete. This may not happen + with certain focus policies, though. + + \sa setActiveClient(), requestFocus() + */ +void Workspace::activateClient( Client* c) +{ + if (!c->isOnDesktop(currentDesktop()) ) { + // TODO switch desktop + } + raiseClient( c ); + c->show(); + if ( options->focusPolicyIsReasonable() ) + requestFocus( c ); +} + + +/*! + Tries to activate the client by asking X for the input focus. This + function does not perform any show, raise or desktop switching. See + Workspace::activateClient() instead. + + \sa Workspace::activateClient() + */ +void Workspace::requestFocus( Client* c) +{ + + //TODO will be different for non-root clients. (subclassing?) + if ( !c ) { + focusToNull(); + return; + } + + if ( c->isVisible() && !c->isShade() ) { + c->takeFocus(); + should_get_focus = c; + } else if ( c->isShade() ) { + // client cannot accept focus, but at least the window should be active (window menu, et. al. ) + focusToNull(); + c->setActive( TRUE ); + } +} + + +/*! + Informs the workspace that the client \a c has been hidden. If it + was the active client, the workspace activates another one. + + \a c may already be destroyed + */ +void Workspace::clientHidden( Client* c ) +{ + if ( c == active_client || ( !active_client && c == should_get_focus ) ) { + active_client = 0; + should_get_focus = 0; + if ( clients.contains( c ) ) { + focus_chain.remove( c ); + focus_chain.prepend( c ); + } + if ( options->focusPolicyIsReasonable() ) { + for ( ClientList::ConstIterator it = focus_chain.fromLast(); it != focus_chain.begin(); --it) { + if ( (*it)->isVisible() ) { + requestFocus( *it ); + break; + } + } + } + } +} + + +void Workspace::showPopup( const QPoint& pos, Client* c) +{ + // experimental!!! + + if ( !popup ) { + popup = new QPopupMenu; + + // I wish I could use qt-2.1 features here..... grmblll + QPopupMenu* deco = new QPopupMenu( popup ); + deco->insertItem("KDE Classic", 100 ); + deco->insertItem("Be-like style", 101 ); + + popup->insertItem("Decoration", deco ); + } + popup_client = c; + // TODO customize popup for the client + int ret = popup->exec( pos ); + + switch( ret ) { + case 100: + setDecoration( 0 ); + break; + case 101: + setDecoration( 1 ); + break; + default: + break; + } + + popup_client = 0; + ret = 0; +} + + +/*! + Places the client \a c according to the workspace's layout policy + */ +void Workspace::doPlacement( Client* c ) +{ + randomPlacement( c ); +} + +/*! + Place the client \a c according to a simply "random" placement algorithm. + */ +void Workspace::randomPlacement(Client* c){ + const int step = 24; + static int px = step; + static int py = 2 * step; + int tx,ty; + + QRect maxRect = geometry(); // TODO + + if (px < maxRect.x()) + px = maxRect.x(); + if (py < maxRect.y()) + py = maxRect.y(); + + px += step; + py += 2*step; + + if (px > maxRect.width()/2) + px = maxRect.x() + step; + if (py > maxRect.height()/2) + py = maxRect.y() + step; + tx = px; + ty = py; + if (tx + c->width() > maxRect.right()){ + tx = maxRect.right() - c->width(); + if (tx < 0) + tx = 0; + px = maxRect.x(); + } + if (ty + c->height() > maxRect.bottom()){ + ty = maxRect.bottom() - c->height(); + if (ty < 0) + ty = 0; + py = maxRect.y(); + } + c->move( tx, ty ); +} + + + +/*! + Raises the client \a c taking layers, transient windows and window + groups into account. + */ +void Workspace::raiseClient( Client* c ) +{ + if ( !c ) + return; + if ( c == desktop_client ) + return; // deny + + Window* new_stack = new Window[ stacking_order.count()+1]; + + stacking_order.remove( c ); + stacking_order.append( c ); + + ClientList saveset; + saveset.append( c ); + raiseTransientsOf(saveset, c ); + + int i = 0; + for ( ClientList::ConstIterator it = stacking_order.fromLast(); it != stacking_order.end(); --it) { + new_stack[i++] = (*it)->winId(); + } + XRaiseWindow(qt_xdisplay(), new_stack[0]); + XRestackWindows(qt_xdisplay(), new_stack, i); + delete [] new_stack; + + if ( c->transientFor() ) + raiseClient( findClient( c->transientFor() ) ); +} + + + +/*! + Private auxiliary function used in raiseClient() + */ +void Workspace::raiseTransientsOf( ClientList& safeset, Client* c ) +{ + ClientList local = stacking_order; + for ( ClientList::ConstIterator it = local.begin(); it != local.end(); ++it) { + if ( (*it)->transientFor() == c->window() && !safeset.contains( *it ) ) { + safeset.append( *it ); + stacking_order.remove( *it ); + stacking_order.append( *it ); + raiseTransientsOf( safeset, *it ); + } + } +} + +/*! + Puts the focus on a dummy winodw + */ +void Workspace::focusToNull(){ + static Window w = 0; + int mask; + XSetWindowAttributes attr; + if (w == 0) { + mask = CWOverrideRedirect; + attr.override_redirect = 1; + w = XCreateWindow(qt_xdisplay(), qt_xrootwin(), 0, 0, 1, 1, 0, CopyFromParent, + InputOnly, CopyFromParent, mask, &attr); + XMapWindow(qt_xdisplay(), w); + } + XSetInputFocus(qt_xdisplay(), w, RevertToPointerRoot, CurrentTime ); + //colormapFocus(0); TODO +} + +void Workspace::setDesktopClient( Client* c) +{ + desktop_client = c; + if ( desktop_client ) { + desktop_client->lower(); + desktop_client->setGeometry( geometry() ); + } +} + +void Workspace::switchDesktop( int new_desktop ){ + if (new_desktop == current_desktop ) + return; + + /* + optimized Desktop switching: unmapping done from back to front + mapping done from front to back => less exposure events + */ + + for ( ClientList::ConstIterator it = stacking_order.fromLast(); it != stacking_order.end(); --it) { + if ( (*it)->isVisible() && !(*it)->isOnDesktop( new_desktop ) ) { + (*it)->hide(); + } + } + + for ( ClientList::ConstIterator it = stacking_order.begin(); it != stacking_order.end(); ++it) { + if ( (*it)->isOnDesktop( new_desktop ) ) { + (*it)->show(); + //XMapWindow( qt_xdisplay(), (*it)->winId() ); + } + } + + current_desktop = new_desktop; +} + + +void Workspace::makeFullScreen( Client* ) +{ + // not yet implemented +} + + +// experimental +void Workspace::setDecoration( int deco ) +{ + if ( !popup_client ) + return; + Client* c = popup_client; + WId w = c->window(); + clients.remove( c ); + stacking_order.remove( c ); + focus_chain.remove( c ); + bool mapped = c->isVisible(); + c->hide(); + c->releaseWindow(); + switch ( deco ) { + case 1: + c = new BeClient( this, w); + break; + default: + c = new StdClient( this, w ); + } + clients.append( c ); + stacking_order.append( c ); + c->manage( mapped ); + activateClient( c ); +} + diff --git a/workspace.h b/workspace.h new file mode 100644 index 0000000000..8091d7a8a9 --- /dev/null +++ b/workspace.h @@ -0,0 +1,126 @@ +#ifndef WORKSPACE_H +#define WORKSPACE_H + +#include +#include +#include +#include +#include + +class Client; +class TabBox; + +typedef QValueList ClientList; + +class Workspace : public QObject +{ + Q_OBJECT +public: + Workspace(); + Workspace( WId rootwin ); + virtual ~Workspace(); + + virtual bool workspaceEvent( XEvent * ); + + Client* findClient( WId w ) const; + + QRect geometry() const; + + bool destroyClient( Client* ); + + WId rootWin() const; + + Client* activeClient() const; + void setActiveClient( Client* ); + void activateClient( Client* ); + void requestFocus( Client* c); + + void doPlacement( Client* c ); + void raiseClient( Client* c ); + + void clientHidden( Client* ); + + int currentDesktop() const; + int numberOfDesktops() const; + + void grabKey(KeySym keysym, unsigned int mod); + + Client* nextClient(Client*) const; + Client* previousClient(Client*) const; + Client* nextStaticClient(Client*) const; + Client* previousStaticClient(Client*) const; + + //#### TODO right layers as default + Client* topClientOnDesktop( int fromLayer = 0, int toLayer = 0) const; + + + void showPopup( const QPoint&, Client* ); + + void setDesktopClient( Client* ); + void switchDesktop( int new_desktop ); + + void makeFullScreen( Client* ); + +protected: + bool keyPress( XKeyEvent key ); + bool keyRelease( XKeyEvent key ); + +private: + void init(); + WId root; + ClientList clients; + ClientList stacking_order; + ClientList focus_chain; + Client* active_client; + bool control_grab; + bool tab_grab; + TabBox* tab_box; + void freeKeyboard(bool pass); + QPopupMenu *popup; + Client* should_get_focus; + + void raiseTransientsOf( ClientList& safeset, Client* c ); + void randomPlacement(Client* c); + + void focusToNull(); + Client* desktop_client; + int current_desktop; + + Client* popup_client; + + //experimental + void setDecoration( int deco ); +}; + +inline WId Workspace::rootWin() const +{ + return root; +} + +/*! + Returns the active client, i.e. the client that has the focus (or None if no + client has the focus) + */ +inline Client* Workspace::activeClient() const +{ + return active_client; +} + + +/*! + Returns the current virtual desktop of this workspace + */ +inline int Workspace::currentDesktop() const +{ + return current_desktop; +} + +/*! + Returns the number of virtual desktops of this workspace + */ +inline int Workspace::numberOfDesktops() const +{ + return 4; +} + +#endif