mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-14 13:55:43 +00:00
Bug 897404 - Port GTK2 to GTK3 - treeview rendering, border patch. r=karlt
This commit is contained in:
parent
66fbee273a
commit
adb418182b
@ -2536,6 +2536,34 @@ moz_gtk_window_paint(cairo_t *cr, GdkRectangle* rect,
|
||||
return MOZ_GTK_SUCCESS;
|
||||
}
|
||||
|
||||
static void
|
||||
moz_gtk_add_style_border(GtkStyleContext* style,
|
||||
gint* left, gint* top, gint* right, gint* bottom)
|
||||
{
|
||||
GtkBorder border;
|
||||
|
||||
gtk_style_context_get_border(style, 0, &border);
|
||||
|
||||
*left += border.left;
|
||||
*right += border.right;
|
||||
*top += border.top;
|
||||
*bottom += border.bottom;
|
||||
}
|
||||
|
||||
static void
|
||||
moz_gtk_add_style_padding(GtkStyleContext* style,
|
||||
gint* left, gint* top, gint* right, gint* bottom)
|
||||
{
|
||||
GtkBorder padding;
|
||||
|
||||
gtk_style_context_get_padding(style, 0, &padding);
|
||||
|
||||
*left += padding.left;
|
||||
*right += padding.right;
|
||||
*top += padding.top;
|
||||
*bottom += padding.bottom;
|
||||
}
|
||||
|
||||
gint
|
||||
moz_gtk_get_widget_border(GtkThemeWidgetType widget, gint* left, gint* top,
|
||||
gint* right, gint* bottom, GtkTextDirection direction,
|
||||
@ -2543,8 +2571,7 @@ moz_gtk_get_widget_border(GtkThemeWidgetType widget, gint* left, gint* top,
|
||||
{
|
||||
GtkWidget* w;
|
||||
GtkStyleContext* style;
|
||||
GtkBorder border;
|
||||
GtkBorder padding;
|
||||
*left = *top = *right = *bottom = 0;
|
||||
|
||||
switch (widget) {
|
||||
case MOZ_GTK_BUTTON:
|
||||
@ -2566,35 +2593,29 @@ moz_gtk_get_widget_border(GtkThemeWidgetType widget, gint* left, gint* top,
|
||||
*top += focus_width + focus_pad + inner_border.top;
|
||||
*bottom += focus_width + focus_pad + inner_border.bottom;
|
||||
}
|
||||
|
||||
style = gtk_widget_get_style_context(gButtonWidget);
|
||||
gtk_style_context_get_border(style, 0, &border);
|
||||
|
||||
*left += border.left;
|
||||
*right += border.right;
|
||||
*top += border.top;
|
||||
*bottom += border.bottom;
|
||||
|
||||
moz_gtk_add_style_border(gtk_widget_get_style_context(gButtonWidget),
|
||||
left, top, right, bottom);
|
||||
return MOZ_GTK_SUCCESS;
|
||||
}
|
||||
case MOZ_GTK_ENTRY:
|
||||
{
|
||||
ensure_entry_widget();
|
||||
style = gtk_widget_get_style_context(gEntryWidget);
|
||||
|
||||
gtk_style_context_get_border(style, 0, &border);
|
||||
gtk_style_context_get_padding(style, 0, &padding);
|
||||
|
||||
*left = padding.left + border.left;
|
||||
*right = padding.right + border.right;
|
||||
*top = padding.top + border.top;
|
||||
*bottom = padding.bottom + border.bottom;
|
||||
|
||||
moz_gtk_add_style_border(style, left, top, right, bottom);
|
||||
moz_gtk_add_style_padding(style, left, top, right, bottom);
|
||||
return MOZ_GTK_SUCCESS;
|
||||
}
|
||||
case MOZ_GTK_TREEVIEW:
|
||||
ensure_tree_view_widget();
|
||||
w = gTreeViewWidget;
|
||||
break;
|
||||
{
|
||||
ensure_scrolled_window_widget();
|
||||
style = gtk_widget_get_style_context(gScrolledWindowWidget);
|
||||
gtk_style_context_save(style);
|
||||
gtk_style_context_add_class(style, GTK_STYLE_CLASS_FRAME);
|
||||
moz_gtk_add_style_border(style, left, top, right, bottom);
|
||||
gtk_style_context_restore(style);
|
||||
return MOZ_GTK_SUCCESS;
|
||||
}
|
||||
case MOZ_GTK_TREE_HEADER_CELL:
|
||||
{
|
||||
/* A Tree Header in GTK is just a different styled button
|
||||
@ -2617,13 +2638,8 @@ moz_gtk_get_widget_border(GtkThemeWidgetType widget, gint* left, gint* top,
|
||||
*top += focus_width + focus_pad + inner_border.top;
|
||||
*bottom += focus_width + focus_pad + inner_border.bottom;
|
||||
|
||||
style = gtk_widget_get_style_context(gTreeHeaderCellWidget);
|
||||
gtk_style_context_get_border(style, 0, &border);
|
||||
|
||||
*left += border.left;
|
||||
*right += border.right;
|
||||
*top += border.top;
|
||||
*bottom += border.bottom;
|
||||
moz_gtk_add_style_border(gtk_widget_get_style_context(gTreeHeaderCellWidget),
|
||||
left, top, right, bottom);
|
||||
return MOZ_GTK_SUCCESS;
|
||||
}
|
||||
case MOZ_GTK_TREE_HEADER_SORTARROW:
|
||||
@ -2646,6 +2662,7 @@ moz_gtk_get_widget_border(GtkThemeWidgetType widget, gint* left, gint* top,
|
||||
gboolean ignored_interior_focus, wide_separators;
|
||||
gint focus_width, focus_pad, separator_width;
|
||||
GtkRequisition arrow_req;
|
||||
GtkBorder border;
|
||||
|
||||
ensure_combo_box_widgets();
|
||||
|
||||
@ -2737,8 +2754,6 @@ moz_gtk_get_widget_border(GtkThemeWidgetType widget, gint* left, gint* top,
|
||||
|
||||
if (interior_focus)
|
||||
*left = *top = *right = *bottom = (focus_width + focus_pad);
|
||||
else
|
||||
*left = *top = *right = *bottom = 0;
|
||||
|
||||
return MOZ_GTK_SUCCESS;
|
||||
}
|
||||
@ -2780,21 +2795,12 @@ moz_gtk_get_widget_border(GtkThemeWidgetType widget, gint* left, gint* top,
|
||||
break;
|
||||
case MOZ_GTK_MENUITEM:
|
||||
{
|
||||
guint border_width;
|
||||
|
||||
ensure_menu_item_widget();
|
||||
ensure_menu_bar_item_widget();
|
||||
|
||||
style = gtk_widget_get_style_context(gMenuItemWidget);
|
||||
gtk_style_context_get_padding(style, 0, &padding);
|
||||
|
||||
border_width = gtk_container_get_border_width(GTK_CONTAINER(gMenuItemWidget));
|
||||
|
||||
*left = padding.left + border_width;
|
||||
*right = padding.right + border_width;
|
||||
*top = padding.top + border_width;
|
||||
*bottom = padding.bottom + border_width;
|
||||
|
||||
*left = *top = *right = *bottom = gtk_container_get_border_width(GTK_CONTAINER(gMenuItemWidget));
|
||||
moz_gtk_add_style_padding(gtk_widget_get_style_context(gMenuItemWidget),
|
||||
left, top, right, bottom);
|
||||
return MOZ_GTK_SUCCESS;
|
||||
}
|
||||
case MOZ_GTK_CHECKMENUITEM:
|
||||
@ -2835,23 +2841,15 @@ moz_gtk_get_widget_border(GtkThemeWidgetType widget, gint* left, gint* top,
|
||||
case MOZ_GTK_TOOLBAR:
|
||||
case MOZ_GTK_MENUBAR:
|
||||
case MOZ_GTK_TAB_SCROLLARROW:
|
||||
*left = *top = *right = *bottom = 0;
|
||||
return MOZ_GTK_SUCCESS;
|
||||
default:
|
||||
g_warning("Unsupported widget type: %d", widget);
|
||||
return MOZ_GTK_UNKNOWN_WIDGET;
|
||||
}
|
||||
/* TODO - we're still missing some widget implementations */
|
||||
if (!w) {
|
||||
*right = *left = 0;
|
||||
*bottom = *top = 0;
|
||||
} else {
|
||||
style = gtk_widget_get_style_context(w);
|
||||
gtk_style_context_get_border(style, 0, &border);
|
||||
*left = border.left;
|
||||
*right = border.right;
|
||||
*top = border.top;
|
||||
*bottom = border.bottom;
|
||||
if (w) {
|
||||
moz_gtk_add_style_border(gtk_widget_get_style_context(w),
|
||||
left, top, right, bottom);
|
||||
}
|
||||
return MOZ_GTK_SUCCESS;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user