Make windows snap to each other

This commit is contained in:
Thomas Frauendorfer 2008-02-29 12:30:47 +01:00
parent ab988d8496
commit 94ca829e98
12 changed files with 29 additions and 94 deletions

View file

@ -119,21 +119,6 @@ MainDisplay::setVolume (int volume)
xmmsh.volumeSet((uint)volume);
}
void
MainDisplay::mouseMoveEvent (QMouseEvent *event)
{
MainWindow *mw = dynamic_cast<MainWindow *>(window ());
PlaylistWindow *pl = mw->getPL ();
m_mw->move (event->globalPos().x() - m_diffX,
event->globalPos().y() - m_diffY);
if (!pl || !pl->isVisible ())
return;
pl->move (event->globalPos().x() - m_diffX,
event->globalPos().y() - m_diffY + size().height());
}
void
MainDisplay::setPixmaps (Skin *skin)

View file

@ -66,8 +66,6 @@ class MainDisplay : public SkinDisplay
PlayStatus *m_playstatus;
MainWindow *getMW(void) { return m_mw; }
void mouseMoveEvent (QMouseEvent *);
public slots:
void setPixmaps(Skin *skin);
void setStatus (Xmms::Playback::Status status);

View file

@ -33,7 +33,7 @@
#include <QPluginLoader>
#include <qplugin.h>
MainWindow::MainWindow (QWidget *parent) : QMainWindow (parent)
MainWindow::MainWindow (QWidget *parent) : BaseWindow (parent)
{
QSettings s;
@ -130,5 +130,15 @@ MainWindow::moveEvent (QMoveEvent *event)
{
QSettings s;
s.setValue ("mainwindow/pos", pos ());
}
// move all connected windows to their new position
// at the moment connected windows can be m_playlistwin and m_equalizer
if (!m_connectedWidgets.isEmpty ()) {
QMap<QWidget *,QPoint>::const_iterator i
= m_connectedWidgets.constBegin ();
while (i != m_connectedWidgets.constEnd ()) {
i.key()->move (pos () + i.value ());
++i;
}
}
}

View file

@ -16,9 +16,9 @@
#ifndef __MAINWINDOW_H__
#define __MAINWINDOW_H__
#include <QMainWindow>
#include <QSettings>
#include "basewindow.h"
#include <QSettings>
class QWidget;
class MainDisplay;
@ -26,7 +26,7 @@ class ShadedDisplay;
class PlaylistWindow;
class EqualizerWindow;
class MainWindow : public QMainWindow
class MainWindow : public BaseWindow
{
Q_OBJECT
public:
@ -55,6 +55,8 @@ class MainWindow : public QMainWindow
ShadedDisplay *m_shaded;
EqualizerWindow *m_equalizer;
PlaylistWindow *m_playlistwin;
QMap<QWidget *,QPoint> m_connectedWidgets;
};