[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    branches/KDE/3.5
From:       Dirk Mueller <mueller () kde ! org>
Date:       2006-09-30 13:33:07
Message-ID: 1159623187.136158.32751.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 590563 by mueller:

make viewport a two-dimensional information


 M  +20 -11    kdebase/kicker/applets/minipager/pagerapplet.cpp  
 M  +1 -1      kdebase/kicker/applets/minipager/pagerapplet.h  
 M  +5 -3      kdebase/kicker/applets/minipager/pagerbutton.cpp  
 M  +3 -1      kdebase/kicker/applets/minipager/pagerbutton.h  
 M  +14 -8     kdelibs/kdecore/kwinmodule.cpp  
 M  +12 -5     kdelibs/kdecore/kwinmodule.h  


--- branches/KDE/3.5/kdebase/kicker/applets/minipager/pagerapplet.cpp #590562:590563
@@ -123,12 +123,14 @@
     desktopLayoutX = -1;
     desktopLayoutY = -1;
 
-    m_useViewports = m_kwin->numberOfViewports(m_kwin->currentDesktop()) > 1;
+    QSize s(m_kwin->numberOfViewports(m_kwin->currentDesktop()));
+    m_useViewports = s.width() + s.height() > 1;
 
     drawButtons();
 
     connect( m_kwin, SIGNAL( currentDesktopChanged(int)), SLOT( slotSetDesktop(int) \
                ) );
-    connect( m_kwin, SIGNAL( currentDesktopViewportChanged(int, int)), \
SLOT(slotSetDesktopViewport(int, int))); +    connect( m_kwin, SIGNAL( \
currentDesktopViewportChanged(int, const QPoint&)), +            \
                SLOT(slotSetDesktopViewport(int, const QPoint&)));
     connect( m_kwin, SIGNAL( numberOfDesktopsChanged(int)), SLOT( \
                slotSetDesktopCount(int) ) );
     connect( m_kwin, SIGNAL( activeWindowChanged(WId)), SLOT( \
                slotActiveWindowChanged(WId) ) );
     connect( m_kwin, SIGNAL( windowAdded(WId) ), this, SLOT( slotWindowAdded(WId) ) \
); @@ -211,16 +213,17 @@
     }
 }
 
-void KMiniPager::slotSetDesktopViewport(int desktop, int viewport)
+void KMiniPager::slotSetDesktopViewport(int desktop, const QPoint& viewport)
 {
     // ###
     Q_UNUSED(desktop);
-    slotSetDesktop(viewport);
+    QSize s(m_kwin->numberOfViewports(m_kwin->currentDesktop()));
+    slotSetDesktop((viewport.y()-1) * s.width() + viewport.x() );
 }
 
 void KMiniPager::slotButtonSelected( int desk )
 {
-    if (m_kwin->numberOfViewports(0) > 1)
+    if (m_kwin->numberOfViewports(0).width()+m_kwin->numberOfViewports(0).height() > \
1)  {
         QPoint p;
 
@@ -242,7 +245,8 @@
         return width();
     }
 
-    int deskNum = m_kwin->numberOfDesktops() * m_kwin->numberOfViewports(0);
+    int deskNum = m_kwin->numberOfDesktops() * m_kwin->numberOfViewports(0).width()
+        * m_kwin->numberOfViewports(0).height();
 
     int rowNum = m_settings->numberOfRows();
     if (rowNum == 0)
@@ -297,7 +301,8 @@
         return height();
     }
 
-    int deskNum = m_kwin->numberOfDesktops() * m_kwin->numberOfViewports(0);
+    int deskNum = m_kwin->numberOfDesktops() * m_kwin->numberOfViewports(0).width()
+        * m_kwin->numberOfViewports(0).height();
     int rowNum = m_settings->numberOfRows(); // actually these are columns now... oh \
well.  if (rowNum == 0)
     {
@@ -429,7 +434,9 @@
 void KMiniPager::wheelEvent( QWheelEvent* e )
 {
     int newDesk;
-    int desktops = m_useViewports ? m_kwin->numberOfViewports(0) : \
KWin::numberOfDesktops(); +    int desktops = KWin::numberOfDesktops();
+    if (m_kwin->numberOfViewports(0).width() + m_kwin->numberOfViewports(0).height() \
> 1 ) +        desktops = m_kwin->numberOfViewports(0).width() * \
> m_kwin->numberOfViewports(0).height();
     if (e->delta() < 0)
     {
         newDesk = m_curDesk % desktops + 1;
@@ -450,10 +457,12 @@
     int count = 1;
     for ( int i = 1; i <= deskNum; ++i )
     {
-        int viewportNum = m_kwin->numberOfViewports(i);
-        for (int j = 1; j <= viewportNum; ++j)
+        QSize viewportNum = m_kwin->numberOfViewports(i);
+        for (int j = 1; j <= viewportNum.width() * viewportNum.height(); ++j)
         {
-            desk = new KMiniPagerButton( count, m_useViewports, this );
+            QSize s(m_kwin->numberOfViewports(m_kwin->currentDesktop()));
+            QPoint viewport( (j-1) % s.width(), (j-1) / s.width());
+            desk = new KMiniPagerButton( count, m_useViewports, viewport, this );
             if ( m_settings->labelType() != PagerSettings::EnumLabelType::LabelName \
)  {
                 QToolTip::add( desk, desk->desktopName() );
--- branches/KDE/3.5/kdebase/kicker/applets/minipager/pagerapplet.h #590562:590563
@@ -84,7 +84,7 @@
 
 public slots:
     void slotSetDesktop(int desktop);
-    void slotSetDesktopViewport(int desktop, int viewport);
+    void slotSetDesktopViewport(int desktop, const QPoint& viewport);
     void slotSetDesktopCount(int count);
     void slotButtonSelected(int desk );
     void slotActiveWindowChanged( WId win );
--- branches/KDE/3.5/kdebase/kicker/applets/minipager/pagerbutton.cpp #590562:590563
@@ -58,11 +58,13 @@
 KSharedPixmap* KMiniPagerButton::s_commonSharedPixmap;
 KPixmap* KMiniPagerButton::s_commonBgPixmap;
 
-KMiniPagerButton::KMiniPagerButton(int desk, bool useViewPorts, KMiniPager *parent, \
const char *name) +KMiniPagerButton::KMiniPagerButton(int desk, bool useViewPorts, \
const QPoint& viewport, +        KMiniPager *parent, const char *name)
     : QButton(parent, name, WRepaintNoErase),
       m_pager(parent),
       m_desktop(desk),
       m_useViewports(useViewPorts),
+      m_viewport(viewport),
       m_lineEdit(0),
       m_sharedPixmap(0),
       m_bgPixmap(0),
@@ -116,8 +118,8 @@
     if (m_useViewports) {
         QPoint windowSpot = info->frameGeometry().topLeft();
 
-        windowSpot += QPoint((m_desktop - m_pager->kwin()->currentViewport(1)) *
-                QApplication::desktop()->screenGeometry().width(), 0);
+        windowSpot += QPoint((m_desktop - m_pager->kwin()->currentViewport(0).x()) *
+                QApplication::desktop()->width(), 0);
 
         if (!QApplication::desktop()->screenGeometry().contains(windowSpot))
             return false;
--- branches/KDE/3.5/kdebase/kicker/applets/minipager/pagerbutton.h #590562:590563
@@ -39,7 +39,8 @@
 {
     Q_OBJECT
 public:
-    KMiniPagerButton(int desk, bool useViewports, KMiniPager *parent=0, const char \
*name=0); +    KMiniPagerButton(int desk, bool useViewports, const QPoint& viewport,
+            KMiniPager *parent=0, const char *name=0);
     ~KMiniPagerButton();
 
     int desktop() { return m_desktop; }
@@ -86,6 +87,7 @@
     int m_desktop;
     bool m_useViewports;
     QString m_desktopName;
+    QPoint m_viewport;
 
     QTimer m_updateCompressor;
     QTimer m_dragSwitchTimer;
--- branches/KDE/3.5/kdelibs/kdecore/kwinmodule.cpp #590562:590563
@@ -109,8 +109,8 @@
     void updateStackingOrder();
     bool removeStrutWindow( WId );
 
-    int numberOfViewports(int desktop) const;
-    int currentViewport(int desktop) const;
+    QSize numberOfViewports(int desktop) const;
+    QPoint currentViewport(int desktop) const;
 };
 
 KWinModule::KWinModule( QObject* parent )
@@ -180,18 +180,20 @@
     return d->systemTrayWindows;
 }
 
-int KWinModulePrivate::numberOfViewports(int desktop) const
+QSize KWinModulePrivate::numberOfViewports(int desktop) const
 {
     NETSize netdesktop = desktopGeometry(desktop);
 
-    return netdesktop.width / QApplication::desktop()->screenGeometry().width();
+    return QSize(netdesktop.width / QApplication::desktop()->width(),
+            netdesktop.height / QApplication::desktop()->height());
 }
 
-int KWinModulePrivate::currentViewport(int desktop) const
+QPoint KWinModulePrivate::currentViewport(int desktop) const
 {
     NETPoint netviewport = desktopViewport(desktop);
 
-    return 1+(netviewport.x / QApplication::desktop()->screenGeometry().width());
+    return QPoint(1+(netviewport.x / QApplication::desktop()->width()),
+            1+(netviewport.y / QApplication::desktop()->height()));
 }
 
 bool KWinModulePrivate::x11Event( XEvent * ev )
@@ -215,6 +217,10 @@
 		emit (*mit)->currentDesktopViewportChanged(currentDesktop(),
                         currentViewport(currentDesktop()));
         }
+	if ( m[ PROTOCOLS ] & DesktopGeometry ) {
+	    for ( QPtrListIterator<KWinModule> mit( modules ); mit.current(); ++mit )
+		emit (*mit)->desktopGeometryChanged(currentDesktop());
+	}
 	if ( m[ PROTOCOLS ] & DesktopNames )
 	    for ( QPtrListIterator<KWinModule> mit( modules ); mit.current(); ++mit )
 		emit (*mit)->desktopNamesChanged();
@@ -348,12 +354,12 @@
     return d->numberOfDesktops();
 }
 
-int KWinModule::numberOfViewports(int desktop) const
+QSize KWinModule::numberOfViewports(int desktop) const
 {
     return d->numberOfViewports(desktop);
 }
 
-int KWinModule::currentViewport(int desktop) const
+QPoint KWinModule::currentViewport(int desktop) const
 {
     return d->currentViewport(desktop);
 }
--- branches/KDE/3.5/kdelibs/kdecore/kwinmodule.h #590562:590563
@@ -152,18 +152,19 @@
     int numberOfDesktops() const;
 
     /**
-     * Returns the number of viewports on the virtual desktop
+     * Returns the number of viewports in x and y direction
+     * on the virtual desktop.
      * @return the number of virtual desktops
      * @since 3.5.5
      **/
-    int numberOfViewports(int desktop) const;
+    QSize numberOfViewports(int desktop) const;
 
     /**
-     * Returns the number of viewports on the virtual desktop
+     * Returns the current viewport on the given virtual desktop
      * @return the number of virtual desktops
      * @since 3.5.5
      **/
-    int currentViewport(int desktop) const;
+    QPoint currentViewport(int desktop) const;
 
     /**
      * Returns the currently active window, or 0 if no window is active.
@@ -330,10 +331,16 @@
     void showingDesktopChanged( bool showing );
 
     /**
+     * The state of showing the desktop has changed.
+     * @since 3.5.5
+     */
+    void desktopGeometryChanged(int desktop);
+
+    /**
      * The viewport position has changed
      * @since 3.5
      */
-    void currentDesktopViewportChanged(int desktop, int viewport);
+    void currentDesktopViewportChanged(int desktop, const QPoint& viewport);
 
 protected:
     virtual void connectNotify( const char* signal );


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic