ScrollBar.qml 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. // Copyright (C) 2020 The Qt Company Ltd.
  2. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
  3. // Qt-Security score:significant reason:default
  4. import QtQuick
  5. import QtQuick.NativeStyle as NativeStyle
  6. NativeStyle.DefaultScrollBar {
  7. id: controlRoot
  8. readonly property bool __notCustomizable: true
  9. topPadding: orientation === Qt.Vertical ? controlRoot.__decreaseVisual.indicator.height : 0
  10. bottomPadding: orientation === Qt.Vertical ? controlRoot.__increaseVisual.indicator.height : 0
  11. leftPadding: orientation === Qt.Horizontal ? controlRoot.__decreaseVisual.indicator.width : 0
  12. rightPadding: orientation === Qt.Horizontal ? controlRoot.__increaseVisual.indicator.width : 0
  13. contentItem: NativeStyle.ScrollBar {
  14. control: controlRoot
  15. subControl: NativeStyle.ScrollBar.Handle
  16. readonly property bool __ignoreNotCustomizable: true
  17. }
  18. NativeStyle.ScrollBar {
  19. // Fade a hovered-looking version of the handle
  20. // on top of the default handle when hovering it
  21. x: contentItem.x
  22. y: contentItem.y
  23. z: 1
  24. width: contentItem.width
  25. height: contentItem.height
  26. control: controlRoot
  27. subControl: NativeStyle.ScrollBar.Handle
  28. overrideState: NativeStyle.StyleItem.AlwaysHovered
  29. opacity: controlRoot.hovered || control.pressed ? 1 : 0
  30. Behavior on opacity { NumberAnimation { duration: contentItem.transitionDuration } }
  31. }
  32. // The groove background should have window color
  33. Rectangle {
  34. x: background.x
  35. y: background.y
  36. z: -1
  37. width: background.width
  38. height: background.height
  39. color: controlRoot.palette.window
  40. }
  41. background: NativeStyle.ScrollBar {
  42. control: controlRoot
  43. subControl: NativeStyle.ScrollBar.Groove
  44. overrideState: NativeStyle.ScrollBar.NeverHovered
  45. readonly property bool __ignoreNotCustomizable: true
  46. }
  47. __decreaseVisual.indicator: NativeStyle.ScrollBar {
  48. control: controlRoot
  49. subControl: NativeStyle.ScrollBar.SubLine
  50. overrideState: NativeStyle.ScrollBar.AlwaysHovered
  51. opacity: controlRoot.__decreaseVisual.hovered ? 1 : 0
  52. Behavior on opacity { NumberAnimation { duration: contentItem.transitionDuration } }
  53. useNinePatchImage: false
  54. readonly property bool __ignoreNotCustomizable: true
  55. }
  56. NativeStyle.ScrollBar {
  57. control: controlRoot
  58. subControl: NativeStyle.ScrollBar.SubLine
  59. overrideState: NativeStyle.ScrollBar.AlwaysSunken
  60. opacity: controlRoot.__decreaseVisual.pressed ? 1 : 0
  61. useNinePatchImage: false
  62. z: 1
  63. }
  64. __increaseVisual.indicator: NativeStyle.ScrollBar {
  65. control: controlRoot
  66. subControl: NativeStyle.ScrollBar.AddLine
  67. x: orientation === Qt.Horizontal ? controlRoot.width - width : 0
  68. y: orientation === Qt.Vertical ? controlRoot.height - height : 0
  69. overrideState: NativeStyle.ScrollBar.AlwaysHovered
  70. opacity: controlRoot.__increaseVisual.hovered ? 1 : 0
  71. Behavior on opacity { NumberAnimation { duration: contentItem.transitionDuration } }
  72. useNinePatchImage: false
  73. readonly property bool __ignoreNotCustomizable: true
  74. }
  75. NativeStyle.ScrollBar {
  76. control: controlRoot
  77. subControl: NativeStyle.ScrollBar.AddLine
  78. x: __increaseVisual.indicator.x
  79. y: __increaseVisual.indicator.y
  80. z: 1
  81. overrideState: NativeStyle.ScrollBar.AlwaysSunken
  82. opacity: controlRoot.__increaseVisual.pressed ? 1 : 0
  83. useNinePatchImage: false
  84. }
  85. }