Index: b/gtk+-2/gtksecentry.c =================================================================== --- b/gtk+-2/gtksecentry.c +++ b/gtk+-2/gtksecentry.c @@ -758,7 +758,7 @@ static void gtk_secure_entry_init(GtkSecureEntry * entry) { - GTK_WIDGET_SET_FLAGS(entry, GTK_CAN_FOCUS); + gtk_widget_set_can_focus (GTK_WIDGET(entry), TRUE); entry->text_size = MIN_SIZE; WITH_SECURE_MEM(entry->text = g_malloc(entry->text_size)); @@ -818,10 +818,13 @@ { GtkSecureEntry *entry; GtkEditable *editable; + GdkWindow *window; + GtkStyle *style; GdkWindowAttr attributes; gint attributes_mask; - GTK_WIDGET_SET_FLAGS(widget, GTK_REALIZED); + gtk_widget_set_realized (widget, TRUE); + entry = GTK_SECURE_ENTRY(widget); editable = GTK_EDITABLE(widget); @@ -846,10 +849,10 @@ attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP; - widget->window = - gdk_window_new(gtk_widget_get_parent_window(widget), &attributes, - attributes_mask); - gdk_window_set_user_data(widget->window, entry); + window = gdk_window_new(gtk_widget_get_parent_window(widget), + &attributes, attributes_mask); + gtk_widget_set_window (widget, window); + gdk_window_set_user_data(window, entry); get_text_area_size(entry, &attributes.x, &attributes.y, &attributes.width, &attributes.height); @@ -860,19 +863,19 @@ attributes_mask |= GDK_WA_CURSOR; entry->text_area = - gdk_window_new(widget->window, &attributes, attributes_mask); + gdk_window_new(window, &attributes, attributes_mask); gdk_window_set_user_data(entry->text_area, entry); gdk_cursor_unref(attributes.cursor); - widget->style = gtk_style_attach(widget->style, widget->window); + style = gtk_widget_get_style (widget); + style = gtk_style_attach(style, window); + gtk_widget_set_style (widget, style); - gdk_window_set_background(widget->window, - &widget->style-> - base[GTK_WIDGET_STATE(widget)]); + gdk_window_set_background(window, + &style->base[gtk_widget_get_state (widget)]); gdk_window_set_background(entry->text_area, - &widget->style-> - base[GTK_WIDGET_STATE(widget)]); + &style->base[gtk_widget_get_state (widget)]); gdk_window_show(entry->text_area); @@ -904,6 +907,7 @@ get_borders(GtkSecureEntry * entry, gint * xborder, gint * yborder) { GtkWidget *widget = GTK_WIDGET(entry); + GtkStyle *style; gint focus_width; gboolean interior_focus; @@ -911,9 +915,10 @@ "interior-focus", &interior_focus, "focus-line-width", &focus_width, NULL); + style = gtk_widget_get_style (widget); if (entry->has_frame) { - *xborder = widget->style->xthickness; - *yborder = widget->style->ythickness; + *xborder = style->xthickness; + *yborder = style->ythickness; } else { *xborder = 0; *yborder = 0; @@ -930,13 +935,15 @@ GtkRequisition * requisition) { GtkSecureEntry *entry = GTK_SECURE_ENTRY(widget); + GtkStyle *style; PangoFontMetrics *metrics; gint xborder, yborder; PangoContext *context; + style = gtk_widget_get_style (widget); context = gtk_widget_get_pango_context(widget); metrics = pango_context_get_metrics(context, - widget->style->font_desc, + style->font_desc, pango_context_get_language (context)); @@ -975,8 +982,10 @@ gint xborder, yborder; GtkRequisition requisition; GtkWidget *widget = GTK_WIDGET(entry); + GtkAllocation allocation; gtk_widget_get_child_requisition(widget, &requisition); + gtk_widget_get_allocation (GTK_WIDGET(entry), &allocation); get_borders(entry, &xborder, &yborder); @@ -987,7 +996,7 @@ *y = yborder; if (width) - *width = GTK_WIDGET(entry)->allocation.width - xborder * 2; + *width = allocation.width - xborder * 2; if (height) *height = requisition.height - yborder * 2; @@ -999,26 +1008,28 @@ { GtkRequisition requisition; GtkWidget *widget = GTK_WIDGET(entry); + GtkAllocation allocation; gtk_widget_get_child_requisition(widget, &requisition); + gtk_widget_get_allocation (GTK_WIDGET(entry), &allocation); if (x) - *x = widget->allocation.x; + *x = allocation.x; if (y) { if (entry->is_cell_renderer) - *y = widget->allocation.y; + *y = allocation.y; else - *y = widget->allocation.y + (widget->allocation.height - - requisition.height) / 2; + *y = allocation.y + (allocation.height - + requisition.height) / 2; } if (width) - *width = widget->allocation.width; + *width = allocation.width; if (height) { if (entry->is_cell_renderer) - *height = widget->allocation.height; + *height = allocation.height; else *height = requisition.height; } @@ -1030,9 +1041,9 @@ { GtkSecureEntry *entry = GTK_SECURE_ENTRY(widget); - widget->allocation = *allocation; + gtk_widget_set_allocation (widget, allocation); - if (GTK_WIDGET_REALIZED(widget)) { + if (gtk_widget_get_realized (widget)) { /* We call gtk_widget_get_child_requisition, since we want (for * backwards compatibility reasons) the realization here to * be affected by the usize of the entry, if set @@ -1041,7 +1052,8 @@ get_widget_window_size(entry, &x, &y, &width, &height); - gdk_window_move_resize(widget->window, x, y, width, height); + gdk_window_move_resize(gtk_widget_get_window (widget), + x, y, width, height); get_text_area_size(entry, &x, &y, &width, &height); @@ -1054,6 +1066,8 @@ static void gtk_secure_entry_draw_frame(GtkWidget * widget) { + GtkStyle *style; + GdkWindow *window; gint x = 0, y = 0; gint width, height; gboolean interior_focus; @@ -1063,27 +1077,29 @@ "interior-focus", &interior_focus, "focus-line-width", &focus_width, NULL); - gdk_drawable_get_size(widget->window, &width, &height); + window = gtk_widget_get_window (widget); + gdk_drawable_get_size(window, &width, &height); - if (GTK_WIDGET_HAS_FOCUS(widget) && !interior_focus) { + if (gtk_widget_has_focus (widget) && !interior_focus) { x += focus_width; y += focus_width; width -= 2 * focus_width; height -= 2 * focus_width; } - gtk_paint_shadow(widget->style, widget->window, + style = gtk_widget_get_style (widget); + gtk_paint_shadow(style, window, GTK_STATE_NORMAL, GTK_SHADOW_IN, NULL, widget, "entry", x, y, width, height); - if (GTK_WIDGET_HAS_FOCUS(widget) && !interior_focus) { + if (gtk_widget_has_focus (widget) && !interior_focus) { x -= focus_width; y -= focus_width; width += 2 * focus_width; height += 2 * focus_width; - gtk_paint_focus(widget->style, widget->window, - GTK_WIDGET_STATE(widget), NULL, widget, "entry", 0, + gtk_paint_focus(style, window, + gtk_widget_get_state (widget), NULL, widget, "entry", 0, 0, width, height); } } @@ -1092,21 +1108,24 @@ gtk_secure_entry_expose(GtkWidget * widget, GdkEventExpose * event) { GtkSecureEntry *entry = GTK_SECURE_ENTRY(widget); + GtkStyle *style; - if (widget->window == event->window) + if (gtk_widget_get_window (widget) == event->window) gtk_secure_entry_draw_frame(widget); else if (entry->text_area == event->window) { gint area_width, area_height; get_text_area_size(entry, NULL, NULL, &area_width, &area_height); - gtk_paint_flat_box(widget->style, entry->text_area, - GTK_WIDGET_STATE(widget), GTK_SHADOW_NONE, + + style = gtk_widget_get_style (widget); + gtk_paint_flat_box(style, entry->text_area, + gtk_widget_get_state (widget), GTK_SHADOW_NONE, NULL, widget, "entry_bg", 0, 0, area_width, area_height); if ((entry->invisible_char != 0) && - GTK_WIDGET_HAS_FOCUS(widget) && + gtk_widget_has_focus (widget) && entry->selection_bound == entry->current_pos && entry->cursor_visible) gtk_secure_entry_draw_cursor(GTK_SECURE_ENTRY(widget)); @@ -1129,7 +1148,7 @@ entry->button = event->button; - if (!GTK_WIDGET_HAS_FOCUS(widget)) { + if (!gtk_widget_has_focus (widget)) { entry->in_click = TRUE; gtk_widget_grab_focus(widget); entry->in_click = FALSE; @@ -1331,7 +1350,7 @@ GtkSecureEntry *entry = GTK_SECURE_ENTRY(widget); gboolean select_on_focus; - GTK_WIDGET_SET_FLAGS(widget, GTK_CAN_DEFAULT); + gtk_widget_set_can_default (widget, TRUE); GTK_WIDGET_CLASS(parent_class)->grab_focus(widget); /* read current select on focus setting from GtkEntry */ @@ -1361,17 +1380,17 @@ GtkStateType previous_state) { GtkSecureEntry *entry = GTK_SECURE_ENTRY(widget); + GtkStyle *style; - if (GTK_WIDGET_REALIZED(widget)) { - gdk_window_set_background(widget->window, - &widget->style-> - base[GTK_WIDGET_STATE(widget)]); + style = gtk_widget_get_style (widget); + if (gtk_widget_get_realized (widget)) { + gdk_window_set_background(gtk_widget_get_window(widget), + &style->base[gtk_widget_get_state (widget)]); gdk_window_set_background(entry->text_area, - &widget->style-> - base[GTK_WIDGET_STATE(widget)]); + &style->base[gtk_widget_get_state (widget)]); } - if (!GTK_WIDGET_IS_SENSITIVE(widget)) { + if (!gtk_widget_is_sensitive (widget)) { /* Clear any selection */ gtk_editable_select_region(GTK_EDITABLE(entry), entry->current_pos, entry->current_pos); @@ -1496,16 +1515,16 @@ gtk_secure_entry_style_set(GtkWidget * widget, GtkStyle * previous_style) { GtkSecureEntry *entry = GTK_SECURE_ENTRY(widget); + GtkStyle *style; gtk_secure_entry_recompute(entry); - if (previous_style && GTK_WIDGET_REALIZED(widget)) { - gdk_window_set_background(widget->window, - &widget->style-> - base[GTK_WIDGET_STATE(widget)]); + style = gtk_widget_get_style (widget); + if (previous_style && gtk_widget_get_realized (widget)) { + gdk_window_set_background(gtk_widget_get_window (widget), + &style->base[gtk_widget_get_state (widget)]); gdk_window_set_background(entry->text_area, - &widget->style-> - base[GTK_WIDGET_STATE(widget)]); + &style->base[gtk_widget_get_state (widget)]); } } @@ -1872,13 +1891,18 @@ if (entry->activates_default) { toplevel = gtk_widget_get_toplevel(widget); if (GTK_IS_WINDOW(toplevel)) { + GtkWidget *default_widget; + window = GTK_WINDOW(toplevel); + if (window) + default_widget = gtk_window_get_default_widget (window); + else + return; - if (window && - widget != window->default_widget && - !(widget == window->focus_widget && - (!window->default_widget - || !GTK_WIDGET_SENSITIVE(window->default_widget)))) + if (widget != default_widget && + !(widget == gtk_window_get_focus (window) && + (!default_widget + || !gtk_widget_get_sensitive (default_widget)))) gtk_window_activate_default(window); } } @@ -2152,7 +2176,7 @@ pango_dir = pango_find_base_dir(entry->text, entry->n_bytes); if (pango_dir == PANGO_DIRECTION_NEUTRAL) { - if (GTK_WIDGET_HAS_FOCUS(widget)) { + if (gtk_widget_has_focus (widget)) { GdkDisplay *display = gtk_widget_get_display(widget); GdkKeymap *keymap = gdk_keymap_get_for_display(display); pango_dir = gdk_keymap_get_direction(keymap); @@ -2257,24 +2281,24 @@ static void gtk_secure_entry_draw_text(GtkSecureEntry * entry) { - GtkWidget *widget; + GtkWidget *widget = GTK_WIDGET(entry); PangoLayoutLine *line; + GtkStyle *style; if (entry->invisible_char == 0) return; - if (GTK_WIDGET_DRAWABLE(entry)) { + if (gtk_widget_is_drawable (widget)) { PangoLayout *layout = gtk_secure_entry_ensure_layout(entry, TRUE); gint x, y; gint start_pos, end_pos; - widget = GTK_WIDGET(entry); - get_layout_position(entry, &x, &y); + style = gtk_widget_get_style (widget); gdk_draw_layout(entry->text_area, - widget->style->text_gc[widget->state], x, y, - layout); + style->text_gc[gtk_widget_get_state (widget)], + x, y, layout); if (gtk_editable_get_selection_bounds (GTK_EDITABLE(entry), &start_pos, &end_pos)) { @@ -2297,12 +2321,12 @@ pango_layout_get_extents(layout, NULL, &logical_rect); - if (GTK_WIDGET_HAS_FOCUS(entry)) { - selection_gc = widget->style->base_gc[GTK_STATE_SELECTED]; - text_gc = widget->style->text_gc[GTK_STATE_SELECTED]; + if (gtk_widget_has_focus (widget)) { + selection_gc = style->base_gc[GTK_STATE_SELECTED]; + text_gc = style->text_gc[GTK_STATE_SELECTED]; } else { - selection_gc = widget->style->base_gc[GTK_STATE_ACTIVE]; - text_gc = widget->style->text_gc[GTK_STATE_ACTIVE]; + selection_gc = style->base_gc[GTK_STATE_ACTIVE]; + text_gc = style->text_gc[GTK_STATE_ACTIVE]; } for (i = 0; i < n_ranges; i++) { @@ -2355,13 +2379,13 @@ static void gtk_secure_entry_draw_cursor(GtkSecureEntry * entry) { + GtkWidget *widget = GTK_WIDGET(entry); GdkKeymap *keymap = gdk_keymap_get_for_display(gtk_widget_get_display - (GTK_WIDGET(entry))); + (widget)); PangoDirection keymap_direction = gdk_keymap_get_direction(keymap); - if (GTK_WIDGET_DRAWABLE(entry)) { - GtkWidget *widget = GTK_WIDGET(entry); + if (gtk_widget_is_drawable (widget)) { GdkRectangle cursor_location; gboolean split_cursor; @@ -2419,7 +2443,7 @@ static void gtk_secure_entry_queue_draw(GtkSecureEntry * entry) { - if (GTK_WIDGET_REALIZED(entry)) + if (gtk_widget_get_realized (GTK_WIDGET(entry))) gdk_window_invalidate_rect(entry->text_area, NULL, FALSE); } @@ -2508,7 +2532,7 @@ PangoLayoutLine *line; PangoRectangle logical_rect; - if (!GTK_WIDGET_REALIZED(entry)) + if (!gtk_widget_get_realized (GTK_WIDGET(entry))) return; gdk_drawable_get_size(entry->text_area, &text_area_width, NULL); @@ -3158,10 +3182,11 @@ static gboolean cursor_blinks(GtkSecureEntry * entry) { - GtkSettings *settings = gtk_widget_get_settings(GTK_WIDGET(entry)); + GtkWidget *widget = GTK_WIDGET(entry); + GtkSettings *settings = gtk_widget_get_settings(widget); gboolean blink; - if (GTK_WIDGET_HAS_FOCUS(entry) && + if (gtk_widget_has_focus (widget) && entry->selection_bound == entry->current_pos) { g_object_get(settings, "gtk-cursor-blink", &blink, NULL); return blink; @@ -3183,24 +3208,28 @@ static void show_cursor(GtkSecureEntry * entry) { + GtkWidget *widget = GTK_WIDGET(entry); + if (!entry->cursor_visible) { entry->cursor_visible = TRUE; - if (GTK_WIDGET_HAS_FOCUS(entry) + if (gtk_widget_has_focus (widget) && entry->selection_bound == entry->current_pos) - gtk_widget_queue_draw(GTK_WIDGET(entry)); + gtk_widget_queue_draw(widget); } } static void hide_cursor(GtkSecureEntry * entry) { + GtkWidget *widget = GTK_WIDGET(entry); + if (entry->cursor_visible) { entry->cursor_visible = FALSE; - if (GTK_WIDGET_HAS_FOCUS(entry) + if (gtk_widget_has_focus (widget) && entry->selection_bound == entry->current_pos) - gtk_widget_queue_draw(GTK_WIDGET(entry)); + gtk_widget_queue_draw(widget); } } @@ -3211,19 +3240,21 @@ blink_cb(gpointer data) { GtkSecureEntry *entry; + GtkWidget *widget; GDK_THREADS_ENTER(); entry = GTK_SECURE_ENTRY(data); + widget = GTK_WIDGET (entry); - if (!GTK_WIDGET_HAS_FOCUS(entry)) { + if (!gtk_widget_has_focus (widget)) { g_warning ("GtkSecureEntry - did not receive focus-out-event. If you\n" "connect a handler to this signal, it must return\n" "FALSE so the entry gets the event as well"); } - g_assert(GTK_WIDGET_HAS_FOCUS(entry)); + g_assert(gtk_widget_has_focus (widget)); g_assert(entry->selection_bound == entry->current_pos); if (entry->cursor_visible) {