Changeset 53372 in webkit
- Timestamp:
- Jan 17, 2010 9:54:48 AM (14 years ago)
- Location:
- trunk/WebCore
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebCore/ChangeLog
r53371 r53372 1 2010-01-17 Martin Robinson <martin.james.robinson@gmail.com> 2 3 Reviewed by Gustavo Noronha Silva. 4 5 [GTK] GtkWebKit incompatible with rgba colormaps 6 https://bugs.webkit.org/show_bug.cgi?id=20736 7 8 Fix GTK theme rendering onto drawables with RGBA colormaps. Now 9 each type of colormap has its own collection of GtkWidgets. 10 11 This fix does not introduce any functionality changes, so does not 12 includes new tests. 13 14 * platform/gtk/RenderThemeGtk.cpp: 15 (WebCore::RenderThemeGtk::RenderThemeGtk): 16 (WebCore::RenderThemeGtk::~RenderThemeGtk): 17 (WebCore::RenderThemeGtk::partsForDrawable): 18 (WebCore::adjustMozillaStyle): 19 (WebCore::setMozillaState): 20 (WebCore::paintMozillaGtkWidget): 21 (WebCore::setToggleSize): 22 (WebCore::RenderThemeGtk::setCheckboxSize): 23 (WebCore::RenderThemeGtk::paintCheckbox): 24 (WebCore::RenderThemeGtk::setRadioSize): 25 (WebCore::RenderThemeGtk::paintRadio): 26 (WebCore::RenderThemeGtk::paintButton): 27 (WebCore::RenderThemeGtk::adjustMenuListStyle): 28 (WebCore::RenderThemeGtk::paintMenuList): 29 (WebCore::RenderThemeGtk::adjustTextFieldStyle): 30 (WebCore::RenderThemeGtk::paintTextField): 31 (WebCore::RenderThemeGtk::paintSearchFieldResultsButton): 32 (WebCore::RenderThemeGtk::paintSearchFieldResultsDecoration): 33 (WebCore::RenderThemeGtk::paintSearchFieldCancelButton): 34 * platform/gtk/RenderThemeGtk.h: 35 * platform/gtk/gtk2drawing.c: 36 (moz_gtk_use_theme_parts): 37 (ensure_window_widget): 38 (setup_widget_prototype): 39 (ensure_button_widget): 40 (ensure_hpaned_widget): 41 (ensure_vpaned_widget): 42 (ensure_toggle_button_widget): 43 (ensure_button_arrow_widget): 44 (ensure_checkbox_widget): 45 (ensure_radiobutton_widget): 46 (ensure_scrollbar_widget): 47 (ensure_spin_widget): 48 (ensure_scale_widget): 49 (ensure_entry_widget): 50 (moz_gtk_get_combo_box_inner_button): 51 (moz_gtk_get_combo_box_button_inner_widgets): 52 (ensure_combo_box_widgets): 53 (moz_gtk_get_combo_box_entry_inner_widgets): 54 (moz_gtk_get_combo_box_entry_arrow): 55 (ensure_combo_box_entry_widgets): 56 (ensure_handlebox_widget): 57 (ensure_toolbar_widget): 58 (ensure_toolbar_separator_widget): 59 (ensure_tooltip_widget): 60 (ensure_tab_widget): 61 (ensure_progress_widget): 62 (ensure_statusbar_widget): 63 (ensure_frame_widget): 64 (ensure_menu_bar_widget): 65 (ensure_menu_bar_item_widget): 66 (ensure_menu_popup_widget): 67 (ensure_menu_item_widget): 68 (ensure_image_menu_item_widget): 69 (ensure_menu_separator_widget): 70 (ensure_check_menu_item_widget): 71 (ensure_tree_view_widget): 72 (ensure_tree_header_cell_widget): 73 (ensure_expander_widget): 74 (ensure_scrolled_window_widget): 75 (moz_gtk_checkbox_get_metrics): 76 (moz_gtk_radio_get_metrics): 77 (moz_gtk_splitter_get_metrics): 78 (moz_gtk_toggle_paint): 79 (moz_gtk_scrollbar_button_paint): 80 (moz_gtk_scrollbar_trough_paint): 81 (moz_gtk_scrollbar_thumb_paint): 82 (moz_gtk_spin_paint): 83 (moz_gtk_spin_updown_paint): 84 (moz_gtk_scale_paint): 85 (moz_gtk_scale_thumb_paint): 86 (moz_gtk_gripper_paint): 87 (moz_gtk_hpaned_paint): 88 (moz_gtk_vpaned_paint): 89 (moz_gtk_caret_paint): 90 (moz_gtk_treeview_paint): 91 (moz_gtk_tree_header_cell_paint): 92 (moz_gtk_tree_header_sort_arrow_paint): 93 (moz_gtk_treeview_expander_paint): 94 (moz_gtk_expander_paint): 95 (moz_gtk_combo_box_paint): 96 (moz_gtk_downarrow_paint): 97 (moz_gtk_combo_box_entry_button_paint): 98 (moz_gtk_container_paint): 99 (moz_gtk_toggle_label_paint): 100 (moz_gtk_toolbar_paint): 101 (moz_gtk_toolbar_separator_paint): 102 (moz_gtk_tooltip_paint): 103 (moz_gtk_resizer_paint): 104 (moz_gtk_frame_paint): 105 (moz_gtk_progressbar_paint): 106 (moz_gtk_progress_chunk_paint): 107 (moz_gtk_get_tab_thickness): 108 (moz_gtk_tab_paint): 109 (moz_gtk_tabpanels_paint): 110 (moz_gtk_tab_scroll_arrow_paint): 111 (moz_gtk_menu_bar_paint): 112 (moz_gtk_menu_popup_paint): 113 (moz_gtk_menu_separator_paint): 114 (moz_gtk_menu_item_paint): 115 (moz_gtk_menu_arrow_paint): 116 (moz_gtk_check_menu_item_paint): 117 (moz_gtk_window_paint): 118 (moz_gtk_get_widget_border): 119 (moz_gtk_get_combo_box_entry_button_size): 120 (moz_gtk_get_tab_scroll_arrow_size): 121 (moz_gtk_get_downarrow_size): 122 (moz_gtk_get_toolbar_separator_width): 123 (moz_gtk_get_expander_size): 124 (moz_gtk_get_treeview_expander_size): 125 (moz_gtk_get_menu_separator_height): 126 (moz_gtk_get_scalethumb_metrics): 127 (moz_gtk_get_scrollbar_metrics): 128 (moz_gtk_images_in_menus): 129 (moz_gtk_widget_paint): 130 (moz_gtk_get_scrollbar_widget): 131 (moz_gtk_shutdown): 132 (moz_gtk_destroy_theme_parts_widgets): 133 * platform/gtk/gtkdrawing.h: 134 1 135 2010-01-16 Maciej Stachowiak <mjs@apple.com> 2 136 -
trunk/WebCore/platform/gtk/RenderThemeGtk.cpp
r52421 r53372 37 37 #include "gtkdrawing.h" 38 38 39 #include <gdk/gdk.h> 39 40 #include <gtk/gtk.h> 40 #include <gdk/gdk.h>41 41 42 42 namespace WebCore { … … 138 138 , m_seekBackButton(0) 139 139 , m_seekForwardButton(0) 140 { 141 if (!mozGtkRefCount) 140 , m_partsTable(adoptGRef(g_hash_table_new_full(0, 0, 0, g_free))) 141 { 142 if (!mozGtkRefCount) { 142 143 moz_gtk_init(); 144 145 // Use the theme parts for the default drawable. 146 moz_gtk_use_theme_parts(partsForDrawable(0)); 147 } 143 148 144 149 ++mozGtkRefCount; … … 163 168 m_seekBackButton.clear(); 164 169 m_seekForwardButton.clear(); 170 171 GList* values = g_hash_table_get_values(m_partsTable.get()); 172 for (guint i = 0; i < g_list_length(values); i++) 173 moz_gtk_destroy_theme_parts_widgets( 174 static_cast<GtkThemeParts*>(g_list_nth_data(values, i))); 175 } 176 177 GtkThemeParts* RenderThemeGtk::partsForDrawable(GdkDrawable* drawable) const 178 { 179 // A null drawable represents the default screen colormap. 180 GdkColormap* colormap = 0; 181 if (!drawable) 182 colormap = gdk_screen_get_default_colormap(gdk_screen_get_default()); 183 else 184 colormap = gdk_drawable_get_colormap(drawable); 185 186 GtkThemeParts* parts = static_cast<GtkThemeParts*>(g_hash_table_lookup(m_partsTable.get(), colormap)); 187 if (!parts) { 188 parts = g_new0(GtkThemeParts, 1); 189 parts->colormap = colormap; 190 g_hash_table_insert(m_partsTable.get(), colormap, parts); 191 } 192 193 return parts; 165 194 } 166 195 … … 219 248 } 220 249 221 static void adjustMoz Style(RenderStyle* style, GtkThemeWidgetType type)250 static void adjustMozillaStyle(const RenderThemeGtk* theme, RenderStyle* style, GtkThemeWidgetType type) 222 251 { 223 252 gint left, top, right, bottom; … … 238 267 } 239 268 240 static void setMoz State(RenderTheme* theme, GtkWidgetState* state, RenderObject* o)269 static void setMozillaState(const RenderTheme* theme, GtkWidgetState* state, RenderObject* o) 241 270 { 242 271 state->active = theme->isPressed(o); … … 250 279 } 251 280 252 static bool paintMoz Widget(RenderTheme* theme, GtkThemeWidgetType type, RenderObject* o, const RenderObject::PaintInfo& i, const IntRect& rect)281 static bool paintMozillaGtkWidget(const RenderThemeGtk* theme, GtkThemeWidgetType type, RenderObject* o, const RenderObject::PaintInfo& i, const IntRect& rect) 253 282 { 254 283 // No GdkWindow to render to, so return true to fall back … … 261 290 262 291 GtkWidgetState mozState; 263 setMoz State(theme, &mozState, o);292 setMozillaState(theme, &mozState, o); 264 293 265 294 int flags; … … 299 328 gdk_rectangle_intersect(&gdkRect, &gdkClipRect, &gdkClipRect); 300 329 330 // Since the theme renderer is going to be drawing onto this GdkDrawable, 331 // select the appropriate widgets for the drawable depth. 332 moz_gtk_use_theme_parts(theme->partsForDrawable(i.context->gdkDrawable())); 301 333 return moz_gtk_widget_paint(type, i.context->gdkDrawable(), &gdkRect, &gdkClipRect, &mozState, flags, direction) != MOZ_GTK_SUCCESS; 302 334 } … … 312 344 } 313 345 314 static void setToggleSize( RenderStyle* style, ControlPart appearance)346 static void setToggleSize(const RenderThemeGtk* theme, RenderStyle* style, ControlPart appearance) 315 347 { 316 348 // The width and height are both specified, so we shouldn't change them. … … 346 378 void RenderThemeGtk::setCheckboxSize(RenderStyle* style) const 347 379 { 348 setToggleSize( style, RadioPart);380 setToggleSize(this, style, RadioPart); 349 381 } 350 382 351 383 bool RenderThemeGtk::paintCheckbox(RenderObject* o, const RenderObject::PaintInfo& i, const IntRect& rect) 352 384 { 353 return paintMoz Widget(this, MOZ_GTK_CHECKBUTTON, o, i, rect);385 return paintMozillaGtkWidget(this, MOZ_GTK_CHECKBUTTON, o, i, rect); 354 386 } 355 387 356 388 void RenderThemeGtk::setRadioSize(RenderStyle* style) const 357 389 { 358 setToggleSize( style, RadioPart);390 setToggleSize(this, style, RadioPart); 359 391 } 360 392 361 393 bool RenderThemeGtk::paintRadio(RenderObject* o, const RenderObject::PaintInfo& i, const IntRect& rect) 362 394 { 363 return paintMoz Widget(this, MOZ_GTK_RADIOBUTTON, o, i, rect);395 return paintMozillaGtkWidget(this, MOZ_GTK_RADIOBUTTON, o, i, rect); 364 396 } 365 397 … … 382 414 bool RenderThemeGtk::paintButton(RenderObject* o, const RenderObject::PaintInfo& i, const IntRect& rect) 383 415 { 384 return paintMoz Widget(this, MOZ_GTK_BUTTON, o, i, rect);416 return paintMozillaGtkWidget(this, MOZ_GTK_BUTTON, o, i, rect); 385 417 } 386 418 … … 391 423 style->setHeight(Length(Auto)); 392 424 style->setWhiteSpace(PRE); 393 adjustMoz Style(style, MOZ_GTK_DROPDOWN);425 adjustMozillaStyle(this, style, MOZ_GTK_DROPDOWN); 394 426 } 395 427 396 428 bool RenderThemeGtk::paintMenuList(RenderObject* o, const RenderObject::PaintInfo& i, const IntRect& rect) 397 429 { 398 return paintMoz Widget(this, MOZ_GTK_DROPDOWN, o, i, rect);430 return paintMozillaGtkWidget(this, MOZ_GTK_DROPDOWN, o, i, rect); 399 431 } 400 432 … … 405 437 style->setHeight(Length(Auto)); 406 438 style->setWhiteSpace(PRE); 407 adjustMoz Style(style, MOZ_GTK_ENTRY);439 adjustMozillaStyle(this, style, MOZ_GTK_ENTRY); 408 440 } 409 441 410 442 bool RenderThemeGtk::paintTextField(RenderObject* o, const RenderObject::PaintInfo& i, const IntRect& rect) 411 443 { 412 return paintMoz Widget(this, MOZ_GTK_ENTRY, o, i, rect);444 return paintMozillaGtkWidget(this, MOZ_GTK_ENTRY, o, i, rect); 413 445 } 414 446 … … 425 457 bool RenderThemeGtk::paintSearchFieldResultsButton(RenderObject* o, const RenderObject::PaintInfo& i, const IntRect& rect) 426 458 { 427 return paintMoz Widget(this, MOZ_GTK_DROPDOWN_ARROW, o, i, rect);459 return paintMozillaGtkWidget(this, MOZ_GTK_DROPDOWN_ARROW, o, i, rect); 428 460 } 429 461 … … 441 473 bool RenderThemeGtk::paintSearchFieldResultsDecoration(RenderObject* o, const RenderObject::PaintInfo& i, const IntRect& rect) 442 474 { 443 return paintMoz Widget(this, MOZ_GTK_CHECKMENUITEM, o, i, rect);475 return paintMozillaGtkWidget(this, MOZ_GTK_CHECKMENUITEM, o, i, rect); 444 476 } 445 477 … … 457 489 bool RenderThemeGtk::paintSearchFieldCancelButton(RenderObject* o, const RenderObject::PaintInfo& i, const IntRect& rect) 458 490 { 459 return paintMoz Widget(this, MOZ_GTK_CHECKMENUITEM, o, i, rect);491 return paintMozillaGtkWidget(this, MOZ_GTK_CHECKMENUITEM, o, i, rect); 460 492 } 461 493 -
trunk/WebCore/platform/gtk/RenderThemeGtk.h
r52421 r53372 26 26 */ 27 27 28 #ifndef RenderThemeG dk_h29 #define RenderThemeG dk_h28 #ifndef RenderThemeGtk_h 29 #define RenderThemeGtk_h 30 30 31 #include "GRefPtr.h" 31 32 #include "RenderTheme.h" 32 33 … … 37 38 typedef struct _GdkDrawable GdkDrawable; 38 39 typedef struct _GtkBorder GtkBorder; 40 typedef struct _GtkThemeParts GtkThemeParts; 39 41 40 42 namespace WebCore { … … 87 89 virtual String extraMediaControlsStyleSheet(); 88 90 #endif 91 92 GtkThemeParts* partsForDrawable(GdkDrawable*) const; 89 93 90 94 protected: … … 144 148 GtkContainer* gtkContainer() const; 145 149 146 private:147 150 mutable GtkWidget* m_gtkWindow; 148 151 mutable GtkContainer* m_gtkContainer; … … 166 169 RefPtr<Image> m_seekBackButton; 167 170 RefPtr<Image> m_seekForwardButton; 171 Page* m_page; 172 GRefPtr<GHashTable> m_partsTable; 168 173 169 174 }; … … 171 176 } 172 177 173 #endif 178 #endif // RenderThemeGtk_h -
trunk/WebCore/platform/gtk/gtk2drawing.c
r52421 r53372 57 57 #define WINDOW_IS_MAPPED(window) ((window) && GDK_IS_WINDOW(window) && gdk_window_is_visible(window)) 58 58 59 static GtkWidget* gProtoWindow; 60 static GtkWidget* gProtoLayout; 61 static GtkWidget* gButtonWidget; 62 static GtkWidget* gToggleButtonWidget; 63 static GtkWidget* gButtonArrowWidget; 64 static GtkWidget* gCheckboxWidget; 65 static GtkWidget* gRadiobuttonWidget; 66 static GtkWidget* gHorizScrollbarWidget; 67 static GtkWidget* gVertScrollbarWidget; 68 static GtkWidget* gSpinWidget; 69 static GtkWidget* gHScaleWidget; 70 static GtkWidget* gVScaleWidget; 71 static GtkWidget* gEntryWidget; 72 static GtkWidget* gComboBoxWidget; 73 static GtkWidget* gComboBoxButtonWidget; 74 static GtkWidget* gComboBoxArrowWidget; 75 static GtkWidget* gComboBoxSeparatorWidget; 76 static GtkWidget* gComboBoxEntryWidget; 77 static GtkWidget* gComboBoxEntryTextareaWidget; 78 static GtkWidget* gComboBoxEntryButtonWidget; 79 static GtkWidget* gComboBoxEntryArrowWidget; 80 static GtkWidget* gHandleBoxWidget; 81 static GtkWidget* gToolbarWidget; 82 static GtkWidget* gFrameWidget; 83 static GtkWidget* gStatusbarWidget; 84 static GtkWidget* gProgressWidget; 85 static GtkWidget* gTabWidget; 86 static GtkWidget* gTooltipWidget; 87 static GtkWidget* gMenuBarWidget; 88 static GtkWidget* gMenuBarItemWidget; 89 static GtkWidget* gMenuPopupWidget; 90 static GtkWidget* gMenuItemWidget; 91 static GtkWidget* gImageMenuItemWidget; 92 static GtkWidget* gCheckMenuItemWidget; 93 static GtkWidget* gTreeViewWidget; 94 static GtkTreeViewColumn* gMiddleTreeViewColumn; 95 static GtkWidget* gTreeHeaderCellWidget; 96 static GtkWidget* gTreeHeaderSortArrowWidget; 97 static GtkWidget* gExpanderWidget; 98 static GtkWidget* gToolbarSeparatorWidget; 99 static GtkWidget* gMenuSeparatorWidget; 100 static GtkWidget* gHPanedWidget; 101 static GtkWidget* gVPanedWidget; 102 static GtkWidget* gScrolledWindowWidget; 103 59 static GtkThemeParts *gParts = NULL; 104 60 static style_prop_t style_prop_func; 105 61 static gboolean have_arrow_scaling; 106 62 static gboolean is_initialized; 63 64 void 65 moz_gtk_use_theme_parts(GtkThemeParts* parts) 66 { 67 gParts = parts; 68 } 107 69 108 70 /* Because we have such an unconventional way of drawing widgets, signal to the GTK theme engine … … 125 87 ensure_window_widget() 126 88 { 127 if (!gProtoWindow) { 128 gProtoWindow = gtk_window_new(GTK_WINDOW_POPUP); 129 gtk_widget_realize(gProtoWindow); 130 moz_gtk_set_widget_name(gProtoWindow); 89 if (!gParts->protoWindow) { 90 gParts->protoWindow = gtk_window_new(GTK_WINDOW_POPUP); 91 92 if (gParts->colormap) 93 gtk_widget_set_colormap(gParts->protoWindow, gParts->colormap); 94 95 gtk_widget_realize(gParts->protoWindow); 96 moz_gtk_set_widget_name(gParts->protoWindow); 131 97 } 132 98 return MOZ_GTK_SUCCESS; … … 137 103 { 138 104 ensure_window_widget(); 139 if (!gP rotoLayout) {140 gP rotoLayout = gtk_fixed_new();141 gtk_container_add(GTK_CONTAINER(gP rotoWindow), gProtoLayout);142 } 143 144 gtk_container_add(GTK_CONTAINER(gP rotoLayout), widget);105 if (!gParts->protoLayout) { 106 gParts->protoLayout = gtk_fixed_new(); 107 gtk_container_add(GTK_CONTAINER(gParts->protoWindow), gParts->protoLayout); 108 } 109 110 gtk_container_add(GTK_CONTAINER(gParts->protoLayout), widget); 145 111 gtk_widget_realize(widget); 146 112 g_object_set_data(G_OBJECT(widget), "transparent-bg-hint", GINT_TO_POINTER(TRUE)); … … 151 117 ensure_button_widget() 152 118 { 153 if (!g ButtonWidget) {154 g ButtonWidget = gtk_button_new_with_label("M");155 setup_widget_prototype(g ButtonWidget);119 if (!gParts->buttonWidget) { 120 gParts->buttonWidget = gtk_button_new_with_label("M"); 121 setup_widget_prototype(gParts->buttonWidget); 156 122 } 157 123 return MOZ_GTK_SUCCESS; … … 161 127 ensure_hpaned_widget() 162 128 { 163 if (!g HPanedWidget) {164 g HPanedWidget = gtk_hpaned_new();165 setup_widget_prototype(g HPanedWidget);129 if (!gParts->hpanedWidget) { 130 gParts->hpanedWidget = gtk_hpaned_new(); 131 setup_widget_prototype(gParts->hpanedWidget); 166 132 } 167 133 return MOZ_GTK_SUCCESS; … … 171 137 ensure_vpaned_widget() 172 138 { 173 if (!g VPanedWidget) {174 g VPanedWidget = gtk_vpaned_new();175 setup_widget_prototype(g VPanedWidget);139 if (!gParts->vpanedWidget) { 140 gParts->vpanedWidget = gtk_vpaned_new(); 141 setup_widget_prototype(gParts->vpanedWidget); 176 142 } 177 143 return MOZ_GTK_SUCCESS; … … 181 147 ensure_toggle_button_widget() 182 148 { 183 if (!g ToggleButtonWidget) {184 g ToggleButtonWidget = gtk_toggle_button_new();185 setup_widget_prototype(g ToggleButtonWidget);149 if (!gParts->toggleButtonWidget) { 150 gParts->toggleButtonWidget = gtk_toggle_button_new(); 151 setup_widget_prototype(gParts->toggleButtonWidget); 186 152 /* toggle button must be set active to get the right style on hover. */ 187 GTK_TOGGLE_BUTTON(g ToggleButtonWidget)->active = TRUE;153 GTK_TOGGLE_BUTTON(gParts->toggleButtonWidget)->active = TRUE; 188 154 } 189 155 return MOZ_GTK_SUCCESS; … … 193 159 ensure_button_arrow_widget() 194 160 { 195 if (!g ButtonArrowWidget) {161 if (!gParts->buttonArrowWidget) { 196 162 ensure_toggle_button_widget(); 197 163 198 g ButtonArrowWidget = gtk_arrow_new(GTK_ARROW_DOWN, GTK_SHADOW_OUT);199 gtk_container_add(GTK_CONTAINER(g ToggleButtonWidget), gButtonArrowWidget);200 gtk_widget_realize(g ButtonArrowWidget);164 gParts->buttonArrowWidget = gtk_arrow_new(GTK_ARROW_DOWN, GTK_SHADOW_OUT); 165 gtk_container_add(GTK_CONTAINER(gParts->toggleButtonWidget), gParts->buttonArrowWidget); 166 gtk_widget_realize(gParts->buttonArrowWidget); 201 167 } 202 168 return MOZ_GTK_SUCCESS; … … 206 172 ensure_checkbox_widget() 207 173 { 208 if (!g CheckboxWidget) {209 g CheckboxWidget = gtk_check_button_new_with_label("M");210 setup_widget_prototype(g CheckboxWidget);174 if (!gParts->checkboxWidget) { 175 gParts->checkboxWidget = gtk_check_button_new_with_label("M"); 176 setup_widget_prototype(gParts->checkboxWidget); 211 177 } 212 178 return MOZ_GTK_SUCCESS; … … 216 182 ensure_radiobutton_widget() 217 183 { 218 if (!g RadiobuttonWidget) {219 g RadiobuttonWidget = gtk_radio_button_new_with_label(NULL, "M");220 setup_widget_prototype(g RadiobuttonWidget);184 if (!gParts->radiobuttonWidget) { 185 gParts->radiobuttonWidget = gtk_radio_button_new_with_label(NULL, "M"); 186 setup_widget_prototype(gParts->radiobuttonWidget); 221 187 } 222 188 return MOZ_GTK_SUCCESS; … … 226 192 ensure_scrollbar_widget() 227 193 { 228 if (!g VertScrollbarWidget) {229 g VertScrollbarWidget = gtk_vscrollbar_new(NULL);230 setup_widget_prototype(g VertScrollbarWidget);231 } 232 if (!g HorizScrollbarWidget) {233 g HorizScrollbarWidget = gtk_hscrollbar_new(NULL);234 setup_widget_prototype(g HorizScrollbarWidget);194 if (!gParts->vertScrollbarWidget) { 195 gParts->vertScrollbarWidget = gtk_vscrollbar_new(NULL); 196 setup_widget_prototype(gParts->vertScrollbarWidget); 197 } 198 if (!gParts->horizScrollbarWidget) { 199 gParts->horizScrollbarWidget = gtk_hscrollbar_new(NULL); 200 setup_widget_prototype(gParts->horizScrollbarWidget); 235 201 } 236 202 return MOZ_GTK_SUCCESS; … … 240 206 ensure_spin_widget() 241 207 { 242 if (!g SpinWidget) {243 g SpinWidget = gtk_spin_button_new(NULL, 1, 0);244 setup_widget_prototype(g SpinWidget);208 if (!gParts->spinWidget) { 209 gParts->spinWidget = gtk_spin_button_new(NULL, 1, 0); 210 setup_widget_prototype(gParts->spinWidget); 245 211 } 246 212 return MOZ_GTK_SUCCESS; … … 250 216 ensure_scale_widget() 251 217 { 252 if (!g HScaleWidget) {253 g HScaleWidget = gtk_hscale_new(NULL);254 setup_widget_prototype(g HScaleWidget);218 if (!gParts->hScaleWidget) { 219 gParts->hScaleWidget = gtk_hscale_new(NULL); 220 setup_widget_prototype(gParts->hScaleWidget); 255 221 } 256 if (!g VScaleWidget) {257 g VScaleWidget = gtk_vscale_new(NULL);258 setup_widget_prototype(g VScaleWidget);222 if (!gParts->vScaleWidget) { 223 gParts->vScaleWidget = gtk_vscale_new(NULL); 224 setup_widget_prototype(gParts->vScaleWidget); 259 225 } 260 226 return MOZ_GTK_SUCCESS; … … 264 230 ensure_entry_widget() 265 231 { 266 if (!g EntryWidget) {267 g EntryWidget = gtk_entry_new();268 setup_widget_prototype(g EntryWidget);232 if (!gParts->entryWidget) { 233 gParts->entryWidget = gtk_entry_new(); 234 setup_widget_prototype(gParts->entryWidget); 269 235 } 270 236 return MOZ_GTK_SUCCESS; … … 279 245 * Note that if we don't find the inner widgets (which shouldn't happen), we 280 246 * fallback to use generic "non-inner" widgets, and they don't need that kind 281 * of weak pointer since they are explicit children of gP rotoWindow and as247 * of weak pointer since they are explicit children of gParts->protoWindow and as 282 248 * such GTK holds a strong reference to them. */ 283 249 static void … … 285 251 { 286 252 if (GTK_IS_TOGGLE_BUTTON(widget)) { 287 g ComboBoxButtonWidget = widget;253 gParts->comboBoxButtonWidget = widget; 288 254 g_object_add_weak_pointer(G_OBJECT(widget), 289 (gpointer) &g ComboBoxButtonWidget);255 (gpointer) &gParts->comboBoxButtonWidget); 290 256 gtk_widget_realize(widget); 291 257 g_object_set_data(G_OBJECT(widget), "transparent-bg-hint", GINT_TO_POINTER(TRUE)); … … 298 264 { 299 265 if (GTK_IS_SEPARATOR(widget)) { 300 g ComboBoxSeparatorWidget = widget;266 gParts->comboBoxSeparatorWidget = widget; 301 267 g_object_add_weak_pointer(G_OBJECT(widget), 302 (gpointer) &g ComboBoxSeparatorWidget);268 (gpointer) &gParts->comboBoxSeparatorWidget); 303 269 } else if (GTK_IS_ARROW(widget)) { 304 g ComboBoxArrowWidget = widget;270 gParts->comboBoxArrowWidget = widget; 305 271 g_object_add_weak_pointer(G_OBJECT(widget), 306 (gpointer) &g ComboBoxArrowWidget);272 (gpointer) &gParts->comboBoxArrowWidget); 307 273 } else 308 274 return; … … 316 282 GtkWidget* buttonChild; 317 283 318 if (g ComboBoxButtonWidget && gComboBoxArrowWidget)284 if (gParts->comboBoxButtonWidget && gParts->comboBoxArrowWidget) 319 285 return MOZ_GTK_SUCCESS; 320 286 321 287 /* Create a ComboBox if needed */ 322 if (!g ComboBoxWidget) {323 g ComboBoxWidget = gtk_combo_box_new();324 setup_widget_prototype(g ComboBoxWidget);288 if (!gParts->comboBoxWidget) { 289 gParts->comboBoxWidget = gtk_combo_box_new(); 290 setup_widget_prototype(gParts->comboBoxWidget); 325 291 } 326 292 327 293 /* Get its inner Button */ 328 gtk_container_forall(GTK_CONTAINER(g ComboBoxWidget),294 gtk_container_forall(GTK_CONTAINER(gParts->comboBoxWidget), 329 295 moz_gtk_get_combo_box_inner_button, 330 296 NULL); 331 297 332 if (g ComboBoxButtonWidget) {298 if (gParts->comboBoxButtonWidget) { 333 299 /* Get the widgets inside the Button */ 334 buttonChild = GTK_BIN(g ComboBoxButtonWidget)->child;300 buttonChild = GTK_BIN(gParts->comboBoxButtonWidget)->child; 335 301 if (GTK_IS_HBOX(buttonChild)) { 336 302 /* appears-as-list = FALSE, cell-view = TRUE; the button … … 344 310 /* appears-as-list = TRUE, or cell-view = FALSE; 345 311 * the button only contains an arrow */ 346 g ComboBoxArrowWidget = buttonChild;312 gParts->comboBoxArrowWidget = buttonChild; 347 313 g_object_add_weak_pointer(G_OBJECT(buttonChild), (gpointer) 348 &g ComboBoxArrowWidget);349 gtk_widget_realize(g ComboBoxArrowWidget);350 g_object_set_data(G_OBJECT(g ComboBoxArrowWidget),314 &gParts->comboBoxArrowWidget); 315 gtk_widget_realize(gParts->comboBoxArrowWidget); 316 g_object_set_data(G_OBJECT(gParts->comboBoxArrowWidget), 351 317 "transparent-bg-hint", GINT_TO_POINTER(TRUE)); 352 318 } … … 356 322 * crashing. */ 357 323 ensure_toggle_button_widget(); 358 g ComboBoxButtonWidget = gToggleButtonWidget;359 } 360 361 if (!g ComboBoxArrowWidget) {324 gParts->comboBoxButtonWidget = gParts->toggleButtonWidget; 325 } 326 327 if (!gParts->comboBoxArrowWidget) { 362 328 /* Shouldn't be reached with current internal gtk implementation; 363 * we g ButtonArrowWidget as last resort fallback to avoid329 * we gParts->buttonArrowWidget as last resort fallback to avoid 364 330 * crashing. */ 365 331 ensure_button_arrow_widget(); 366 g ComboBoxArrowWidget = gButtonArrowWidget;367 } 368 369 /* We don't test the validity of g ComboBoxSeparatorWidget since there332 gParts->comboBoxArrowWidget = gParts->buttonArrowWidget; 333 } 334 335 /* We don't test the validity of gParts->comboBoxSeparatorWidget since there 370 336 * is none when "appears-as-list" = TRUE or "cell-view" = FALSE; if it 371 337 * is invalid we just won't paint it. */ … … 382 348 * Note that if we don't find the inner widgets (which shouldn't happen), we 383 349 * fallback to use generic "non-inner" widgets, and they don't need that kind 384 * of weak pointer since they are explicit children of gP rotoWindow and as350 * of weak pointer since they are explicit children of gParts->protoWindow and as 385 351 * such GTK holds a strong reference to them. */ 386 352 static void … … 389 355 { 390 356 if (GTK_IS_TOGGLE_BUTTON(widget)) { 391 g ComboBoxEntryButtonWidget = widget;357 gParts->comboBoxEntryButtonWidget = widget; 392 358 g_object_add_weak_pointer(G_OBJECT(widget), 393 (gpointer) &g ComboBoxEntryButtonWidget);359 (gpointer) &gParts->comboBoxEntryButtonWidget); 394 360 } else if (GTK_IS_ENTRY(widget)) { 395 g ComboBoxEntryTextareaWidget = widget;361 gParts->comboBoxEntryTextareaWidget = widget; 396 362 g_object_add_weak_pointer(G_OBJECT(widget), 397 (gpointer) &g ComboBoxEntryTextareaWidget);363 (gpointer) &gParts->comboBoxEntryTextareaWidget); 398 364 } else 399 365 return; … … 406 372 { 407 373 if (GTK_IS_ARROW(widget)) { 408 g ComboBoxEntryArrowWidget = widget;374 gParts->comboBoxEntryArrowWidget = widget; 409 375 g_object_add_weak_pointer(G_OBJECT(widget), 410 (gpointer) &g ComboBoxEntryArrowWidget);376 (gpointer) &gParts->comboBoxEntryArrowWidget); 411 377 gtk_widget_realize(widget); 412 378 g_object_set_data(G_OBJECT(widget), "transparent-bg-hint", GINT_TO_POINTER(TRUE)); … … 419 385 GtkWidget* buttonChild; 420 386 421 if (g ComboBoxEntryTextareaWidget &&422 g ComboBoxEntryButtonWidget &&423 g ComboBoxEntryArrowWidget)387 if (gParts->comboBoxEntryTextareaWidget && 388 gParts->comboBoxEntryButtonWidget && 389 gParts->comboBoxEntryArrowWidget) 424 390 return MOZ_GTK_SUCCESS; 425 391 426 392 /* Create a ComboBoxEntry if needed */ 427 if (!g ComboBoxEntryWidget) {428 g ComboBoxEntryWidget = gtk_combo_box_entry_new();429 setup_widget_prototype(g ComboBoxEntryWidget);393 if (!gParts->comboBoxEntryWidget) { 394 gParts->comboBoxEntryWidget = gtk_combo_box_entry_new(); 395 setup_widget_prototype(gParts->comboBoxEntryWidget); 430 396 } 431 397 432 398 /* Get its inner Entry and Button */ 433 gtk_container_forall(GTK_CONTAINER(g ComboBoxEntryWidget),399 gtk_container_forall(GTK_CONTAINER(gParts->comboBoxEntryWidget), 434 400 moz_gtk_get_combo_box_entry_inner_widgets, 435 401 NULL); 436 402 437 if (!g ComboBoxEntryTextareaWidget) {403 if (!gParts->comboBoxEntryTextareaWidget) { 438 404 ensure_entry_widget(); 439 g ComboBoxEntryTextareaWidget = gEntryWidget;440 } 441 442 if (g ComboBoxEntryButtonWidget) {405 gParts->comboBoxEntryTextareaWidget = gParts->entryWidget; 406 } 407 408 if (gParts->comboBoxEntryButtonWidget) { 443 409 /* Get the Arrow inside the Button */ 444 buttonChild = GTK_BIN(g ComboBoxEntryButtonWidget)->child;410 buttonChild = GTK_BIN(gParts->comboBoxEntryButtonWidget)->child; 445 411 if (GTK_IS_HBOX(buttonChild)) { 446 412 /* appears-as-list = FALSE, cell-view = TRUE; the button … … 457 423 /* appears-as-list = TRUE, or cell-view = FALSE; 458 424 * the button only contains an arrow */ 459 g ComboBoxEntryArrowWidget = buttonChild;425 gParts->comboBoxEntryArrowWidget = buttonChild; 460 426 g_object_add_weak_pointer(G_OBJECT(buttonChild), (gpointer) 461 &g ComboBoxEntryArrowWidget);462 gtk_widget_realize(g ComboBoxEntryArrowWidget);463 g_object_set_data(G_OBJECT(g ComboBoxEntryArrowWidget),427 &gParts->comboBoxEntryArrowWidget); 428 gtk_widget_realize(gParts->comboBoxEntryArrowWidget); 429 g_object_set_data(G_OBJECT(gParts->comboBoxEntryArrowWidget), 464 430 "transparent-bg-hint", GINT_TO_POINTER(TRUE)); 465 431 } … … 469 435 * crashing. */ 470 436 ensure_toggle_button_widget(); 471 g ComboBoxEntryButtonWidget = gToggleButtonWidget;472 } 473 474 if (!g ComboBoxEntryArrowWidget) {437 gParts->comboBoxEntryButtonWidget = gParts->toggleButtonWidget; 438 } 439 440 if (!gParts->comboBoxEntryArrowWidget) { 475 441 /* Shouldn't be reached with current internal gtk implementation; 476 * we g ButtonArrowWidget as last resort fallback to avoid442 * we gParts->buttonArrowWidget as last resort fallback to avoid 477 443 * crashing. */ 478 444 ensure_button_arrow_widget(); 479 g ComboBoxEntryArrowWidget = gButtonArrowWidget;445 gParts->comboBoxEntryArrowWidget = gParts->buttonArrowWidget; 480 446 } 481 447 … … 487 453 ensure_handlebox_widget() 488 454 { 489 if (!g HandleBoxWidget) {490 g HandleBoxWidget = gtk_handle_box_new();491 setup_widget_prototype(g HandleBoxWidget);455 if (!gParts->handleBoxWidget) { 456 gParts->handleBoxWidget = gtk_handle_box_new(); 457 setup_widget_prototype(gParts->handleBoxWidget); 492 458 } 493 459 return MOZ_GTK_SUCCESS; … … 497 463 ensure_toolbar_widget() 498 464 { 499 if (!g ToolbarWidget) {465 if (!gParts->toolbarWidget) { 500 466 ensure_handlebox_widget(); 501 g ToolbarWidget = gtk_toolbar_new();502 gtk_container_add(GTK_CONTAINER(g HandleBoxWidget), gToolbarWidget);503 gtk_widget_realize(g ToolbarWidget);504 g_object_set_data(G_OBJECT(g ToolbarWidget), "transparent-bg-hint", GINT_TO_POINTER(TRUE));467 gParts->toolbarWidget = gtk_toolbar_new(); 468 gtk_container_add(GTK_CONTAINER(gParts->handleBoxWidget), gParts->toolbarWidget); 469 gtk_widget_realize(gParts->toolbarWidget); 470 g_object_set_data(G_OBJECT(gParts->toolbarWidget), "transparent-bg-hint", GINT_TO_POINTER(TRUE)); 505 471 } 506 472 return MOZ_GTK_SUCCESS; … … 510 476 ensure_toolbar_separator_widget() 511 477 { 512 if (!g ToolbarSeparatorWidget) {478 if (!gParts->toolbarSeparatorWidget) { 513 479 ensure_toolbar_widget(); 514 g ToolbarSeparatorWidget = GTK_WIDGET(gtk_separator_tool_item_new());515 setup_widget_prototype(g ToolbarSeparatorWidget);480 gParts->toolbarSeparatorWidget = GTK_WIDGET(gtk_separator_tool_item_new()); 481 setup_widget_prototype(gParts->toolbarSeparatorWidget); 516 482 } 517 483 return MOZ_GTK_SUCCESS; … … 521 487 ensure_tooltip_widget() 522 488 { 523 if (!g TooltipWidget) {524 g TooltipWidget = gtk_window_new(GTK_WINDOW_POPUP);525 gtk_widget_realize(g TooltipWidget);526 moz_gtk_set_widget_name(g TooltipWidget);489 if (!gParts->tooltipWidget) { 490 gParts->tooltipWidget = gtk_window_new(GTK_WINDOW_POPUP); 491 gtk_widget_realize(gParts->tooltipWidget); 492 moz_gtk_set_widget_name(gParts->tooltipWidget); 527 493 } 528 494 return MOZ_GTK_SUCCESS; … … 532 498 ensure_tab_widget() 533 499 { 534 if (!g TabWidget) {535 g TabWidget = gtk_notebook_new();536 setup_widget_prototype(g TabWidget);500 if (!gParts->tabWidget) { 501 gParts->tabWidget = gtk_notebook_new(); 502 setup_widget_prototype(gParts->tabWidget); 537 503 } 538 504 return MOZ_GTK_SUCCESS; … … 542 508 ensure_progress_widget() 543 509 { 544 if (!gP rogressWidget) {545 gP rogressWidget = gtk_progress_bar_new();546 setup_widget_prototype(gP rogressWidget);510 if (!gParts->progresWidget) { 511 gParts->progresWidget = gtk_progress_bar_new(); 512 setup_widget_prototype(gParts->progresWidget); 547 513 } 548 514 return MOZ_GTK_SUCCESS; … … 552 518 ensure_statusbar_widget() 553 519 { 554 if (!g StatusbarWidget) {555 g StatusbarWidget = gtk_statusbar_new();556 setup_widget_prototype(g StatusbarWidget);520 if (!gParts->statusbarWidget) { 521 gParts->statusbarWidget = gtk_statusbar_new(); 522 setup_widget_prototype(gParts->statusbarWidget); 557 523 } 558 524 return MOZ_GTK_SUCCESS; … … 562 528 ensure_frame_widget() 563 529 { 564 if (!g FrameWidget) {530 if (!gParts->frameWidget) { 565 531 ensure_statusbar_widget(); 566 g FrameWidget = gtk_frame_new(NULL);567 gtk_container_add(GTK_CONTAINER(g StatusbarWidget), gFrameWidget);568 gtk_widget_realize(g FrameWidget);532 gParts->frameWidget = gtk_frame_new(NULL); 533 gtk_container_add(GTK_CONTAINER(gParts->statusbarWidget), gParts->frameWidget); 534 gtk_widget_realize(gParts->frameWidget); 569 535 } 570 536 return MOZ_GTK_SUCCESS; … … 574 540 ensure_menu_bar_widget() 575 541 { 576 if (!g MenuBarWidget) {577 g MenuBarWidget = gtk_menu_bar_new();578 setup_widget_prototype(g MenuBarWidget);542 if (!gParts->menuBarWidget) { 543 gParts->menuBarWidget = gtk_menu_bar_new(); 544 setup_widget_prototype(gParts->menuBarWidget); 579 545 } 580 546 return MOZ_GTK_SUCCESS; … … 584 550 ensure_menu_bar_item_widget() 585 551 { 586 if (!g MenuBarItemWidget) {552 if (!gParts->menuBarItemWidget) { 587 553 ensure_menu_bar_widget(); 588 g MenuBarItemWidget = gtk_menu_item_new();589 gtk_menu_shell_append(GTK_MENU_SHELL(g MenuBarWidget),590 g MenuBarItemWidget);591 gtk_widget_realize(g MenuBarItemWidget);592 g_object_set_data(G_OBJECT(g MenuBarItemWidget),554 gParts->menuBarItemWidget = gtk_menu_item_new(); 555 gtk_menu_shell_append(GTK_MENU_SHELL(gParts->menuBarWidget), 556 gParts->menuBarItemWidget); 557 gtk_widget_realize(gParts->menuBarItemWidget); 558 g_object_set_data(G_OBJECT(gParts->menuBarItemWidget), 593 559 "transparent-bg-hint", GINT_TO_POINTER(TRUE)); 594 560 } … … 599 565 ensure_menu_popup_widget() 600 566 { 601 if (!g MenuPopupWidget) {567 if (!gParts->menuPopupWidget) { 602 568 ensure_menu_bar_item_widget(); 603 g MenuPopupWidget = gtk_menu_new();604 gtk_menu_item_set_submenu(GTK_MENU_ITEM(g MenuBarItemWidget),605 g MenuPopupWidget);606 gtk_widget_realize(g MenuPopupWidget);607 g_object_set_data(G_OBJECT(g MenuPopupWidget),569 gParts->menuPopupWidget = gtk_menu_new(); 570 gtk_menu_item_set_submenu(GTK_MENU_ITEM(gParts->menuBarItemWidget), 571 gParts->menuPopupWidget); 572 gtk_widget_realize(gParts->menuPopupWidget); 573 g_object_set_data(G_OBJECT(gParts->menuPopupWidget), 608 574 "transparent-bg-hint", GINT_TO_POINTER(TRUE)); 609 575 } … … 614 580 ensure_menu_item_widget() 615 581 { 616 if (!g MenuItemWidget) {582 if (!gParts->menuItemWidget) { 617 583 ensure_menu_popup_widget(); 618 g MenuItemWidget = gtk_menu_item_new_with_label("M");619 gtk_menu_shell_append(GTK_MENU_SHELL(g MenuPopupWidget),620 g MenuItemWidget);621 gtk_widget_realize(g MenuItemWidget);622 g_object_set_data(G_OBJECT(g MenuItemWidget),584 gParts->menuItemWidget = gtk_menu_item_new_with_label("M"); 585 gtk_menu_shell_append(GTK_MENU_SHELL(gParts->menuPopupWidget), 586 gParts->menuItemWidget); 587 gtk_widget_realize(gParts->menuItemWidget); 588 g_object_set_data(G_OBJECT(gParts->menuItemWidget), 623 589 "transparent-bg-hint", GINT_TO_POINTER(TRUE)); 624 590 } … … 629 595 ensure_image_menu_item_widget() 630 596 { 631 if (!g ImageMenuItemWidget) {597 if (!gParts->imageMenuItemWidget) { 632 598 ensure_menu_popup_widget(); 633 g ImageMenuItemWidget = gtk_image_menu_item_new();634 gtk_menu_shell_append(GTK_MENU_SHELL(g MenuPopupWidget),635 g ImageMenuItemWidget);636 gtk_widget_realize(g ImageMenuItemWidget);637 g_object_set_data(G_OBJECT(g ImageMenuItemWidget),599 gParts->imageMenuItemWidget = gtk_image_menu_item_new(); 600 gtk_menu_shell_append(GTK_MENU_SHELL(gParts->menuPopupWidget), 601 gParts->imageMenuItemWidget); 602 gtk_widget_realize(gParts->imageMenuItemWidget); 603 g_object_set_data(G_OBJECT(gParts->imageMenuItemWidget), 638 604 "transparent-bg-hint", GINT_TO_POINTER(TRUE)); 639 605 } … … 644 610 ensure_menu_separator_widget() 645 611 { 646 if (!g MenuSeparatorWidget) {612 if (!gParts->menuSeparatorWidget) { 647 613 ensure_menu_popup_widget(); 648 g MenuSeparatorWidget = gtk_separator_menu_item_new();649 gtk_menu_shell_append(GTK_MENU_SHELL(g MenuPopupWidget),650 g MenuSeparatorWidget);651 gtk_widget_realize(g MenuSeparatorWidget);652 g_object_set_data(G_OBJECT(g MenuSeparatorWidget),614 gParts->menuSeparatorWidget = gtk_separator_menu_item_new(); 615 gtk_menu_shell_append(GTK_MENU_SHELL(gParts->menuPopupWidget), 616 gParts->menuSeparatorWidget); 617 gtk_widget_realize(gParts->menuSeparatorWidget); 618 g_object_set_data(G_OBJECT(gParts->menuSeparatorWidget), 653 619 "transparent-bg-hint", GINT_TO_POINTER(TRUE)); 654 620 } … … 659 625 ensure_check_menu_item_widget() 660 626 { 661 if (!g CheckMenuItemWidget) {627 if (!gParts->checkMenuItemWidget) { 662 628 ensure_menu_popup_widget(); 663 g CheckMenuItemWidget = gtk_check_menu_item_new_with_label("M");664 gtk_menu_shell_append(GTK_MENU_SHELL(g MenuPopupWidget),665 g CheckMenuItemWidget);666 gtk_widget_realize(g CheckMenuItemWidget);667 g_object_set_data(G_OBJECT(g CheckMenuItemWidget),629 gParts->checkMenuItemWidget = gtk_check_menu_item_new_with_label("M"); 630 gtk_menu_shell_append(GTK_MENU_SHELL(gParts->menuPopupWidget), 631 gParts->checkMenuItemWidget); 632 gtk_widget_realize(gParts->checkMenuItemWidget); 633 g_object_set_data(G_OBJECT(gParts->checkMenuItemWidget), 668 634 "transparent-bg-hint", GINT_TO_POINTER(TRUE)); 669 635 } … … 674 640 ensure_tree_view_widget() 675 641 { 676 if (!g TreeViewWidget) {677 g TreeViewWidget = gtk_tree_view_new();678 setup_widget_prototype(g TreeViewWidget);642 if (!gParts->treeViewWidget) { 643 gParts->treeViewWidget = gtk_tree_view_new(); 644 setup_widget_prototype(gParts->treeViewWidget); 679 645 } 680 646 return MOZ_GTK_SUCCESS; … … 684 650 ensure_tree_header_cell_widget() 685 651 { 686 if(!g TreeHeaderCellWidget) {652 if(!gParts->treeHeaderCellWidget) { 687 653 /* 688 654 * Some GTK engines paint the first and last cell … … 706 672 firstTreeViewColumn = gtk_tree_view_column_new(); 707 673 gtk_tree_view_column_set_title(firstTreeViewColumn, "M"); 708 gtk_tree_view_append_column(GTK_TREE_VIEW(g TreeViewWidget), firstTreeViewColumn);709 710 g MiddleTreeViewColumn = gtk_tree_view_column_new();711 gtk_tree_view_column_set_title(g MiddleTreeViewColumn, "M");712 gtk_tree_view_append_column(GTK_TREE_VIEW(g TreeViewWidget),713 g MiddleTreeViewColumn);674 gtk_tree_view_append_column(GTK_TREE_VIEW(gParts->treeViewWidget), firstTreeViewColumn); 675 676 gParts->middleTreeViewColumn = gtk_tree_view_column_new(); 677 gtk_tree_view_column_set_title(gParts->middleTreeViewColumn, "M"); 678 gtk_tree_view_append_column(GTK_TREE_VIEW(gParts->treeViewWidget), 679 gParts->middleTreeViewColumn); 714 680 715 681 lastTreeViewColumn = gtk_tree_view_column_new(); 716 682 gtk_tree_view_column_set_title(lastTreeViewColumn, "M"); 717 gtk_tree_view_append_column(GTK_TREE_VIEW(g TreeViewWidget), lastTreeViewColumn);683 gtk_tree_view_append_column(GTK_TREE_VIEW(gParts->treeViewWidget), lastTreeViewColumn); 718 684 719 685 /* Use the middle column's header for our button */ 720 g TreeHeaderCellWidget = gMiddleTreeViewColumn->button;721 g TreeHeaderSortArrowWidget = gMiddleTreeViewColumn->arrow;722 g_object_set_data(G_OBJECT(g TreeHeaderCellWidget),686 gParts->treeHeaderCellWidget = gParts->middleTreeViewColumn->button; 687 gParts->treeHeaderSortArrowWidget = gParts->middleTreeViewColumn->arrow; 688 g_object_set_data(G_OBJECT(gParts->treeHeaderCellWidget), 723 689 "transparent-bg-hint", GINT_TO_POINTER(TRUE)); 724 g_object_set_data(G_OBJECT(g TreeHeaderSortArrowWidget),690 g_object_set_data(G_OBJECT(gParts->treeHeaderSortArrowWidget), 725 691 "transparent-bg-hint", GINT_TO_POINTER(TRUE)); 726 692 } … … 731 697 ensure_expander_widget() 732 698 { 733 if (!g ExpanderWidget) {734 g ExpanderWidget = gtk_expander_new("M");735 setup_widget_prototype(g ExpanderWidget);699 if (!gParts->expanderWidget) { 700 gParts->expanderWidget = gtk_expander_new("M"); 701 setup_widget_prototype(gParts->expanderWidget); 736 702 } 737 703 return MOZ_GTK_SUCCESS; … … 741 707 ensure_scrolled_window_widget() 742 708 { 743 if (!g ScrolledWindowWidget) {744 g ScrolledWindowWidget = gtk_scrolled_window_new(NULL, NULL);745 setup_widget_prototype(g ScrolledWindowWidget);709 if (!gParts->scrolledWindowWidget) { 710 gParts->scrolledWindowWidget = gtk_scrolled_window_new(NULL, NULL); 711 setup_widget_prototype(gParts->scrolledWindowWidget); 746 712 } 747 713 return MOZ_GTK_SUCCESS; … … 898 864 ensure_checkbox_widget(); 899 865 900 gtk_widget_style_get (g CheckboxWidget,866 gtk_widget_style_get (gParts->checkboxWidget, 901 867 "indicator_size", indicator_size, 902 868 "indicator_spacing", indicator_spacing, … … 911 877 ensure_radiobutton_widget(); 912 878 913 gtk_widget_style_get (g RadiobuttonWidget,879 gtk_widget_style_get (gParts->radiobuttonWidget, 914 880 "indicator_size", indicator_size, 915 881 "indicator_spacing", indicator_spacing, … … 937 903 if (orientation == GTK_ORIENTATION_HORIZONTAL) { 938 904 ensure_hpaned_widget(); 939 gtk_widget_style_get(g HPanedWidget, "handle_size", size, NULL);905 gtk_widget_style_get(gParts->hpanedWidget, "handle_size", size, NULL); 940 906 } else { 941 907 ensure_vpaned_widget(); 942 gtk_widget_style_get(g VPanedWidget, "handle_size", size, NULL);908 gtk_widget_style_get(gParts->vpanedWidget, "handle_size", size, NULL); 943 909 } 944 910 return MOZ_GTK_SUCCESS; … … 979 945 if (isradio) { 980 946 moz_gtk_radio_get_metrics(&indicator_size, &indicator_spacing); 981 w = g RadiobuttonWidget;947 w = gParts->radiobuttonWidget; 982 948 } else { 983 949 moz_gtk_checkbox_get_metrics(&indicator_size, &indicator_spacing); 984 w = g CheckboxWidget;950 w = gParts->checkboxWidget; 985 951 } 986 952 … … 1014 980 if (isradio) { 1015 981 gtk_paint_option(style, drawable, state_type, shadow_type, cliprect, 1016 g RadiobuttonWidget, "radiobutton", x, y,982 gParts->radiobuttonWidget, "radiobutton", x, y, 1017 983 width, height); 1018 984 if (state->focused) { 1019 985 gtk_paint_focus(style, drawable, GTK_STATE_ACTIVE, cliprect, 1020 g RadiobuttonWidget, "radiobutton", focus_x, focus_y,986 gParts->radiobuttonWidget, "radiobutton", focus_x, focus_y, 1021 987 focus_width, focus_height); 1022 988 } … … 1028 994 */ 1029 995 if (inconsistent) { 1030 gtk_toggle_button_set_inconsistent(GTK_TOGGLE_BUTTON(g CheckboxWidget), TRUE);996 gtk_toggle_button_set_inconsistent(GTK_TOGGLE_BUTTON(gParts->checkboxWidget), TRUE); 1031 997 shadow_type = GTK_SHADOW_ETCHED_IN; 1032 998 } else { 1033 gtk_toggle_button_set_inconsistent(GTK_TOGGLE_BUTTON(g CheckboxWidget), FALSE);999 gtk_toggle_button_set_inconsistent(GTK_TOGGLE_BUTTON(gParts->checkboxWidget), FALSE); 1034 1000 } 1035 1001 1036 1002 gtk_paint_check(style, drawable, state_type, shadow_type, cliprect, 1037 g CheckboxWidget, "checkbutton", x, y, width, height);1003 gParts->checkboxWidget, "checkbutton", x, y, width, height); 1038 1004 if (state->focused) { 1039 1005 gtk_paint_focus(style, drawable, GTK_STATE_ACTIVE, cliprect, 1040 g CheckboxWidget, "checkbutton", focus_x, focus_y,1006 gParts->checkboxWidget, "checkbutton", focus_x, focus_y, 1041 1007 focus_width, focus_height); 1042 1008 } … … 1130 1096 1131 1097 if (flags & MOZ_GTK_STEPPER_VERTICAL) 1132 scrollbar = g VertScrollbarWidget;1098 scrollbar = gParts->vertScrollbarWidget; 1133 1099 else 1134 scrollbar = g HorizScrollbarWidget;1100 scrollbar = gParts->horizScrollbarWidget; 1135 1101 1136 1102 gtk_widget_set_direction(scrollbar, direction); … … 1216 1182 1217 1183 if (widget == MOZ_GTK_SCROLLBAR_TRACK_HORIZONTAL) 1218 scrollbar = GTK_SCROLLBAR(g HorizScrollbarWidget);1184 scrollbar = GTK_SCROLLBAR(gParts->horizScrollbarWidget); 1219 1185 else 1220 scrollbar = GTK_SCROLLBAR(g VertScrollbarWidget);1186 scrollbar = GTK_SCROLLBAR(gParts->vertScrollbarWidget); 1221 1187 1222 1188 gtk_widget_set_direction(GTK_WIDGET(scrollbar), direction); … … 1259 1225 1260 1226 if (widget == MOZ_GTK_SCROLLBAR_THUMB_HORIZONTAL) 1261 scrollbar = GTK_SCROLLBAR(g HorizScrollbarWidget);1227 scrollbar = GTK_SCROLLBAR(gParts->horizScrollbarWidget); 1262 1228 else 1263 scrollbar = GTK_SCROLLBAR(g VertScrollbarWidget);1229 scrollbar = GTK_SCROLLBAR(gParts->vertScrollbarWidget); 1264 1230 1265 1231 gtk_widget_set_direction(GTK_WIDGET(scrollbar), direction); … … 1322 1288 1323 1289 ensure_spin_widget(); 1324 gtk_widget_set_direction(g SpinWidget, direction);1325 style = g SpinWidget->style;1290 gtk_widget_set_direction(gParts->spinWidget, direction); 1291 style = gParts->spinWidget->style; 1326 1292 1327 1293 TSOffsetStyleGCs(style, rect->x, rect->y); 1328 1294 gtk_paint_box(style, drawable, GTK_STATE_NORMAL, GTK_SHADOW_IN, NULL, 1329 g SpinWidget, "spinbutton",1295 gParts->spinWidget, "spinbutton", 1330 1296 rect->x, rect->y, rect->width, rect->height); 1331 1297 return MOZ_GTK_SUCCESS; … … 1344 1310 1345 1311 ensure_spin_widget(); 1346 style = g SpinWidget->style;1347 gtk_widget_set_direction(g SpinWidget, direction);1312 style = gParts->spinWidget->style; 1313 gtk_widget_set_direction(gParts->spinWidget, direction); 1348 1314 1349 1315 TSOffsetStyleGCs(style, rect->x, rect->y); 1350 gtk_paint_box(style, drawable, state_type, shadow_type, NULL, g SpinWidget,1316 gtk_paint_box(style, drawable, state_type, shadow_type, NULL, gParts->spinWidget, 1351 1317 isDown ? "spinbutton_down" : "spinbutton_up", 1352 1318 rect->x, rect->y, rect->width, rect->height); … … 1360 1326 1361 1327 gtk_paint_arrow(style, drawable, state_type, shadow_type, NULL, 1362 g SpinWidget, "spinbutton",1328 gParts->spinWidget, "spinbutton", 1363 1329 isDown ? GTK_ARROW_DOWN : GTK_ARROW_UP, TRUE, 1364 1330 arrow_rect.x, arrow_rect.y, … … 1379 1345 1380 1346 ensure_scale_widget(); 1381 widget = ((flags == GTK_ORIENTATION_HORIZONTAL) ? g HScaleWidget : gVScaleWidget);1347 widget = ((flags == GTK_ORIENTATION_HORIZONTAL) ? gParts->hScaleWidget : gParts->vScaleWidget); 1382 1348 gtk_widget_set_direction(widget, direction); 1383 1349 … … 1420 1386 1421 1387 ensure_scale_widget(); 1422 widget = ((flags == GTK_ORIENTATION_HORIZONTAL) ? g HScaleWidget : gVScaleWidget);1388 widget = ((flags == GTK_ORIENTATION_HORIZONTAL) ? gParts->hScaleWidget : gParts->vScaleWidget); 1423 1389 gtk_widget_set_direction(widget, direction); 1424 1390 … … 1455 1421 1456 1422 ensure_handlebox_widget(); 1457 gtk_widget_set_direction(g HandleBoxWidget, direction);1458 1459 style = g HandleBoxWidget->style;1460 shadow_type = GTK_HANDLE_BOX(g HandleBoxWidget)->shadow_type;1423 gtk_widget_set_direction(gParts->handleBoxWidget, direction); 1424 1425 style = gParts->handleBoxWidget->style; 1426 shadow_type = GTK_HANDLE_BOX(gParts->handleBoxWidget)->shadow_type; 1461 1427 1462 1428 TSOffsetStyleGCs(style, rect->x, rect->y); 1463 1429 gtk_paint_box(style, drawable, state_type, shadow_type, cliprect, 1464 g HandleBoxWidget, "handlebox_bin", rect->x, rect->y,1430 gParts->handleBoxWidget, "handlebox_bin", rect->x, rect->y, 1465 1431 rect->width, rect->height); 1466 1432 … … 1475 1441 1476 1442 ensure_hpaned_widget(); 1477 gtk_paint_handle(g HPanedWidget->style, drawable, hpaned_state,1478 GTK_SHADOW_NONE, cliprect, g HPanedWidget, "paned",1443 gtk_paint_handle(gParts->hpanedWidget->style, drawable, hpaned_state, 1444 GTK_SHADOW_NONE, cliprect, gParts->hpanedWidget, "paned", 1479 1445 rect->x, rect->y, rect->width, rect->height, 1480 1446 GTK_ORIENTATION_VERTICAL); … … 1490 1456 1491 1457 ensure_vpaned_widget(); 1492 gtk_paint_handle(g VPanedWidget->style, drawable, vpaned_state,1493 GTK_SHADOW_NONE, cliprect, g VPanedWidget, "paned",1458 gtk_paint_handle(gParts->vpanedWidget->style, drawable, vpaned_state, 1459 GTK_SHADOW_NONE, cliprect, gParts->vpanedWidget, "paned", 1494 1460 rect->x, rect->y, rect->width, rect->height, 1495 1461 GTK_ORIENTATION_HORIZONTAL); … … 1509 1475 1510 1476 ensure_entry_widget(); 1511 gtk_draw_insertion_cursor(g EntryWidget, drawable, cliprect,1477 gtk_draw_insertion_cursor(gParts->entryWidget, drawable, cliprect, 1512 1478 &location, TRUE, direction, FALSE); 1513 1479 … … 1629 1595 ensure_scrolled_window_widget(); 1630 1596 1631 gtk_widget_set_direction(g TreeViewWidget, direction);1632 gtk_widget_set_direction(g ScrolledWindowWidget, direction);1597 gtk_widget_set_direction(gParts->treeViewWidget, direction); 1598 gtk_widget_set_direction(gParts->scrolledWindowWidget, direction); 1633 1599 1634 1600 /* only handle disabled and normal states, otherwise the whole background … … 1639 1605 * which contains the cells to the treeview base color. 1640 1606 * If we don't set it here the background color will not be correct.*/ 1641 gtk_widget_modify_bg(g TreeViewWidget, state_type,1642 &g TreeViewWidget->style->base[state_type]);1643 1644 style = g ScrolledWindowWidget->style;1607 gtk_widget_modify_bg(gParts->treeViewWidget, state_type, 1608 &gParts->treeViewWidget->style->base[state_type]); 1609 1610 style = gParts->scrolledWindowWidget->style; 1645 1611 xthickness = XTHICKNESS(style); 1646 1612 ythickness = YTHICKNESS(style); 1647 1613 1648 TSOffsetStyleGCs(g TreeViewWidget->style, rect->x, rect->y);1614 TSOffsetStyleGCs(gParts->treeViewWidget->style, rect->x, rect->y); 1649 1615 TSOffsetStyleGCs(style, rect->x, rect->y); 1650 1616 1651 gtk_paint_flat_box(g TreeViewWidget->style, drawable, state_type,1652 GTK_SHADOW_NONE, cliprect, g TreeViewWidget, "treeview",1617 gtk_paint_flat_box(gParts->treeViewWidget->style, drawable, state_type, 1618 GTK_SHADOW_NONE, cliprect, gParts->treeViewWidget, "treeview", 1653 1619 rect->x + xthickness, rect->y + ythickness, 1654 1620 rect->width - 2 * xthickness, … … 1656 1622 1657 1623 gtk_paint_shadow(style, drawable, GTK_STATE_NORMAL, GTK_SHADOW_IN, 1658 cliprect, g ScrolledWindowWidget, "scrolled_window",1624 cliprect, gParts->scrolledWindowWidget, "scrolled_window", 1659 1625 rect->x, rect->y, rect->width, rect->height); 1660 1626 … … 1667 1633 gboolean isSorted, GtkTextDirection direction) 1668 1634 { 1669 gtk_tree_view_column_set_sort_indicator(g MiddleTreeViewColumn,1635 gtk_tree_view_column_set_sort_indicator(gParts->middleTreeViewColumn, 1670 1636 isSorted); 1671 1637 1672 1638 moz_gtk_button_paint(drawable, rect, cliprect, state, GTK_RELIEF_NORMAL, 1673 g TreeHeaderCellWidget, direction);1639 gParts->treeHeaderCellWidget, direction); 1674 1640 return MOZ_GTK_SUCCESS; 1675 1641 } … … 1688 1654 1689 1655 ensure_tree_header_cell_widget(); 1690 gtk_widget_set_direction(g TreeHeaderSortArrowWidget, direction);1656 gtk_widget_set_direction(gParts->treeHeaderSortArrowWidget, direction); 1691 1657 1692 1658 /* hard code these values */ … … 1696 1662 arrow_rect.y = rect->y + (rect->height - arrow_rect.height) / 2; 1697 1663 1698 style = g TreeHeaderSortArrowWidget->style;1664 style = gParts->treeHeaderSortArrowWidget->style; 1699 1665 TSOffsetStyleGCs(style, arrow_rect.x, arrow_rect.y); 1700 1666 1701 1667 gtk_paint_arrow(style, drawable, state_type, shadow_type, cliprect, 1702 g TreeHeaderSortArrowWidget, "arrow", arrow_type, TRUE,1668 gParts->treeHeaderSortArrowWidget, "arrow", arrow_type, TRUE, 1703 1669 arrow_rect.x, arrow_rect.y, 1704 1670 arrow_rect.width, arrow_rect.height); … … 1717 1683 1718 1684 ensure_tree_view_widget(); 1719 gtk_widget_set_direction(g TreeViewWidget, direction);1720 1721 style = g TreeViewWidget->style;1685 gtk_widget_set_direction(gParts->treeViewWidget, direction); 1686 1687 style = gParts->treeViewWidget->style; 1722 1688 1723 1689 /* Because the frame we get is of the entire treeview, we can't get the precise … … 1726 1692 1727 1693 TSOffsetStyleGCs(style, rect->x, rect->y); 1728 gtk_paint_expander(style, drawable, state_type, cliprect, g TreeViewWidget, "treeview",1694 gtk_paint_expander(style, drawable, state_type, cliprect, gParts->treeViewWidget, "treeview", 1729 1695 rect->x + rect->width / 2, rect->y + rect->height / 2, expander_state); 1730 1696 … … 1742 1708 1743 1709 ensure_expander_widget(); 1744 gtk_widget_set_direction(g ExpanderWidget, direction);1745 1746 style = g ExpanderWidget->style;1710 gtk_widget_set_direction(gParts->expanderWidget, direction); 1711 1712 style = gParts->expanderWidget->style; 1747 1713 1748 1714 TSOffsetStyleGCs(style, rect->x, rect->y); 1749 gtk_paint_expander(style, drawable, state_type, cliprect, g ExpanderWidget, "expander",1715 gtk_paint_expander(style, drawable, state_type, cliprect, gParts->expanderWidget, "expander", 1750 1716 rect->x + rect->width / 2, rect->y + rect->height / 2, expander_state); 1751 1717 … … 1759 1725 { 1760 1726 GdkRectangle arrow_rect, real_arrow_rect; 1761 gint arrow_size,separator_width;1727 gint /* arrow_size, */ separator_width; 1762 1728 gboolean wide_separators; 1763 1729 GtkStateType state_type = ConvertGtkState(state); … … 1768 1734 ensure_combo_box_widgets(); 1769 1735 1770 /* Also sets the direction on g ComboBoxButtonWidget, which is then1736 /* Also sets the direction on gParts->comboBoxButtonWidget, which is then 1771 1737 * inherited by the separator and arrow */ 1772 1738 moz_gtk_button_paint(drawable, rect, cliprect, state, GTK_RELIEF_NORMAL, 1773 g ComboBoxButtonWidget, direction);1774 1775 calculate_button_inner_rect(g ComboBoxButtonWidget,1739 gParts->comboBoxButtonWidget, direction); 1740 1741 calculate_button_inner_rect(gParts->comboBoxButtonWidget, 1776 1742 rect, &arrow_rect, direction, ishtml); 1777 1743 /* Now arrow_rect contains the inner rect ; we want to correct the width 1778 1744 * to what the arrow needs (see gtk_combo_box_size_allocate) */ 1779 gtk_widget_size_request(g ComboBoxArrowWidget, &arrow_req);1745 gtk_widget_size_request(gParts->comboBoxArrowWidget, &arrow_req); 1780 1746 if (direction == GTK_TEXT_DIR_LTR) 1781 1747 arrow_rect.x += arrow_rect.width - arrow_req.width; 1782 1748 arrow_rect.width = arrow_req.width; 1783 1749 1784 calculate_arrow_rect(g ComboBoxArrowWidget,1750 calculate_arrow_rect(gParts->comboBoxArrowWidget, 1785 1751 &arrow_rect, &real_arrow_rect, direction); 1786 1752 1787 style = g ComboBoxArrowWidget->style;1753 style = gParts->comboBoxArrowWidget->style; 1788 1754 TSOffsetStyleGCs(style, rect->x, rect->y); 1789 1755 1790 gtk_widget_size_allocate(g ComboBoxWidget, rect);1756 gtk_widget_size_allocate(gParts->comboBoxWidget, rect); 1791 1757 1792 1758 gtk_paint_arrow(style, drawable, state_type, shadow_type, cliprect, 1793 g ComboBoxArrowWidget, "arrow", GTK_ARROW_DOWN, TRUE,1759 gParts->comboBoxArrowWidget, "arrow", GTK_ARROW_DOWN, TRUE, 1794 1760 real_arrow_rect.x, real_arrow_rect.y, 1795 1761 real_arrow_rect.width, real_arrow_rect.height); … … 1797 1763 1798 1764 /* If there is no separator in the theme, there's nothing left to do. */ 1799 if (!g ComboBoxSeparatorWidget)1765 if (!gParts->comboBoxSeparatorWidget) 1800 1766 return MOZ_GTK_SUCCESS; 1801 1767 1802 style = g ComboBoxSeparatorWidget->style;1768 style = gParts->comboBoxSeparatorWidget->style; 1803 1769 TSOffsetStyleGCs(style, rect->x, rect->y); 1804 1770 1805 gtk_widget_style_get(g ComboBoxSeparatorWidget,1771 gtk_widget_style_get(gParts->comboBoxSeparatorWidget, 1806 1772 "wide-separators", &wide_separators, 1807 1773 "separator-width", &separator_width, … … 1816 1782 gtk_paint_box(style, drawable, 1817 1783 GTK_STATE_NORMAL, GTK_SHADOW_ETCHED_OUT, 1818 cliprect, g ComboBoxSeparatorWidget, "vseparator",1784 cliprect, gParts->comboBoxSeparatorWidget, "vseparator", 1819 1785 arrow_rect.x, arrow_rect.y, 1820 1786 separator_width, arrow_rect.height); … … 1826 1792 1827 1793 gtk_paint_vline(style, drawable, GTK_STATE_NORMAL, cliprect, 1828 g ComboBoxSeparatorWidget, "vseparator",1794 gParts->comboBoxSeparatorWidget, "vseparator", 1829 1795 arrow_rect.y, arrow_rect.y + arrow_rect.height, 1830 1796 arrow_rect.x); … … 1844 1810 1845 1811 ensure_button_arrow_widget(); 1846 style = g ButtonArrowWidget->style;1847 1848 calculate_arrow_rect(g ButtonArrowWidget, rect, &arrow_rect,1812 style = gParts->buttonArrowWidget->style; 1813 1814 calculate_arrow_rect(gParts->buttonArrowWidget, rect, &arrow_rect, 1849 1815 GTK_TEXT_DIR_LTR); 1850 1816 1851 1817 TSOffsetStyleGCs(style, arrow_rect.x, arrow_rect.y); 1852 1818 gtk_paint_arrow(style, drawable, state_type, shadow_type, cliprect, 1853 g ButtonArrowWidget, "arrow", GTK_ARROW_DOWN, TRUE,1819 gParts->buttonArrowWidget, "arrow", GTK_ARROW_DOWN, TRUE, 1854 1820 arrow_rect.x, arrow_rect.y, arrow_rect.width, arrow_rect.height); 1855 1821 … … 1875 1841 /* Some themes draw a complementary focus ring for the dropdown button 1876 1842 * when the dropdown entry has focus */ 1877 GTK_WIDGET_SET_FLAGS(g ComboBoxEntryTextareaWidget, GTK_HAS_FOCUS);1843 GTK_WIDGET_SET_FLAGS(gParts->comboBoxEntryTextareaWidget, GTK_HAS_FOCUS); 1878 1844 } 1879 1845 1880 1846 moz_gtk_button_paint(drawable, rect, cliprect, state, GTK_RELIEF_NORMAL, 1881 g ComboBoxEntryButtonWidget, direction);1847 gParts->comboBoxEntryButtonWidget, direction); 1882 1848 1883 1849 if (input_focus) 1884 GTK_WIDGET_UNSET_FLAGS(g ComboBoxEntryTextareaWidget, GTK_HAS_FOCUS);1885 1886 calculate_button_inner_rect(g ComboBoxEntryButtonWidget,1850 GTK_WIDGET_UNSET_FLAGS(gParts->comboBoxEntryTextareaWidget, GTK_HAS_FOCUS); 1851 1852 calculate_button_inner_rect(gParts->comboBoxEntryButtonWidget, 1887 1853 rect, &arrow_rect, direction, FALSE); 1888 1854 if (state_type == GTK_STATE_ACTIVE) { 1889 gtk_widget_style_get(g ComboBoxEntryButtonWidget,1855 gtk_widget_style_get(gParts->comboBoxEntryButtonWidget, 1890 1856 "child-displacement-x", &x_displacement, 1891 1857 "child-displacement-y", &y_displacement, … … 1895 1861 } 1896 1862 1897 calculate_arrow_rect(g ComboBoxEntryArrowWidget,1863 calculate_arrow_rect(gParts->comboBoxEntryArrowWidget, 1898 1864 &arrow_rect, &real_arrow_rect, direction); 1899 1865 1900 style = g ComboBoxEntryArrowWidget->style;1866 style = gParts->comboBoxEntryArrowWidget->style; 1901 1867 TSOffsetStyleGCs(style, real_arrow_rect.x, real_arrow_rect.y); 1902 1868 1903 1869 gtk_paint_arrow(style, drawable, state_type, shadow_type, cliprect, 1904 g ComboBoxEntryArrowWidget, "arrow", GTK_ARROW_DOWN, TRUE,1870 gParts->comboBoxEntryArrowWidget, "arrow", GTK_ARROW_DOWN, TRUE, 1905 1871 real_arrow_rect.x, real_arrow_rect.y, 1906 1872 real_arrow_rect.width, real_arrow_rect.height); … … 1922 1888 if (isradio) { 1923 1889 ensure_radiobutton_widget(); 1924 widget = g RadiobuttonWidget;1890 widget = gParts->radiobuttonWidget; 1925 1891 } else { 1926 1892 ensure_checkbox_widget(); 1927 widget = g CheckboxWidget;1893 widget = gParts->checkboxWidget; 1928 1894 } 1929 1895 gtk_widget_set_direction(widget, direction); … … 1973 1939 if (isradio) { 1974 1940 ensure_radiobutton_widget(); 1975 widget = g RadiobuttonWidget;1941 widget = gParts->radiobuttonWidget; 1976 1942 } else { 1977 1943 ensure_checkbox_widget(); 1978 widget = g CheckboxWidget;1944 widget = gParts->checkboxWidget; 1979 1945 } 1980 1946 gtk_widget_set_direction(widget, direction); … … 2005 1971 2006 1972 ensure_toolbar_widget(); 2007 gtk_widget_set_direction(g ToolbarWidget, direction);2008 2009 style = g ToolbarWidget->style;1973 gtk_widget_set_direction(gParts->toolbarWidget, direction); 1974 1975 style = gParts->toolbarWidget->style; 2010 1976 2011 1977 TSOffsetStyleGCs(style, rect->x, rect->y); … … 2016 1982 rect->width, rect->height); 2017 1983 2018 gtk_widget_style_get(g ToolbarWidget, "shadow-type", &shadow_type, NULL);1984 gtk_widget_style_get(gParts->toolbarWidget, "shadow-type", &shadow_type, NULL); 2019 1985 2020 1986 gtk_paint_box (style, drawable, GTK_STATE_NORMAL, shadow_type, 2021 cliprect, g ToolbarWidget, "toolbar",1987 cliprect, gParts->toolbarWidget, "toolbar", 2022 1988 rect->x, rect->y, rect->width, rect->height); 2023 1989 … … 2040 2006 2041 2007 ensure_toolbar_separator_widget(); 2042 gtk_widget_set_direction(g ToolbarSeparatorWidget, direction);2043 2044 style = g ToolbarSeparatorWidget->style;2045 2046 gtk_widget_style_get(g ToolbarWidget,2008 gtk_widget_set_direction(gParts->toolbarSeparatorWidget, direction); 2009 2010 style = gParts->toolbarSeparatorWidget->style; 2011 2012 gtk_widget_style_get(gParts->toolbarWidget, 2047 2013 "wide-separators", &wide_separators, 2048 2014 "separator-width", &separator_width, … … 2057 2023 gtk_paint_box(style, drawable, 2058 2024 GTK_STATE_NORMAL, GTK_SHADOW_ETCHED_OUT, 2059 cliprect, g ToolbarWidget, "vseparator",2025 cliprect, gParts->toolbarWidget, "vseparator", 2060 2026 rect->x + (rect->width - separator_width) / 2, 2061 2027 rect->y + rect->height * start_fraction, … … 2070 2036 2071 2037 gtk_paint_vline(style, drawable, 2072 GTK_STATE_NORMAL, cliprect, g ToolbarSeparatorWidget,2038 GTK_STATE_NORMAL, cliprect, gParts->toolbarSeparatorWidget, 2073 2039 "toolbar", 2074 2040 rect->y + rect->height * start_fraction, … … 2087 2053 2088 2054 ensure_tooltip_widget(); 2089 gtk_widget_set_direction(g TooltipWidget, direction);2055 gtk_widget_set_direction(gParts->tooltipWidget, direction); 2090 2056 2091 2057 style = gtk_rc_get_style_by_paths(gtk_settings_get_default(), … … 2093 2059 GTK_TYPE_WINDOW); 2094 2060 2095 style = gtk_style_attach(style, g TooltipWidget->window);2061 style = gtk_style_attach(style, gParts->tooltipWidget->window); 2096 2062 TSOffsetStyleGCs(style, rect->x, rect->y); 2097 2063 gtk_paint_flat_box(style, drawable, GTK_STATE_NORMAL, GTK_SHADOW_OUT, 2098 cliprect, g TooltipWidget, "tooltip",2064 cliprect, gParts->tooltipWidget, "tooltip", 2099 2065 rect->x, rect->y, rect->width, rect->height); 2100 2066 … … 2111 2077 2112 2078 ensure_window_widget(); 2113 gtk_widget_set_direction(gP rotoWindow, direction);2114 2115 style = gP rotoWindow->style;2079 gtk_widget_set_direction(gParts->protoWindow, direction); 2080 2081 style = gParts->protoWindow->style; 2116 2082 2117 2083 TSOffsetStyleGCs(style, rect->x, rect->y); 2118 2084 2119 gtk_paint_resize_grip(style, drawable, state_type, cliprect, gP rotoWindow,2085 gtk_paint_resize_grip(style, drawable, state_type, cliprect, gParts->protoWindow, 2120 2086 NULL, (direction == GTK_TEXT_DIR_LTR) ? 2121 2087 GDK_WINDOW_EDGE_SOUTH_EAST : … … 2133 2099 2134 2100 ensure_frame_widget(); 2135 gtk_widget_set_direction(g FrameWidget, direction);2136 2137 style = g FrameWidget->style;2138 2139 gtk_widget_style_get(g StatusbarWidget, "shadow-type", &shadow_type, NULL);2101 gtk_widget_set_direction(gParts->frameWidget, direction); 2102 2103 style = gParts->frameWidget->style; 2104 2105 gtk_widget_style_get(gParts->statusbarWidget, "shadow-type", &shadow_type, NULL); 2140 2106 2141 2107 TSOffsetStyleGCs(style, rect->x, rect->y); 2142 2108 gtk_paint_shadow(style, drawable, GTK_STATE_NORMAL, shadow_type, 2143 cliprect, g FrameWidget, "frame", rect->x, rect->y,2109 cliprect, gParts->frameWidget, "frame", rect->x, rect->y, 2144 2110 rect->width, rect->height); 2145 2111 … … 2154 2120 2155 2121 ensure_progress_widget(); 2156 gtk_widget_set_direction(gP rogressWidget, direction);2157 2158 style = gP rogressWidget->style;2122 gtk_widget_set_direction(gParts->progresWidget, direction); 2123 2124 style = gParts->progresWidget->style; 2159 2125 2160 2126 TSOffsetStyleGCs(style, rect->x, rect->y); 2161 2127 gtk_paint_box(style, drawable, GTK_STATE_NORMAL, GTK_SHADOW_IN, 2162 cliprect, gP rogressWidget, "trough", rect->x, rect->y,2128 cliprect, gParts->progresWidget, "trough", rect->x, rect->y, 2163 2129 rect->width, rect->height); 2164 2130 … … 2173 2139 2174 2140 ensure_progress_widget(); 2175 gtk_widget_set_direction(gP rogressWidget, direction);2176 2177 style = gP rogressWidget->style;2141 gtk_widget_set_direction(gParts->progresWidget, direction); 2142 2143 style = gParts->progresWidget->style; 2178 2144 2179 2145 TSOffsetStyleGCs(style, rect->x, rect->y); 2180 2146 gtk_paint_box(style, drawable, GTK_STATE_PRELIGHT, GTK_SHADOW_OUT, 2181 cliprect, gP rogressWidget, "bar", rect->x, rect->y,2147 cliprect, gParts->progresWidget, "bar", rect->x, rect->y, 2182 2148 rect->width, rect->height); 2183 2149 … … 2189 2155 { 2190 2156 ensure_tab_widget(); 2191 if (YTHICKNESS(g TabWidget->style) < 2)2157 if (YTHICKNESS(gParts->tabWidget->style) < 2) 2192 2158 return 2; /* some themes don't set ythickness correctly */ 2193 2159 2194 return YTHICKNESS(g TabWidget->style);2160 return YTHICKNESS(gParts->tabWidget->style); 2195 2161 } 2196 2162 … … 2208 2174 2209 2175 ensure_tab_widget(); 2210 gtk_widget_set_direction(g TabWidget, direction);2211 2212 style = g TabWidget->style;2176 gtk_widget_set_direction(gParts->tabWidget, direction); 2177 2178 style = gParts->tabWidget->style; 2213 2179 TSOffsetStyleGCs(style, rect->x, rect->y); 2214 2180 … … 2216 2182 /* Only draw the tab */ 2217 2183 gtk_paint_extension(style, drawable, GTK_STATE_ACTIVE, GTK_SHADOW_OUT, 2218 cliprect, g TabWidget, "tab",2184 cliprect, gParts->tabWidget, "tab", 2219 2185 rect->x, rect->y, rect->width, rect->height, 2220 2186 (flags & MOZ_GTK_TAB_BOTTOM) ? … … 2283 2249 /* Draw the tab */ 2284 2250 gtk_paint_extension(style, drawable, GTK_STATE_NORMAL, 2285 GTK_SHADOW_OUT, cliprect, g TabWidget, "tab",2251 GTK_SHADOW_OUT, cliprect, gParts->tabWidget, "tab", 2286 2252 rect->x, rect->y + gap_voffset, rect->width, 2287 2253 rect->height - gap_voffset, GTK_POS_TOP); … … 2296 2262 rect->width, gap_height); 2297 2263 gtk_paint_box_gap(style, drawable, GTK_STATE_NORMAL, GTK_SHADOW_OUT, 2298 cliprect, g TabWidget, "notebook",2264 cliprect, gParts->tabWidget, "notebook", 2299 2265 rect->x - gap_loffset, 2300 2266 rect->y + gap_voffset - 3 * gap_height, … … 2308 2274 /* Draw the tab */ 2309 2275 gtk_paint_extension(style, drawable, GTK_STATE_NORMAL, 2310 GTK_SHADOW_OUT, cliprect, g TabWidget, "tab",2276 GTK_SHADOW_OUT, cliprect, gParts->tabWidget, "tab", 2311 2277 rect->x, rect->y, rect->width, 2312 2278 rect->height - gap_voffset, GTK_POS_BOTTOM); … … 2321 2287 rect->width, gap_height); 2322 2288 gtk_paint_box_gap(style, drawable, GTK_STATE_NORMAL, GTK_SHADOW_OUT, 2323 cliprect, g TabWidget, "notebook",2289 cliprect, gParts->tabWidget, "notebook", 2324 2290 rect->x - gap_loffset, 2325 2291 rect->y + rect->height - gap_voffset, … … 2345 2311 2346 2312 ensure_tab_widget(); 2347 gtk_widget_set_direction(g TabWidget, direction);2348 2349 style = g TabWidget->style;2313 gtk_widget_set_direction(gParts->tabWidget, direction); 2314 2315 style = gParts->tabWidget->style; 2350 2316 2351 2317 TSOffsetStyleGCs(style, rect->x, rect->y); 2352 2318 gtk_paint_box_gap(style, drawable, GTK_STATE_NORMAL, GTK_SHADOW_OUT, 2353 cliprect, g TabWidget, "notebook", rect->x, rect->y,2319 cliprect, gParts->tabWidget, "notebook", rect->x, rect->y, 2354 2320 rect->width, rect->height, 2355 2321 GTK_POS_TOP, -10, 0); … … 2373 2339 ensure_tab_widget(); 2374 2340 2375 style = g TabWidget->style;2341 style = gParts->tabWidget->style; 2376 2342 TSOffsetStyleGCs(style, rect->x, rect->y); 2377 2343 … … 2382 2348 2383 2349 gtk_paint_arrow(style, drawable, state_type, shadow_type, NULL, 2384 g TabWidget, "notebook", arrow_type, TRUE,2350 gParts->tabWidget, "notebook", arrow_type, TRUE, 2385 2351 x, y, arrow_size, arrow_size); 2386 2352 … … 2395 2361 GtkShadowType shadow_type; 2396 2362 ensure_menu_bar_widget(); 2397 gtk_widget_set_direction(g MenuBarWidget, direction);2398 2399 gtk_widget_style_get(g MenuBarWidget, "shadow-type", &shadow_type, NULL);2400 2401 style = g MenuBarWidget->style;2363 gtk_widget_set_direction(gParts->menuBarWidget, direction); 2364 2365 gtk_widget_style_get(gParts->menuBarWidget, "shadow-type", &shadow_type, NULL); 2366 2367 style = gParts->menuBarWidget->style; 2402 2368 2403 2369 TSOffsetStyleGCs(style, rect->x, rect->y); … … 2407 2373 2408 2374 gtk_paint_box(style, drawable, GTK_STATE_NORMAL, shadow_type, 2409 cliprect, g MenuBarWidget, "menubar", rect->x, rect->y,2375 cliprect, gParts->menuBarWidget, "menubar", rect->x, rect->y, 2410 2376 rect->width, rect->height); 2411 2377 return MOZ_GTK_SUCCESS; … … 2418 2384 GtkStyle* style; 2419 2385 ensure_menu_popup_widget(); 2420 gtk_widget_set_direction(g MenuPopupWidget, direction);2421 2422 style = g MenuPopupWidget->style;2386 gtk_widget_set_direction(gParts->menuPopupWidget, direction); 2387 2388 style = gParts->menuPopupWidget->style; 2423 2389 2424 2390 TSOffsetStyleGCs(style, rect->x, rect->y); … … 2427 2393 rect->width, rect->height); 2428 2394 gtk_paint_box(style, drawable, GTK_STATE_NORMAL, GTK_SHADOW_OUT, 2429 cliprect, g MenuPopupWidget, "menu",2395 cliprect, gParts->menuPopupWidget, "menu", 2430 2396 rect->x, rect->y, rect->width, rect->height); 2431 2397 … … 2444 2410 2445 2411 ensure_menu_separator_widget(); 2446 gtk_widget_set_direction(g MenuSeparatorWidget, direction);2447 2448 style = g MenuSeparatorWidget->style;2449 2450 gtk_widget_style_get(g MenuSeparatorWidget,2412 gtk_widget_set_direction(gParts->menuSeparatorWidget, direction); 2413 2414 style = gParts->menuSeparatorWidget->style; 2415 2416 gtk_widget_style_get(gParts->menuSeparatorWidget, 2451 2417 "wide-separators", &wide_separators, 2452 2418 "separator-height", &separator_height, … … 2462 2428 gtk_paint_box(style, drawable, 2463 2429 GTK_STATE_NORMAL, GTK_SHADOW_ETCHED_OUT, 2464 cliprect, g MenuSeparatorWidget, "hseparator",2430 cliprect, gParts->menuSeparatorWidget, "hseparator", 2465 2431 rect->x + horizontal_padding + style->xthickness, 2466 2432 rect->y + (rect->height - separator_height - style->ythickness) / 2, … … 2473 2439 2474 2440 gtk_paint_hline(style, drawable, 2475 GTK_STATE_NORMAL, cliprect, g MenuSeparatorWidget,2441 GTK_STATE_NORMAL, cliprect, gParts->menuSeparatorWidget, 2476 2442 "menuitem", 2477 2443 rect->x + horizontal_padding + style->xthickness, … … 2495 2461 if (flags & MOZ_TOPLEVEL_MENU_ITEM) { 2496 2462 ensure_menu_bar_item_widget(); 2497 item_widget = g MenuBarItemWidget;2463 item_widget = gParts->menuBarItemWidget; 2498 2464 } else { 2499 2465 ensure_menu_item_widget(); 2500 item_widget = g MenuItemWidget;2466 item_widget = gParts->menuItemWidget; 2501 2467 } 2502 2468 gtk_widget_set_direction(item_widget, direction); … … 2525 2491 2526 2492 ensure_menu_item_widget(); 2527 gtk_widget_set_direction(g MenuItemWidget, direction);2528 2529 style = g MenuItemWidget->style;2493 gtk_widget_set_direction(gParts->menuItemWidget, direction); 2494 2495 style = gParts->menuItemWidget->style; 2530 2496 2531 2497 TSOffsetStyleGCs(style, rect->x, rect->y); 2532 2498 gtk_paint_arrow(style, drawable, state_type, 2533 2499 (state_type == GTK_STATE_PRELIGHT) ? GTK_SHADOW_IN : GTK_SHADOW_OUT, 2534 cliprect, g MenuItemWidget, "menuitem",2500 cliprect, gParts->menuItemWidget, "menuitem", 2535 2501 (direction == GTK_TEXT_DIR_LTR) ? GTK_ARROW_RIGHT : GTK_ARROW_LEFT, 2536 2502 TRUE, rect->x, rect->y, rect->width, rect->height); … … 2555 2521 2556 2522 ensure_check_menu_item_widget(); 2557 gtk_widget_set_direction(g CheckMenuItemWidget, direction);2558 2559 gtk_widget_style_get (g CheckMenuItemWidget,2523 gtk_widget_set_direction(gParts->checkMenuItemWidget, direction); 2524 2525 gtk_widget_style_get (gParts->checkMenuItemWidget, 2560 2526 "indicator-size", &indicator_size, 2561 2527 NULL); 2562 2528 2563 if (checked || GTK_CHECK_MENU_ITEM(g CheckMenuItemWidget)->always_show_toggle) {2564 style = g CheckMenuItemWidget->style;2565 2566 offset = GTK_CONTAINER(g CheckMenuItemWidget)->border_width +2567 g CheckMenuItemWidget->style->xthickness + 2;2529 if (checked || GTK_CHECK_MENU_ITEM(gParts->checkMenuItemWidget)->always_show_toggle) { 2530 style = gParts->checkMenuItemWidget->style; 2531 2532 offset = GTK_CONTAINER(gParts->checkMenuItemWidget)->border_width + 2533 gParts->checkMenuItemWidget->style->xthickness + 2; 2568 2534 2569 2535 /* while normally this "3" would be the horizontal-padding style value, passing it to Gecko … … 2575 2541 2576 2542 TSOffsetStyleGCs(style, x, y); 2577 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(g CheckMenuItemWidget),2543 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gParts->checkMenuItemWidget), 2578 2544 checked); 2579 2545 2580 2546 if (isradio) { 2581 2547 gtk_paint_option(style, drawable, state_type, shadow_type, cliprect, 2582 g CheckMenuItemWidget, "option",2548 gParts->checkMenuItemWidget, "option", 2583 2549 x, y, indicator_size, indicator_size); 2584 2550 } else { 2585 2551 gtk_paint_check(style, drawable, state_type, shadow_type, cliprect, 2586 g CheckMenuItemWidget, "check",2552 gParts->checkMenuItemWidget, "check", 2587 2553 x, y, indicator_size, indicator_size); 2588 2554 } … … 2599 2565 2600 2566 ensure_window_widget(); 2601 gtk_widget_set_direction(gP rotoWindow, direction);2602 2603 style = gP rotoWindow->style;2567 gtk_widget_set_direction(gParts->protoWindow, direction); 2568 2569 style = gParts->protoWindow->style; 2604 2570 2605 2571 TSOffsetStyleGCs(style, rect->x, rect->y); … … 2626 2592 2627 2593 ensure_button_widget(); 2628 *left = *top = *right = *bottom = GTK_CONTAINER(g ButtonWidget)->border_width;2594 *left = *top = *right = *bottom = GTK_CONTAINER(gParts->buttonWidget)->border_width; 2629 2595 2630 2596 /* Don't add this padding in HTML, otherwise the buttons will 2631 2597 become too big and stuff the layout. */ 2632 2598 if (!inhtml) { 2633 moz_gtk_widget_get_focus(g ButtonWidget, &interior_focus, &focus_width, &focus_pad);2634 moz_gtk_button_get_inner_border(g ButtonWidget, &inner_border);2599 moz_gtk_widget_get_focus(gParts->buttonWidget, &interior_focus, &focus_width, &focus_pad); 2600 moz_gtk_button_get_inner_border(gParts->buttonWidget, &inner_border); 2635 2601 *left += focus_width + focus_pad + inner_border.left; 2636 2602 *right += focus_width + focus_pad + inner_border.right; … … 2639 2605 } 2640 2606 2641 *left += g ButtonWidget->style->xthickness;2642 *right += g ButtonWidget->style->xthickness;2643 *top += g ButtonWidget->style->ythickness;2644 *bottom += g ButtonWidget->style->ythickness;2607 *left += gParts->buttonWidget->style->xthickness; 2608 *right += gParts->buttonWidget->style->xthickness; 2609 *top += gParts->buttonWidget->style->ythickness; 2610 *bottom += gParts->buttonWidget->style->ythickness; 2645 2611 return MOZ_GTK_SUCCESS; 2646 2612 } 2647 2613 case MOZ_GTK_ENTRY: 2648 2614 ensure_entry_widget(); 2649 w = g EntryWidget;2615 w = gParts->entryWidget; 2650 2616 break; 2651 2617 case MOZ_GTK_TREEVIEW: 2652 2618 ensure_tree_view_widget(); 2653 w = g TreeViewWidget;2619 w = gParts->treeViewWidget; 2654 2620 break; 2655 2621 case MOZ_GTK_TREE_HEADER_CELL: … … 2666 2632 2667 2633 ensure_tree_header_cell_widget(); 2668 *left = *top = *right = *bottom = GTK_CONTAINER(g TreeHeaderCellWidget)->border_width;2669 2670 moz_gtk_widget_get_focus(g TreeHeaderCellWidget, &interior_focus, &focus_width, &focus_pad);2671 moz_gtk_button_get_inner_border(g TreeHeaderCellWidget, &inner_border);2634 *left = *top = *right = *bottom = GTK_CONTAINER(gParts->treeHeaderCellWidget)->border_width; 2635 2636 moz_gtk_widget_get_focus(gParts->treeHeaderCellWidget, &interior_focus, &focus_width, &focus_pad); 2637 moz_gtk_button_get_inner_border(gParts->treeHeaderCellWidget, &inner_border); 2672 2638 *left += focus_width + focus_pad + inner_border.left; 2673 2639 *right += focus_width + focus_pad + inner_border.right; … … 2675 2641 *bottom += focus_width + focus_pad + inner_border.bottom; 2676 2642 2677 *left += g TreeHeaderCellWidget->style->xthickness;2678 *right += g TreeHeaderCellWidget->style->xthickness;2679 *top += g TreeHeaderCellWidget->style->ythickness;2680 *bottom += g TreeHeaderCellWidget->style->ythickness;2643 *left += gParts->treeHeaderCellWidget->style->xthickness; 2644 *right += gParts->treeHeaderCellWidget->style->xthickness; 2645 *top += gParts->treeHeaderCellWidget->style->ythickness; 2646 *bottom += gParts->treeHeaderCellWidget->style->ythickness; 2681 2647 return MOZ_GTK_SUCCESS; 2682 2648 } 2683 2649 case MOZ_GTK_TREE_HEADER_SORTARROW: 2684 2650 ensure_tree_header_cell_widget(); 2685 w = g TreeHeaderSortArrowWidget;2651 w = gParts->treeHeaderSortArrowWidget; 2686 2652 break; 2687 2653 case MOZ_GTK_DROPDOWN_ENTRY: 2688 2654 ensure_combo_box_entry_widgets(); 2689 w = g ComboBoxEntryTextareaWidget;2655 w = gParts->comboBoxEntryTextareaWidget; 2690 2656 break; 2691 2657 case MOZ_GTK_DROPDOWN_ARROW: 2692 2658 ensure_combo_box_entry_widgets(); 2693 w = g ComboBoxEntryButtonWidget;2659 w = gParts->comboBoxEntryButtonWidget; 2694 2660 break; 2695 2661 case MOZ_GTK_DROPDOWN: … … 2704 2670 ensure_combo_box_widgets(); 2705 2671 2706 *left = GTK_CONTAINER(g ComboBoxButtonWidget)->border_width;2672 *left = GTK_CONTAINER(gParts->comboBoxButtonWidget)->border_width; 2707 2673 2708 2674 if (!inhtml) { 2709 moz_gtk_widget_get_focus(g ComboBoxButtonWidget,2675 moz_gtk_widget_get_focus(gParts->comboBoxButtonWidget, 2710 2676 &ignored_interior_focus, 2711 2677 &focus_width, &focus_pad); … … 2713 2679 } 2714 2680 2715 *top = *left + g ComboBoxButtonWidget->style->ythickness;2716 *left += g ComboBoxButtonWidget->style->xthickness;2681 *top = *left + gParts->comboBoxButtonWidget->style->ythickness; 2682 *left += gParts->comboBoxButtonWidget->style->xthickness; 2717 2683 2718 2684 *right = *left; *bottom = *top; … … 2720 2686 /* If there is no separator, don't try to count its width. */ 2721 2687 separator_width = 0; 2722 if (g ComboBoxSeparatorWidget) {2723 gtk_widget_style_get(g ComboBoxSeparatorWidget,2688 if (gParts->comboBoxSeparatorWidget) { 2689 gtk_widget_style_get(gParts->comboBoxSeparatorWidget, 2724 2690 "wide-separators", &wide_separators, 2725 2691 "separator-width", &separator_width, … … 2728 2694 if (!wide_separators) 2729 2695 separator_width = 2730 XTHICKNESS(g ComboBoxSeparatorWidget->style);2696 XTHICKNESS(gParts->comboBoxSeparatorWidget->style); 2731 2697 } 2732 2698 2733 gtk_widget_size_request(g ComboBoxArrowWidget, &arrow_req);2699 gtk_widget_size_request(gParts->comboBoxArrowWidget, &arrow_req); 2734 2700 2735 2701 if (direction == GTK_TEXT_DIR_RTL) … … 2742 2708 case MOZ_GTK_TABPANELS: 2743 2709 ensure_tab_widget(); 2744 w = g TabWidget;2710 w = gParts->tabWidget; 2745 2711 break; 2746 2712 case MOZ_GTK_PROGRESSBAR: 2747 2713 ensure_progress_widget(); 2748 w = gP rogressWidget;2714 w = gParts->progresWidget; 2749 2715 break; 2750 2716 case MOZ_GTK_SPINBUTTON_ENTRY: … … 2752 2718 case MOZ_GTK_SPINBUTTON_DOWN: 2753 2719 ensure_spin_widget(); 2754 w = g SpinWidget;2720 w = gParts->spinWidget; 2755 2721 break; 2756 2722 case MOZ_GTK_SCALE_HORIZONTAL: 2757 2723 ensure_scale_widget(); 2758 w = g HScaleWidget;2724 w = gParts->hScaleWidget; 2759 2725 break; 2760 2726 case MOZ_GTK_SCALE_VERTICAL: 2761 2727 ensure_scale_widget(); 2762 w = g VScaleWidget;2728 w = gParts->vScaleWidget; 2763 2729 break; 2764 2730 case MOZ_GTK_FRAME: 2765 2731 ensure_frame_widget(); 2766 w = g FrameWidget;2732 w = gParts->frameWidget; 2767 2733 break; 2768 2734 case MOZ_GTK_CHECKBUTTON_LABEL: … … 2776 2742 if (widget == MOZ_GTK_CHECKBUTTON_LABEL) { 2777 2743 ensure_checkbox_widget(); 2778 moz_gtk_widget_get_focus(g CheckboxWidget, &interior_focus,2744 moz_gtk_widget_get_focus(gParts->checkboxWidget, &interior_focus, 2779 2745 &focus_width, &focus_pad); 2780 2746 } 2781 2747 else { 2782 2748 ensure_radiobutton_widget(); 2783 moz_gtk_widget_get_focus(g RadiobuttonWidget, &interior_focus,2749 moz_gtk_widget_get_focus(gParts->radiobuttonWidget, &interior_focus, 2784 2750 &focus_width, &focus_pad); 2785 2751 } … … 2803 2769 if (widget == MOZ_GTK_CHECKBUTTON_CONTAINER) { 2804 2770 ensure_checkbox_widget(); 2805 moz_gtk_widget_get_focus(g CheckboxWidget, &interior_focus,2771 moz_gtk_widget_get_focus(gParts->checkboxWidget, &interior_focus, 2806 2772 &focus_width, &focus_pad); 2807 w = g CheckboxWidget;2773 w = gParts->checkboxWidget; 2808 2774 } else { 2809 2775 ensure_radiobutton_widget(); 2810 moz_gtk_widget_get_focus(g RadiobuttonWidget, &interior_focus,2776 moz_gtk_widget_get_focus(gParts->radiobuttonWidget, &interior_focus, 2811 2777 &focus_width, &focus_pad); 2812 w = g RadiobuttonWidget;2778 w = gParts->radiobuttonWidget; 2813 2779 } 2814 2780 … … 2826 2792 case MOZ_GTK_MENUPOPUP: 2827 2793 ensure_menu_popup_widget(); 2828 w = g MenuPopupWidget;2794 w = gParts->menuPopupWidget; 2829 2795 break; 2830 2796 case MOZ_GTK_MENUITEM: 2831 2797 ensure_menu_item_widget(); 2832 2798 ensure_menu_bar_item_widget(); 2833 w = g MenuItemWidget;2799 w = gParts->menuItemWidget; 2834 2800 break; 2835 2801 case MOZ_GTK_CHECKMENUITEM: 2836 2802 case MOZ_GTK_RADIOMENUITEM: 2837 2803 ensure_check_menu_item_widget(); 2838 w = g CheckMenuItemWidget;2804 w = gParts->checkMenuItemWidget; 2839 2805 break; 2840 2806 case MOZ_GTK_TAB: 2841 2807 ensure_tab_widget(); 2842 w = g TabWidget;2808 w = gParts->tabWidget; 2843 2809 break; 2844 2810 /* These widgets have no borders, since they are not containers. */ … … 2895 2861 ensure_combo_box_entry_widgets(); 2896 2862 2897 gtk_widget_size_request(g ComboBoxEntryButtonWidget, &requisition);2863 gtk_widget_size_request(gParts->comboBoxEntryButtonWidget, &requisition); 2898 2864 *width = requisition.width; 2899 2865 *height = requisition.height; … … 2908 2874 2909 2875 ensure_tab_widget(); 2910 gtk_widget_style_get(g TabWidget,2876 gtk_widget_style_get(gParts->tabWidget, 2911 2877 "scroll-arrow-hlength", &arrow_size, 2912 2878 NULL); … … 2923 2889 ensure_button_arrow_widget(); 2924 2890 2925 gtk_widget_size_request(g ButtonArrowWidget, &requisition);2891 gtk_widget_size_request(gParts->buttonArrowWidget, &requisition); 2926 2892 *width = requisition.width; 2927 2893 *height = requisition.height; … … 2939 2905 ensure_toolbar_widget(); 2940 2906 2941 style = g ToolbarWidget->style;2942 2943 gtk_widget_style_get(g ToolbarWidget,2907 style = gParts->toolbarWidget->style; 2908 2909 gtk_widget_style_get(gParts->toolbarWidget, 2944 2910 "space-size", size, 2945 2911 "wide-separators", &wide_separators, … … 2957 2923 { 2958 2924 ensure_expander_widget(); 2959 gtk_widget_style_get(g ExpanderWidget,2925 gtk_widget_style_get(gParts->expanderWidget, 2960 2926 "expander-size", size, 2961 2927 NULL); … … 2968 2934 { 2969 2935 ensure_tree_view_widget(); 2970 gtk_widget_style_get(g TreeViewWidget,2936 gtk_widget_style_get(gParts->treeViewWidget, 2971 2937 "expander-size", size, 2972 2938 NULL); … … 2983 2949 ensure_menu_separator_widget(); 2984 2950 2985 gtk_widget_style_get(g MenuSeparatorWidget,2951 gtk_widget_style_get(gParts->menuSeparatorWidget, 2986 2952 "wide-separators", &wide_separators, 2987 2953 "separator-height", &separator_height, … … 2989 2955 2990 2956 if (wide_separators) 2991 *size = separator_height + g MenuSeparatorWidget->style->ythickness;2957 *size = separator_height + gParts->menuSeparatorWidget->style->ythickness; 2992 2958 else 2993 *size = g MenuSeparatorWidget->style->ythickness * 2;2959 *size = gParts->menuSeparatorWidget->style->ythickness * 2; 2994 2960 2995 2961 return MOZ_GTK_SUCCESS; … … 3002 2968 3003 2969 ensure_scale_widget(); 3004 widget = ((orient == GTK_ORIENTATION_HORIZONTAL) ? g HScaleWidget : gVScaleWidget);2970 widget = ((orient == GTK_ORIENTATION_HORIZONTAL) ? gParts->hScaleWidget : gParts->vScaleWidget); 3005 2971 3006 2972 gtk_widget_style_get (widget, … … 3017 2983 ensure_scrollbar_widget(); 3018 2984 3019 gtk_widget_style_get (g HorizScrollbarWidget,2985 gtk_widget_style_get (gParts->horizScrollbarWidget, 3020 2986 "slider_width", &metrics->slider_width, 3021 2987 "trough_border", &metrics->trough_border, … … 3025 2991 3026 2992 metrics->min_slider_size = 3027 GTK_RANGE(g HorizScrollbarWidget)->min_slider_size;2993 GTK_RANGE(gParts->horizScrollbarWidget)->min_slider_size; 3028 2994 3029 2995 return MOZ_GTK_SUCCESS; … … 3037 3003 3038 3004 ensure_image_menu_item_widget(); 3039 settings = gtk_widget_get_settings(g ImageMenuItemWidget);3005 settings = gtk_widget_get_settings(gParts->imageMenuItemWidget); 3040 3006 3041 3007 g_object_get(settings, "gtk-menu-images", &result, NULL); … … 3055 3021 return moz_gtk_button_paint(drawable, rect, cliprect, state, 3056 3022 (GtkReliefStyle) flags, 3057 g ToggleButtonWidget, direction);3023 gParts->toggleButtonWidget, direction); 3058 3024 } 3059 3025 ensure_button_widget(); 3060 3026 return moz_gtk_button_paint(drawable, rect, cliprect, state, 3061 (GtkReliefStyle) flags, g ButtonWidget,3027 (GtkReliefStyle) flags, gParts->buttonWidget, 3062 3028 direction); 3063 3029 break; … … 3107 3073 ensure_spin_widget(); 3108 3074 return moz_gtk_entry_paint(drawable, rect, cliprect, state, 3109 g SpinWidget, direction);3075 gParts->spinWidget, direction); 3110 3076 break; 3111 3077 case MOZ_GTK_GRIPPER: … … 3138 3104 ensure_entry_widget(); 3139 3105 return moz_gtk_entry_paint(drawable, rect, cliprect, state, 3140 g EntryWidget, direction);3106 gParts->entryWidget, direction); 3141 3107 break; 3142 3108 case MOZ_GTK_ENTRY_CARET: … … 3154 3120 ensure_combo_box_entry_widgets(); 3155 3121 return moz_gtk_entry_paint(drawable, rect, cliprect, state, 3156 g ComboBoxEntryTextareaWidget, direction);3122 gParts->comboBoxEntryTextareaWidget, direction); 3157 3123 break; 3158 3124 case MOZ_GTK_CHECKBUTTON_CONTAINER: … … 3252 3218 return NULL; 3253 3219 ensure_scrollbar_widget(); 3254 return g HorizScrollbarWidget;3220 return gParts->horizScrollbarWidget; 3255 3221 } 3256 3222 … … 3259 3225 { 3260 3226 GtkWidgetClass *entry_class; 3261 3262 if (gTooltipWidget)3263 gtk_widget_destroy(gTooltipWidget);3264 /* This will destroy all of our widgets */3265 if (gProtoWindow)3266 gtk_widget_destroy(gProtoWindow);3267 3268 gProtoWindow = NULL;3269 gProtoLayout = NULL;3270 gButtonWidget = NULL;3271 gToggleButtonWidget = NULL;3272 gButtonArrowWidget = NULL;3273 gCheckboxWidget = NULL;3274 gRadiobuttonWidget = NULL;3275 gHorizScrollbarWidget = NULL;3276 gVertScrollbarWidget = NULL;3277 gSpinWidget = NULL;3278 gHScaleWidget = NULL;3279 gVScaleWidget = NULL;3280 gEntryWidget = NULL;3281 gComboBoxWidget = NULL;3282 gComboBoxButtonWidget = NULL;3283 gComboBoxSeparatorWidget = NULL;3284 gComboBoxArrowWidget = NULL;3285 gComboBoxEntryWidget = NULL;3286 gComboBoxEntryButtonWidget = NULL;3287 gComboBoxEntryArrowWidget = NULL;3288 gComboBoxEntryTextareaWidget = NULL;3289 gHandleBoxWidget = NULL;3290 gToolbarWidget = NULL;3291 gStatusbarWidget = NULL;3292 gFrameWidget = NULL;3293 gProgressWidget = NULL;3294 gTabWidget = NULL;3295 gTooltipWidget = NULL;3296 gMenuBarWidget = NULL;3297 gMenuBarItemWidget = NULL;3298 gMenuPopupWidget = NULL;3299 gMenuItemWidget = NULL;3300 gImageMenuItemWidget = NULL;3301 gCheckMenuItemWidget = NULL;3302 gTreeViewWidget = NULL;3303 gMiddleTreeViewColumn = NULL;3304 gTreeHeaderCellWidget = NULL;3305 gTreeHeaderSortArrowWidget = NULL;3306 gExpanderWidget = NULL;3307 gToolbarSeparatorWidget = NULL;3308 gMenuSeparatorWidget = NULL;3309 gHPanedWidget = NULL;3310 gVPanedWidget = NULL;3311 gScrolledWindowWidget = NULL;3312 3313 3227 entry_class = g_type_class_peek(GTK_TYPE_ENTRY); 3314 3228 g_type_class_unref(entry_class); … … 3318 3232 return MOZ_GTK_SUCCESS; 3319 3233 } 3234 3235 void moz_gtk_destroy_theme_parts_widgets(GtkThemeParts* parts) 3236 { 3237 if (!parts) 3238 return; 3239 3240 if (parts->tooltipWidget) { 3241 gtk_widget_destroy(parts->tooltipWidget); 3242 parts->tooltipWidget = NULL; 3243 } 3244 3245 if (parts->protoWindow) { 3246 gtk_widget_destroy(parts->protoWindow); 3247 parts->protoWindow = NULL; 3248 } 3249 } -
trunk/WebCore/platform/gtk/gtkdrawing.h
r52421 r53372 77 77 gint min_slider_size; 78 78 } MozGtkScrollbarMetrics; 79 80 typedef struct _GtkThemeParts { 81 GdkColormap* colormap; 82 GtkWidget* protoWindow; 83 GtkWidget* protoLayout; 84 GtkWidget* buttonWidget; 85 GtkWidget* toggleButtonWidget; 86 GtkWidget* buttonArrowWidget; 87 GtkWidget* checkboxWidget; 88 GtkWidget* radiobuttonWidget; 89 GtkWidget* horizScrollbarWidget; 90 GtkWidget* vertScrollbarWidget; 91 GtkWidget* spinWidget; 92 GtkWidget* hScaleWidget; 93 GtkWidget* vScaleWidget; 94 GtkWidget* entryWidget; 95 GtkWidget* comboBoxWidget; 96 GtkWidget* comboBoxButtonWidget; 97 GtkWidget* comboBoxArrowWidget; 98 GtkWidget* comboBoxSeparatorWidget; 99 GtkWidget* comboBoxEntryWidget; 100 GtkWidget* comboBoxEntryTextareaWidget; 101 GtkWidget* comboBoxEntryButtonWidget; 102 GtkWidget* comboBoxEntryArrowWidget; 103 GtkWidget* handleBoxWidget; 104 GtkWidget* toolbarWidget; 105 GtkWidget* frameWidget; 106 GtkWidget* statusbarWidget; 107 GtkWidget* progresWidget; 108 GtkWidget* tabWidget; 109 GtkWidget* tooltipWidget; 110 GtkWidget* menuBarWidget; 111 GtkWidget* menuBarItemWidget; 112 GtkWidget* menuPopupWidget; 113 GtkWidget* menuItemWidget; 114 GtkWidget* imageMenuItemWidget; 115 GtkWidget* checkMenuItemWidget; 116 GtkWidget* treeViewWidget; 117 GtkTreeViewColumn* middleTreeViewColumn; 118 GtkWidget* treeHeaderCellWidget; 119 GtkWidget* treeHeaderSortArrowWidget; 120 GtkWidget* expanderWidget; 121 GtkWidget* toolbarSeparatorWidget; 122 GtkWidget* menuSeparatorWidget; 123 GtkWidget* hpanedWidget; 124 GtkWidget* vpanedWidget; 125 GtkWidget* scrolledWindowWidget; 126 } GtkThemeParts; 79 127 80 128 typedef enum { … … 226 274 227 275 /** 276 * Instruct the drawing library to do all rendering based on 277 * the given collection of theme parts. If any members of the 278 * GtkThemeParts struct are NULL, they will be created lazily. 279 */ 280 void 281 moz_gtk_use_theme_parts(GtkThemeParts* parts); 282 283 /** 228 284 * Enable GTK+ 1.2.9+ theme enhancements. You must provide a pointer 229 285 * to the GTK+ 1.2.9+ function "gtk_style_get_prop_experimental". … … 242 298 gint moz_gtk_shutdown(); 243 299 300 /** 301 * Destroy the widgets in the given GtkThemeParts, which should 302 * be destroyed before the GtkThemeParts can be freed. 303 */ 304 void moz_gtk_destroy_theme_parts_widgets(GtkThemeParts* parts); 244 305 245 306 /*** Widget drawing ***/
Note: See TracChangeset
for help on using the changeset viewer.