aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Ui/skinned/playlist.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/Ui/skinned/playlist.cpp')
-rw-r--r--src/plugins/Ui/skinned/playlist.cpp113
1 files changed, 80 insertions, 33 deletions
diff --git a/src/plugins/Ui/skinned/playlist.cpp b/src/plugins/Ui/skinned/playlist.cpp
index c113d3472..801d0da8d 100644
--- a/src/plugins/Ui/skinned/playlist.cpp
+++ b/src/plugins/Ui/skinned/playlist.cpp
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2006-2015 by Ilya Kotov *
+ * Copyright (C) 2006-2016 by Ilya Kotov *
* forkotov02@hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -63,9 +63,28 @@ PlayList::PlayList (PlayListManager *manager, QWidget *parent)
m_pl_browser = 0;
m_pl_selector = 0;
- resize (275*m_ratio, 116*m_ratio);
- setSizeIncrement (25*m_ratio, 29*m_ratio);
- setMinimumSize(275*m_ratio, 116*m_ratio);
+#ifdef Q_WS_X11
+ QString wm_name = WindowSystem::netWindowManagerName();
+ m_compiz = wm_name.contains("compiz", Qt::CaseInsensitive);
+ if(wm_name.contains("metacity", Qt::CaseInsensitive) ||
+ wm_name.contains("openbox", Qt::CaseInsensitive))
+ setWindowFlags (Qt::Tool | Qt::FramelessWindowHint);
+ else
+#endif
+ setWindowFlags (Qt::Dialog | Qt::FramelessWindowHint);
+
+#ifdef Q_WS_X11
+ if(m_compiz)
+ {
+ setFixedSize(275*m_ratio, 116*m_ratio);
+ }
+ else
+#endif
+ {
+ resize (275*m_ratio, 116*m_ratio);
+ setSizeIncrement (25*m_ratio, 29*m_ratio);
+ setMinimumSize(275*m_ratio, 116*m_ratio);
+ }
m_listWidget = new ListWidget (this);
m_plslider = new PlayListSlider (this);
@@ -121,14 +140,6 @@ PlayList::PlayList (PlayListManager *manager, QWidget *parent)
setCursor(m_skin->getCursor(Skin::CUR_PNORMAL));
updatePositions();
-#ifdef Q_WS_X11
- QString wm_name = WindowSystem::netWindowManagerName();
- if(wm_name.contains("metacity", Qt::CaseInsensitive) ||
- wm_name.contains("openbox", Qt::CaseInsensitive))
- setWindowFlags (Qt::Tool | Qt::FramelessWindowHint);
- else
-#endif
- setWindowFlags (Qt::Dialog | Qt::FramelessWindowHint);
}
PlayList::~PlayList()
@@ -410,26 +421,37 @@ void PlayList::mouseMoveEvent (QMouseEvent *e)
{
if (m_resize)
{
+#ifdef Q_WS_X11
+ if(m_compiz)
+#endif
+ {
+ int dx = m_ratio * 25;
+ int dy = m_ratio * 29;
+
+ int sx = ((e->x() - 275 * m_ratio) + 14) / dx;
+ int sy = ((e->y() - 116 * m_ratio) + 14) / dy;
+
+ sx = qMax(sx, 0);
+ sy = qMax(sy, 0);
+
#ifdef Q_OS_WIN
- int sx = (width()-275) /25;
- int sy = (height()-116) /29;
- if(width() < e->x() - 14)
- sx++;
- else if(width() > e->x() + 14)
- sx--;
- if(height() < e->y() - 14)
- sy++;
- else if(height() > e->y() + 14)
- sy--;
- resize (275+25*sx,116+29*sy);
+ resize(275 * m_ratio + dx * sx, 116 * m_ratio + dy * sy);
#else
+ setFixedSize(275 * m_ratio + dx * sx, 116 * m_ratio + dy * sy);
+#endif
+ }
+#ifdef Q_WS_X11
+ else
+ resize (e->x() +25, e->y() +25);
+#endif
+
+
#ifdef Q_WS_X11
//avoid right corner moving during resize
if(layoutDirection() == Qt::RightToLeft)
WindowSystem::revertGravity(winId());
#endif
- resize (e->x() +25, e->y() +25);
-#endif
+
}
}
@@ -504,6 +526,13 @@ void PlayList::writeSettings()
settings.setValue ("Skinned/pl_pos", this->pos());
}
+#ifdef Q_WS_X11
+bool PlayList::useCompiz() const
+{
+ return m_compiz;
+}
+#endif
+
void PlayList::showAddMenu()
{
m_addMenu->exec (m_buttonAdd->mapToGlobal (QPoint (0,0)));
@@ -654,18 +683,36 @@ void PlayList::setMinimalMode(bool b)
if(!m_shaded)
m_height = height();
m_shaded = b;
- if(m_shaded)
+
+#ifdef Q_WS_X11
+ if(m_compiz)
{
- m_height = height();
- setSizeIncrement (25*m_ratio, 1);
- setMinimumSize (275*m_ratio, 14*m_ratio);
- resize(width(), 14*m_ratio);
+ if(m_shaded)
+ {
+ m_height = height();
+ setFixedSize(qMax(width(), 275 * m_ratio), 14*m_ratio);
+ }
+ else
+ {
+ setFixedSize(qMax(width(), 275 * m_ratio), qMax(m_height, 116*m_ratio));
+ }
}
else
+#endif
{
- setMinimumSize(275*m_ratio, 116*m_ratio);
- resize (width(), m_height);
- setSizeIncrement (25*m_ratio, 29*m_ratio);
+ if(m_shaded)
+ {
+ m_height = height();
+ setSizeIncrement (25*m_ratio, 1);
+ setMinimumSize (275*m_ratio, 14*m_ratio);
+ resize(width(), 14*m_ratio);
+ }
+ else
+ {
+ setMinimumSize(275*m_ratio, 116*m_ratio);
+ resize (width(), m_height);
+ setSizeIncrement (25*m_ratio, 29*m_ratio);
+ }
}
updatePositions();
update();