| OLD | NEW |
| 1 # Linux GTK Theme Integration | 1 # Linux GTK Theme Integration |
| 2 | 2 |
| 3 The GTK+ port of Chromium has a mode where we try to match the user's GTK theme | 3 The GTK+ port of Chromium has a mode where we try to match the user's GTK theme |
| 4 (which can be enabled under Wrench -> Options -> Personal Stuff -> Set to GTK+ | 4 (which can be enabled under Wrench -> Options -> Personal Stuff -> Set to GTK+ |
| 5 theme). The heuristics often don't pick good colors due to a lack of information | 5 theme). The heuristics often don't pick good colors due to a lack of information |
| 6 in the GTK themes. | 6 in the GTK themes. |
| 7 | 7 |
| 8 Starting in Chrome 9, we're providing a new way for theme authors to control our | 8 Starting in Chrome 9, we're providing a new way for theme authors to control our |
| 9 GTK+ theming mode. I am not sure of the earliest build these showed up in, but I | 9 GTK+ theming mode. I am not sure of the earliest build these showed up in, but I |
| 10 know 9.0.597 works. | 10 know 9.0.597 works. |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 99 | 99 |
| 100 I am at the very least hoping we can get Radiance and Ambiance patches since we | 100 I am at the very least hoping we can get Radiance and Ambiance patches since we |
| 101 make very poor frame decisions on those themes, and hopefully a few others. | 101 make very poor frame decisions on those themes, and hopefully a few others. |
| 102 | 102 |
| 103 ### How about control over the min/max/close buttons? | 103 ### How about control over the min/max/close buttons? |
| 104 | 104 |
| 105 I actually tried this locally. There's a sort of uncanny valley effect going on; | 105 I actually tried this locally. There's a sort of uncanny valley effect going on; |
| 106 as the frame looks more native, it's more obvious that it isn't behaving like a | 106 as the frame looks more native, it's more obvious that it isn't behaving like a |
| 107 native frame. (Also my implementation added a startup time hit.) | 107 native frame. (Also my implementation added a startup time hit.) |
| 108 | 108 |
| 109 ### Why use style properties instead of (i.e.) `bg[STATE]`? | 109 ### Why use style properties instead of (i.e.) bg[STATE]? |
| 110 | 110 |
| 111 There's no way to distinguish between colors set on different classes. Using | 111 There's no way to distinguish between colors set on different classes. Using |
| 112 style properties allows us to be backwards compatible and maintain the | 112 style properties allows us to be backwards compatible and maintain the |
| 113 heuristics since not everyone is going to modify their themes for chromium (and | 113 heuristics since not everyone is going to modify their themes for chromium (and |
| 114 the heuristics do a reasonable job). | 114 the heuristics do a reasonable job). |
| 115 | 115 |
| 116 ### Why now? | 116 ### Why now? |
| 117 | 117 |
| 118 * I (erg@) was putting off major changes to the window frame stuff in | 118 * I (erg@) was putting off major changes to the window frame stuff in |
| 119 anticipation of finally being able to use GTK+'s theme rendering for the | 119 anticipation of finally being able to use GTK+'s theme rendering for the |
| 120 window border with client side decorations, but client side decorations | 120 window border with client side decorations, but client side decorations |
| 121 either isn't happening or isn't happening anytime soon, so there's no | 121 either isn't happening or isn't happening anytime soon, so there's no |
| 122 justification for pushing this task off into the future. | 122 justification for pushing this task off into the future. |
| 123 * Chrome looks pretty bad under Ambiance on Maverick. | 123 * Chrome looks pretty bad under Ambiance on Maverick. |
| 124 | 124 |
| 125 ### Details about `MetaFrames` and `ChromeGtkFrame` relationship and history? | 125 ### Details about `MetaFrames` and `ChromeGtkFrame` relationship and history? |
| 126 | 126 |
| 127 `MetaFrames` is a class that was used in metacity to communicate color | 127 `MetaFrames` is a class that was used in metacity to communicate color |
| 128 information to the window manager. During the Hardy Heron days, we slurped up | 128 information to the window manager. During the Hardy Heron days, we slurped up |
| 129 the data and used it as a key part of our heuristics. At least on my Lucid Lynx | 129 the data and used it as a key part of our heuristics. At least on my Lucid Lynx |
| 130 machine, none of the GNOME GTK+ themes have `MetaFrames` styling. (As mentioned | 130 machine, none of the GNOME GTK+ themes have `MetaFrames` styling. (As mentioned |
| 131 above, several of the XFCE themes do, though.) | 131 above, several of the XFCE themes do, though.) |
| 132 | 132 |
| 133 Internally to chrome, our `ChromeGtkFrame` class inherits from `MetaFrames` | 133 Internally to chrome, our `ChromeGtkFrame` class inherits from `MetaFrames` |
| 134 (again, which inherits from `GtkWindow`) so any old themes that style the | 134 (again, which inherits from `GtkWindow`) so any old themes that style the |
| 135 `MetaFrames` class are backwards compatible. | 135 `MetaFrames` class are backwards compatible. |
| OLD | NEW |