##// END OF EJS Templates
New style on mac to keep the scrollbars visible
New style on mac to keep the scrollbars visible

File last commit:

r930:5ec3f5d1277b
r930:5ec3f5d1277b
Show More
MacScrollBarStyle.cpp
40 lines | 1.3 KiB | text/x-c | CppLexer
/ gui / src / Visualization / MacScrollBarStyle.cpp
Thibaud Rabillard
New style on mac to keep the scrollbars visible
r930 #include "Visualization/MacScrollBarStyle.h"
#include <QWidget>
int MacScrollBarStyle::styleHint(QStyle::StyleHint hint, const QStyleOption *option,
const QWidget *widget, QStyleHintReturn *returnData) const
{
switch (hint) {
case SH_ScrollBar_Transient:
return false; // Makes the scrollbar always visible
case SH_ScrollView_FrameOnlyAroundContents:
return true; // Avoid that the scrollbar is drawn on top of the widget
default:
break;
}
return QProxyStyle::styleHint(hint, option, widget, returnData);
}
void MacScrollBarStyle::selfInstallOn(QWidget *widget, bool installOnSubWidgets)
{
// Note: a style can be installed on a particular widget but it is not automatically applied its
// children widgets.
QList<QWidget *> widgetsToStyle{widget};
while (!widgetsToStyle.isEmpty()) {
auto widget = widgetsToStyle.takeFirst();
widget->setStyle(this);
if (installOnSubWidgets) {
for (auto child : widget->children()) {
auto childWidget = qobject_cast<QWidget *>(child);
if (childWidget) {
widgetsToStyle << childWidget;
}
}
}
}
}