Remove animations from Translucency effect

The effect should have had two animations:
* on move resize
* on active/inactive change

But the timeline was adjusted in the prePaintWindow call and the timeline
is effect global and not per window. Which means that for each window the
same time is added. So instead of adding time t each frame t*n with n
being the number of windows got added. So in most cases the animation
ended in the first or second frame which means its not visible.

Through git blame I was able to track down that this incorrect behavior
was introduced in 2008. An animation broken for more than four years
without anybody noticing is probably not required. Because of that it's
dropped from the effect. As this includes quite some code and performance
improvements it goes into the release branch.

A better solution could be implemented, but that should be for 4.10.

BUG: 306263
FIXED-IN: 4.9.2
REVIEW: 106335
This commit is contained in:
Martin Gräßlin 2012-09-05 21:35:36 +02:00
parent bf0c69100a
commit 2cf35aa21a
4 changed files with 284 additions and 386 deletions

View file

@ -28,10 +28,7 @@ namespace KWin
KWIN_EFFECT(translucency, TranslucencyEffect)
TranslucencyEffect::TranslucencyEffect()
: fadeout(NULL)
, current(NULL)
, previous(NULL)
, m_activeDecorations(false)
: m_activeDecorations(false)
, m_activeMoveResize(false)
, m_activeDialogs(false)
, m_activeInactive(false)
@ -67,10 +64,6 @@ void TranslucencyEffect::reconfigure(ReconfigureFlags)
popupmenus = menus;
tornoffmenus = menus;
}
moveresize_timeline.setCurveShape(QTimeLine::EaseInOutCurve);
moveresize_timeline.setDuration(animationTime(conf, "Duration", 800));
activeinactive_timeline.setCurveShape(QTimeLine::EaseInOutCurve);
activeinactive_timeline.setDuration(animationTime(conf, "Duration", 800));
m_activeDecorations = !qFuzzyCompare(decoration, 1.0);
m_activeMoveResize = !qFuzzyCompare(moveresize, 1.0);
@ -156,24 +149,14 @@ void TranslucencyEffect::checkIsActive()
void TranslucencyEffect::prePaintWindow(EffectWindow* w, WindowPrePaintData& data, int time)
{
// We keep track of the windows that was last active so we know
// which one to fade out and which ones to paint as fully inactive
if (w == active && w != current) {
previous = current;
current = w;
}
moveresize_timeline.setCurrentTime(moveresize_timeline.currentTime() + time);
activeinactive_timeline.setCurrentTime(activeinactive_timeline.currentTime() + time);
if (m_activeDecorations && w->hasDecoration()) {
data.mask |= PAINT_WINDOW_TRANSLUCENT;
// don't clear PAINT_WINDOW_OPAQUE, contents are not affected
data.clip &= w->contentsRect().translated(w->pos()); // decoration cannot clip
}
if (m_activeInactive && (isInactive(w) || activeinactive_timeline.currentValue() < 1.0))
if (m_activeInactive && isInactive(w))
data.setTranslucent();
else if (m_activeMoveResize && (w->isUserMove() || w->isUserResize() || w == fadeout)) {
else if (m_activeMoveResize && (w->isUserMove() || w->isUserResize())) {
data.setTranslucent();
}
else if (m_activeDialogs && w->isDialog()) {
@ -198,20 +181,10 @@ void TranslucencyEffect::paintWindow(EffectWindow* w, int mask, QRegion region,
// Handling active and inactive windows
if (m_activeInactive && isInactive(w)) {
data.opacity *= inactive;
if (w == previous) {
data.opacity *= (inactive + ((1.0 - inactive) * (1.0 - activeinactive_timeline.currentValue())));
if (activeinactive_timeline.currentValue() < 1.0)
w->addRepaintFull();
else
previous = NULL;
}
} else {
// Fading in
if (!isInactive(w)) {
data.opacity *= (inactive + ((1.0 - inactive) * activeinactive_timeline.currentValue()));
if (activeinactive_timeline.currentValue() < 1.0)
w->addRepaintFull();
data.opacity *= inactive;
}
// decoration and dialogs
if (m_activeDecorations && w->hasDecoration())
@ -220,23 +193,8 @@ void TranslucencyEffect::paintWindow(EffectWindow* w, int mask, QRegion region,
data.opacity *= dialogs;
// Handling moving and resizing
if (m_activeMoveResize) {
double progress = moveresize_timeline.currentValue();
if (w->isUserMove() || w->isUserResize()) {
// Fading to translucent
data.opacity *= (moveresize + ((1.0 - moveresize) * (1.0 - progress)));
if (progress < 1.0 && progress > 0.0) {
w->addRepaintFull();
fadeout = w;
}
} else if (w == fadeout && !w->isUserMove() && !w->isUserResize()) {
// Fading back to more opaque
data.opacity *= (moveresize + ((1.0 - moveresize) * (progress)));
if (progress == 1.0 || progress == 0.0)
fadeout = NULL;
else
w->addRepaintFull();
}
if (m_activeMoveResize && (w->isUserMove() || w->isUserResize())) {
data.opacity *= moveresize;
}
// Menus and combos
@ -271,7 +229,6 @@ void TranslucencyEffect::slotWindowStartStopUserMovedResized(EffectWindow* w)
{
if (m_activeMoveResize) {
checkIsActive();
moveresize_timeline.setCurrentTime(0);
w->addRepaintFull();
}
}
@ -279,7 +236,6 @@ void TranslucencyEffect::slotWindowStartStopUserMovedResized(EffectWindow* w)
void TranslucencyEffect::slotWindowActivated(EffectWindow* w)
{
if (m_activeInactive) {
activeinactive_timeline.setCurrentTime(0);
if (NULL != active && active != w) {
if ((NULL == w || w->group() != active->group()) &&
NULL != active->group()) {

View file

@ -41,8 +41,6 @@ class TranslucencyEffect
Q_PROPERTY(qreal dropDownMenus READ configuredDropDownMenus)
Q_PROPERTY(qreal popupMenus READ configuredPopupMenus)
Q_PROPERTY(qreal tornOffMenus READ configuredTornOffMenus)
Q_PROPERTY(int moveResizeDuration READ configuredMoveResizeDuration)
Q_PROPERTY(int activeInactiveDuration READ configuredActiveInactiveDuration)
public:
TranslucencyEffect();
virtual void reconfigure(ReconfigureFlags);
@ -81,12 +79,6 @@ public:
qreal configuredTornOffMenus() const {
return tornoffmenus;
}
int configuredMoveResizeDuration() const {
return moveresize_timeline.duration();
}
int configuredActiveInactiveDuration() const {
return activeinactive_timeline.duration();
}
public Q_SLOTS:
void slotWindowActivated(KWin::EffectWindow* w);
void slotWindowStartStopUserMovedResized(KWin::EffectWindow *w);
@ -108,14 +100,8 @@ private:
double popupmenus;
double tornoffmenus;
EffectWindow* fadeout;
EffectWindow* current;
EffectWindow* previous;
EffectWindow* active;
QTimeLine moveresize_timeline;
QTimeLine activeinactive_timeline;
bool m_activeDecorations;
bool m_activeMoveResize;
bool m_activeDialogs;

View file

@ -56,7 +56,6 @@ TranslucencyEffectConfig::TranslucencyEffectConfig(QWidget* parent, const QVaria
connect(m_ui->dropdownmenus, SIGNAL(valueChanged(int)), this, SLOT(changed()));
connect(m_ui->popupmenus, SIGNAL(valueChanged(int)), this, SLOT(changed()));
connect(m_ui->tornoffmenus, SIGNAL(valueChanged(int)), this, SLOT(changed()));
connect(m_ui->duration, SIGNAL(valueChanged(int)), this, SLOT(changed()));
load();
}
@ -76,8 +75,6 @@ void TranslucencyEffectConfig::load()
m_ui->dropdownmenus->setValue((int)(conf.readEntry("DropdownMenus", 1.0) * 100));
m_ui->popupmenus->setValue((int)(conf.readEntry("PopupMenus", 1.0) * 100));
m_ui->tornoffmenus->setValue((int)(conf.readEntry("TornOffMenus", 1.0) * 100));
m_ui->duration->setValue(conf.readEntry("Duration", 0));
m_ui->duration->setSuffix(ki18np(" millisecond", " milliseconds"));
emit changed(false);
}
@ -97,7 +94,6 @@ void TranslucencyEffectConfig::save()
conf.writeEntry("DropdownMenus", m_ui->dropdownmenus->value() / 100.0);
conf.writeEntry("PopupMenus", m_ui->popupmenus->value() / 100.0);
conf.writeEntry("TornOffMenus", m_ui->tornoffmenus->value() / 100.0);
conf.writeEntry("Duration", m_ui->duration->value());
conf.sync();
emit changed(false);
@ -116,7 +112,6 @@ void TranslucencyEffectConfig::defaults()
m_ui->dropdownmenus->setValue(100);
m_ui->popupmenus->setValue(100);
m_ui->tornoffmenus->setValue(100);
m_ui->duration->setValue(0);
emit changed(true);
}

View file

@ -1,296 +1,202 @@
<ui version="4.0" >
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>KWin::TranslucencyEffectConfigForm</class>
<widget class="QWidget" name="KWin::TranslucencyEffectConfigForm" >
<property name="geometry" >
<widget class="QWidget" name="KWin::TranslucencyEffectConfigForm">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>616</width>
<height>295</height>
<width>643</width>
<height>269</height>
</rect>
</property>
<property name="windowTitle" >
<property name="windowTitle">
<string>Translucency</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout" >
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QGroupBox" name="m_opacityGroupBox" >
<property name="title" >
<widget class="QGroupBox" name="m_opacityGroupBox">
<property name="title">
<string>General Translucency Settings</string>
</property>
<layout class="QGridLayout" name="gridLayout" >
<item row="1" column="0" >
<widget class="QLabel" name="decorations_label" >
<property name="sizePolicy" >
<sizepolicy vsizetype="Preferred" hsizetype="MinimumExpanding" >
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text" >
<string>Decorations:</string>
</property>
<property name="alignment" >
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="buddy" >
<cstring>decorations</cstring>
</property>
</widget>
</item>
<item row="1" column="1" colspan="2" >
<widget class="QSlider" name="decorations" >
<property name="minimumSize" >
<size>
<width>170</width>
<height>0</height>
</size>
</property>
<property name="minimum" >
<layout class="QGridLayout" name="gridLayout">
<item row="4" column="1" colspan="2">
<widget class="QSlider" name="dialogs">
<property name="minimum">
<number>10</number>
</property>
<property name="maximum" >
<property name="maximum">
<number>100</number>
</property>
<property name="orientation" >
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="tickPosition" >
<property name="tickPosition">
<enum>QSlider::TicksBelow</enum>
</property>
<property name="tickInterval" >
<property name="tickInterval">
<number>10</number>
</property>
</widget>
</item>
<item row="2" column="0" >
<widget class="QLabel" name="inactive_label" >
<property name="sizePolicy" >
<sizepolicy vsizetype="Preferred" hsizetype="MinimumExpanding" >
<item row="4" column="0">
<widget class="QLabel" name="dialogs_label">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text" >
<string>Inactive windows:</string>
</property>
<property name="alignment" >
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="buddy" >
<cstring>inactive</cstring>
</property>
</widget>
</item>
<item row="2" column="1" colspan="2" >
<widget class="QSlider" name="inactive" >
<property name="minimum" >
<number>10</number>
</property>
<property name="maximum" >
<number>100</number>
</property>
<property name="orientation" >
<enum>Qt::Horizontal</enum>
</property>
<property name="tickPosition" >
<enum>QSlider::TicksBelow</enum>
</property>
<property name="tickInterval" >
<number>10</number>
</property>
</widget>
</item>
<item row="3" column="0" >
<widget class="QLabel" name="moveresize_label" >
<property name="sizePolicy" >
<sizepolicy vsizetype="Preferred" hsizetype="MinimumExpanding" >
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text" >
<string>Moving windows:</string>
</property>
<property name="alignment" >
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="buddy" >
<cstring>moveresize</cstring>
</property>
</widget>
</item>
<item row="3" column="1" colspan="2" >
<widget class="QSlider" name="moveresize" >
<property name="minimum" >
<number>10</number>
</property>
<property name="maximum" >
<number>100</number>
</property>
<property name="orientation" >
<enum>Qt::Horizontal</enum>
</property>
<property name="tickPosition" >
<enum>QSlider::TicksBelow</enum>
</property>
<property name="tickInterval" >
<number>10</number>
</property>
</widget>
</item>
<item row="4" column="0" >
<widget class="QLabel" name="dialogs_label" >
<property name="sizePolicy" >
<sizepolicy vsizetype="Preferred" hsizetype="MinimumExpanding" >
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text" >
<property name="text">
<string>Dialogs:</string>
</property>
<property name="alignment" >
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="buddy" >
<property name="buddy">
<cstring>dialogs</cstring>
</property>
</widget>
</item>
<item row="4" column="1" colspan="2" >
<widget class="QSlider" name="dialogs" >
<property name="minimum" >
<number>10</number>
</property>
<property name="maximum" >
<number>100</number>
</property>
<property name="orientation" >
<enum>Qt::Horizontal</enum>
</property>
<property name="tickPosition" >
<enum>QSlider::TicksBelow</enum>
</property>
<property name="tickInterval" >
<number>10</number>
</property>
</widget>
</item>
<item row="5" column="0" >
<widget class="QLabel" name="comboboxpopup_label" >
<property name="sizePolicy" >
<sizepolicy vsizetype="Preferred" hsizetype="MinimumExpanding" >
<item row="1" column="0">
<widget class="QLabel" name="decorations_label">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text" >
<string>Combobox popups:</string>
<property name="text">
<string>Decorations:</string>
</property>
<property name="alignment" >
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="buddy" >
<property name="buddy">
<cstring>decorations</cstring>
</property>
</widget>
</item>
<item row="5" column="1" colspan="2">
<widget class="QSlider" name="comboboxpopup">
<property name="minimum">
<number>10</number>
</property>
<property name="maximum">
<number>100</number>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="tickPosition">
<enum>QSlider::TicksBelow</enum>
</property>
<property name="tickInterval">
<number>10</number>
</property>
</widget>
</item>
<item row="6" column="1" colspan="2">
<widget class="QSlider" name="menus">
<property name="minimum">
<number>10</number>
</property>
<property name="maximum">
<number>100</number>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="tickPosition">
<enum>QSlider::TicksBelow</enum>
</property>
<property name="tickInterval">
<number>10</number>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="inactive_label">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Inactive windows:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="buddy">
<cstring>inactive</cstring>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="moveresize_label">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Moving windows:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="buddy">
<cstring>moveresize</cstring>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="comboboxpopup_label">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Combobox popups:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="buddy">
<cstring>comboboxpopup</cstring>
</property>
</widget>
</item>
<item row="5" column="1" colspan="2" >
<widget class="QSlider" name="comboboxpopup" >
<property name="minimum" >
<item row="3" column="1" colspan="2">
<widget class="QSlider" name="moveresize">
<property name="minimum">
<number>10</number>
</property>
<property name="maximum" >
<property name="maximum">
<number>100</number>
</property>
<property name="orientation" >
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="tickPosition" >
<property name="tickPosition">
<enum>QSlider::TicksBelow</enum>
</property>
<property name="tickInterval" >
<property name="tickInterval">
<number>10</number>
</property>
</widget>
</item>
<item row="6" column="0" >
<widget class="QLabel" name="menus_label" >
<property name="sizePolicy" >
<sizepolicy vsizetype="Preferred" hsizetype="MinimumExpanding" >
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text" >
<string>Menus:</string>
</property>
<property name="alignment" >
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="buddy" >
<cstring>menus</cstring>
</property>
</widget>
</item>
<item row="6" column="1" colspan="2" >
<widget class="QSlider" name="menus" >
<property name="minimum" >
<number>10</number>
</property>
<property name="maximum" >
<number>100</number>
</property>
<property name="orientation" >
<enum>Qt::Horizontal</enum>
</property>
<property name="tickPosition" >
<enum>QSlider::TicksBelow</enum>
</property>
<property name="tickInterval" >
<number>10</number>
</property>
</widget>
</item>
<item row="7" column="0" >
<widget class="QLabel" name="label" >
<property name="text" >
<string>Fading duration:</string>
</property>
<property name="alignment" >
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="buddy" >
<cstring>duration</cstring>
</property>
</widget>
</item>
<item row="7" column="1" colspan="2" >
<widget class="KIntSpinBox" name="duration" >
<property name="minimumSize" >
<size>
<width>60</width>
<height>0</height>
</size>
</property>
<property name="specialValueText" >
<string comment="Duration of fading">Default</string>
</property>
<property name="maximum" >
<number>5000</number>
</property>
<property name="singleStep" >
<number>100</number>
</property>
</widget>
</item>
<item row="8" column="0" colspan="2" >
<spacer name="verticalSpacer_2" >
<property name="orientation" >
<item row="7" column="0" colspan="2">
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0" >
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>0</height>
@ -298,176 +204,239 @@
</property>
</spacer>
</item>
<item row="0" column="1" >
<widget class="QLabel" name="label_2" >
<property name="sizePolicy" >
<sizepolicy vsizetype="Preferred" hsizetype="Preferred" >
<item row="1" column="1" colspan="2">
<widget class="QSlider" name="decorations">
<property name="minimumSize">
<size>
<width>170</width>
<height>0</height>
</size>
</property>
<property name="minimum">
<number>10</number>
</property>
<property name="maximum">
<number>100</number>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="tickPosition">
<enum>QSlider::TicksBelow</enum>
</property>
<property name="tickInterval">
<number>10</number>
</property>
</widget>
</item>
<item row="2" column="1" colspan="2">
<widget class="QSlider" name="inactive">
<property name="minimum">
<number>10</number>
</property>
<property name="maximum">
<number>100</number>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="tickPosition">
<enum>QSlider::TicksBelow</enum>
</property>
<property name="tickInterval">
<number>10</number>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLabel" name="label_2">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text" >
<property name="text">
<string>Transparent</string>
</property>
</widget>
</item>
<item row="0" column="2" >
<widget class="QLabel" name="label_3" >
<property name="sizePolicy" >
<sizepolicy vsizetype="Preferred" hsizetype="Fixed" >
<item row="0" column="2">
<widget class="QLabel" name="label_3">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text" >
<property name="text">
<string>Opaque</string>
</property>
<property name="alignment" >
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QLabel" name="menus_label">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Menus:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="buddy">
<cstring>menus</cstring>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="individualmenuconfig" >
<property name="title" >
<widget class="QGroupBox" name="individualmenuconfig">
<property name="title">
<string>Set menu translucency independently</string>
</property>
<property name="checkable" >
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked" >
<property name="checked">
<bool>false</bool>
</property>
<layout class="QGridLayout" name="gridLayout_2" >
<item row="1" column="0" >
<widget class="QLabel" name="dropdownmenus_label" >
<property name="sizePolicy" >
<sizepolicy vsizetype="Preferred" hsizetype="MinimumExpanding" >
<layout class="QGridLayout" name="gridLayout_2">
<item row="1" column="0">
<widget class="QLabel" name="dropdownmenus_label">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text" >
<property name="text">
<string>Dropdown menus:</string>
</property>
<property name="alignment" >
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="buddy" >
<property name="buddy">
<cstring>dropdownmenus</cstring>
</property>
</widget>
</item>
<item row="1" column="1" colspan="2" >
<widget class="QSlider" name="dropdownmenus" >
<property name="minimumSize" >
<item row="1" column="1" colspan="2">
<widget class="QSlider" name="dropdownmenus">
<property name="minimumSize">
<size>
<width>170</width>
<height>0</height>
</size>
</property>
<property name="minimum" >
<property name="minimum">
<number>10</number>
</property>
<property name="maximum" >
<property name="maximum">
<number>100</number>
</property>
<property name="orientation" >
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="tickPosition" >
<property name="tickPosition">
<enum>QSlider::TicksBelow</enum>
</property>
<property name="tickInterval" >
<property name="tickInterval">
<number>10</number>
</property>
</widget>
</item>
<item row="2" column="0" >
<widget class="QLabel" name="popupmenus_label" >
<property name="sizePolicy" >
<sizepolicy vsizetype="Preferred" hsizetype="MinimumExpanding" >
<item row="2" column="0">
<widget class="QLabel" name="popupmenus_label">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text" >
<property name="text">
<string>Popup menus:</string>
</property>
<property name="alignment" >
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="buddy" >
<property name="buddy">
<cstring>popupmenus</cstring>
</property>
</widget>
</item>
<item row="2" column="1" colspan="2" >
<widget class="QSlider" name="popupmenus" >
<property name="minimum" >
<item row="2" column="1" colspan="2">
<widget class="QSlider" name="popupmenus">
<property name="minimum">
<number>10</number>
</property>
<property name="maximum" >
<property name="maximum">
<number>100</number>
</property>
<property name="orientation" >
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="tickPosition" >
<property name="tickPosition">
<enum>QSlider::TicksBelow</enum>
</property>
<property name="tickInterval" >
<property name="tickInterval">
<number>10</number>
</property>
</widget>
</item>
<item row="3" column="0" >
<widget class="QLabel" name="tornoffmenus_label" >
<property name="sizePolicy" >
<sizepolicy vsizetype="Preferred" hsizetype="MinimumExpanding" >
<item row="3" column="0">
<widget class="QLabel" name="tornoffmenus_label">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text" >
<property name="text">
<string>Torn-off menus:</string>
</property>
<property name="alignment" >
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="buddy" >
<property name="buddy">
<cstring>tornoffmenus</cstring>
</property>
</widget>
</item>
<item row="3" column="1" colspan="2" >
<widget class="QSlider" name="tornoffmenus" >
<property name="minimum" >
<item row="3" column="1" colspan="2">
<widget class="QSlider" name="tornoffmenus">
<property name="minimum">
<number>10</number>
</property>
<property name="maximum" >
<property name="maximum">
<number>100</number>
</property>
<property name="orientation" >
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="tickPosition" >
<property name="tickPosition">
<enum>QSlider::TicksBelow</enum>
</property>
<property name="tickInterval" >
<property name="tickInterval">
<number>10</number>
</property>
</widget>
</item>
<item row="4" column="0" colspan="3" >
<spacer name="verticalSpacer" >
<property name="orientation" >
<item row="4" column="0" colspan="3">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0" >
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>0</height>
@ -475,31 +444,31 @@
</property>
</spacer>
</item>
<item row="0" column="1" >
<widget class="QLabel" name="label_6" >
<property name="sizePolicy" >
<sizepolicy vsizetype="Preferred" hsizetype="Preferred" >
<item row="0" column="1">
<widget class="QLabel" name="label_6">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text" >
<property name="text">
<string>Transparent</string>
</property>
</widget>
</item>
<item row="0" column="2" >
<widget class="QLabel" name="label_7" >
<property name="sizePolicy" >
<sizepolicy vsizetype="Preferred" hsizetype="Fixed" >
<item row="0" column="2">
<widget class="QLabel" name="label_7">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text" >
<property name="text">
<string>Opaque</string>
</property>
<property name="alignment" >
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
@ -516,19 +485,11 @@
<tabstop>dialogs</tabstop>
<tabstop>comboboxpopup</tabstop>
<tabstop>menus</tabstop>
<tabstop>duration</tabstop>
<tabstop>individualmenuconfig</tabstop>
<tabstop>dropdownmenus</tabstop>
<tabstop>popupmenus</tabstop>
<tabstop>tornoffmenus</tabstop>
</tabstops>
<customwidgets>
<customwidget>
<class>KIntSpinBox</class>
<extends>QSpinBox</extends>
<header>knuminput.h</header>
</customwidget>
</customwidgets>
<resources/>
<connections>
<connection>
@ -537,11 +498,11 @@
<receiver>menus</receiver>
<slot>setDisabled(bool)</slot>
<hints>
<hint type="sourcelabel" >
<hint type="sourcelabel">
<x>109</x>
<y>316</y>
</hint>
<hint type="destinationlabel" >
<hint type="destinationlabel">
<x>212</x>
<y>220</y>
</hint>