gtk-3.0/widgets/_treeviews.scss 6.1 K raw
1
/**************
2
 * Tree Views *
3
 **************/
4
treeview.view {
5
  @at-root * {
6
    -GtkTreeView-horizontal-separator: 4;
7
    -GtkTreeView-grid-line-width: 1;
8
    -GtkTreeView-grid-line-pattern: '';
9
    -GtkTreeView-tree-line-width: 1;
10
    -GtkTreeView-tree-line-pattern: '';
11
    -GtkTreeView-expander-size: 16;
12
  }
13
14
  border-left-color: mix($fg_color, $base_color, 50%); // this is actually the tree lines color,
15
  border-top-color: $bg_color;                         // while this is the grid lines color, better then nothing
16
17
  rubberband { @extend rubberband; } // to avoid borders being overridden by the previously set props
18
19
  &:selected {
20
    &:focus, & {
21
      border-radius: 0;
22
23
      @extend %selected_items;
24
    }
25
26
    &:backdrop, & {
27
      border-left-color: mix($selected_fg_color, $selected_bg_color, 50%);
28
      border-top-color: transparentize($fg_color, 0.9); // doesn't work unfortunatelly
29
    }
30
  }
31
32
  &:disabled {
33
    color: $insensitive_fg_color;
34
35
    &:selected {
36
      color: mix($selected_fg_color, $selected_bg_color, 40%);
37
      &:backdrop { color: mix($backdrop_selected_fg_color, $selected_bg_color, 30%); }
38
    }
39
40
    &:backdrop { color: $backdrop_insensitive_color; }
41
  }
42
43
  &.separator {
44
    min-height: 2px;
45
    color: $bg_color;
46
47
    &:backdrop { color: transparentize($bg_color, 0.9); }
48
  }
49
50
  &:backdrop {
51
    border-left-color: mix($backdrop_fg_color, $backdrop_bg_color, 50%);
52
    border-top: $backdrop_bg_color;
53
  }
54
  &:drop(active) {
55
    border-style: solid none;
56
    border-width: 1px;
57
    border-color: $selected_borders_color;
58
59
    &.after { border-top-style: none; }
60
61
    &.before { border-bottom-style: none; }
62
  }
63
64
  &.expander {
65
    -gtk-icon-source: -gtk-icontheme('pan-end-symbolic');
66
67
    &:dir(rtl) { -gtk-icon-source: -gtk-icontheme('pan-end-symbolic-rtl'); }
68
69
    color: mix($fg_color, $base_color, 70%);
70
71
    &:hover { color: $fg_color; }
72
73
    &:selected {
74
      color: mix($selected_fg_color, $selected_bg_color, 70%);
75
76
      &:hover { color: $selected_fg_color; }
77
78
      &:backdrop { color: mix($backdrop_selected_fg_color, $selected_bg_color, 70%); }
79
    }
80
81
    &:checked { -gtk-icon-source: -gtk-icontheme('pan-down-symbolic'); }
82
83
    &:backdrop { color: mix($backdrop_fg_color, $backdrop_base_color, 70%); }
84
  }
85
86
  &.progressbar { // progress bar in treeviews
87
    @if $variant == light { color: $base_color; }
88
89
    border: 1px solid $selected_borders_color;
90
    border-radius: 4px;
91
    background-color: $selected_bg_color;
92
    background-image: linear-gradient(to bottom,
93
                                      $selected_bg_color,
94
                                      darken($selected_bg_color,10%));
95
    box-shadow: inset 0 1px if($variant=='light', transparentize(white,0.7),
96
                                                  transparentize(white,0.85)),
97
                      0 1px if($variant=='light', transparentize(black, 0.8),
98
                                                  transparentize(black,0.9));
99
100
    &:selected {
101
      &:focus, & {
102
        border-radius: 4px;
103
104
        @if $variant == 'light' { box-shadow: none; }
105
106
        @else { box-shadow: inset 0 1px transparentize(white, 0.95); }
107
        color: $selected_bg_color;
108
        background-image: linear-gradient(to bottom,
109
                                          $base_color,
110
                                          darken($base_color,10%));
111
112
        &:backdrop {
113
          @if $variant == 'light' {
114
            color: $selected_bg_color;
115
            border-color: $selected_borders_color; // otherwise it gets inherited by .view(?!?)
116
          }
117
118
          @else { border-color: $backdrop_base_color; }
119
120
          background-color: $backdrop_base_color;
121
        }
122
      }
123
    }
124
125
    &:backdrop {
126
      @if $variant == 'light' { color: $backdrop_base_color; }
127
128
      @else { border-color: $backdrop_base_color; }
129
130
      background-image: none;
131
      box-shadow: none;
132
    }
133
  }
134
135
  &.trough { // progress bar trough in treeviews
136
    background-color: transparentize($fg_color,0.9);
137
    border-radius: 4px;
138
139
    &:selected {
140
      &:focus, & {
141
        background-color: if($variant == 'light',
142
                             transparentize($selected_fg_color, 0.7),
143
                             darken($selected_bg_color, 10%));
144
        border-radius: 4px;
145
146
        @if $variant == 'light' {
147
          border-width: 1px 0;
148
          border-style: solid;
149
          border-color: $selected_bg_color;
150
        }
151
      }
152
    }
153
  }
154
155
  header {
156
    button {
157
      $_column_header_color: mix($fg_color, $base_color, 50%);
158
159
      @extend %column_header_button;
160
161
      color: $_column_header_color;
162
      background-color: $base_color;
163
      font-weight: bold;
164
      text-shadow: none;
165
      box-shadow: none;
166
167
      &:hover {
168
        @extend %column_header_button;
169
170
        color: mix($_column_header_color, $fg_color, 50%);
171
        box-shadow: none;
172
        transition: none; //I shouldn't need this
173
      }
174
175
      &:active {
176
        @extend %column_header_button;
177
178
        color: $fg_color;
179
        transition: none; //I shouldn't need this
180
      }
181
    }
182
183
    button:last-child { &:backdrop, & { border-right-style: none; }}
184
  }
185
186
  button.dnd,
187
  header.button.dnd { // for treeview-like derive widgets
188
    &:active, &:selected, &:hover, & {
189
      padding: 0 6px;
190
      transition: none;
191
      background-image: none;
192
      background-color: $selected_bg_color;
193
      color: $base_color;
194
      border-radius: 0;
195
      border-style: none;
196
      box-shadow: inset 0 0 0 1px $base_color;
197
      text-shadow: none;
198
    }
199
  }
200
201
  acceleditor > label { background-color: $selected_bg_color; } // see tests/testaccel to test
202
}
203
204
%column_header_button {
205
  padding: 0 6px;
206
  border-radius: 0;
207
  background-image: none;
208
  text-shadow: none;
209
  border-width: 1px;
210
  border-style: none solid solid none;
211
  border-color: $bg_color;
212
213
  &:disabled {
214
    border-color: $bg_color;
215
    background-image: none;
216
  }
217
218
  &:backdrop {
219
    border-color: $backdrop_bg_color;
220
    border-style: none solid solid none;
221
    color: mix($backdrop_fg_color, $backdrop_bg_color, 50%);
222
    background-image: none;
223
    background-color: $backdrop_base_color;
224
225
    &:disabled {
226
      border-color: $backdrop_bg_color;
227
      background-image: none;
228
    }
229
  }
230
}