diff options
Diffstat (limited to 'gtk')
-rw-r--r-- | gtk/gtk.symbols | 5 | ||||
-rw-r--r-- | gtk/gtkcheckbutton.c | 17 | ||||
-rw-r--r-- | gtk/gtkcomboboxtext.c | 1 | ||||
-rw-r--r-- | gtk/gtkfilechooserentry.c | 5 | ||||
-rw-r--r-- | gtk/gtkmenutoolbutton.c | 2 | ||||
-rw-r--r-- | gtk/gtkradiobutton.c | 29 | ||||
-rw-r--r-- | gtk/gtksizerequest.c | 90 | ||||
-rw-r--r-- | gtk/gtkspinbutton.c | 12 | ||||
-rw-r--r-- | gtk/gtktogglebutton.c | 88 | ||||
-rw-r--r-- | gtk/gtktogglebutton.h | 14 | ||||
-rw-r--r-- | gtk/gtktoggletoolbutton.c | 4 | ||||
-rw-r--r-- | gtk/gtktoolbar.c | 2 | ||||
-rw-r--r-- | gtk/gtktreeview.c | 2 | ||||
-rw-r--r-- | gtk/gtktreeviewcolumn.c | 2 |
14 files changed, 161 insertions, 112 deletions
diff --git a/gtk/gtk.symbols b/gtk/gtk.symbols index 69f747549e..6ae374f013 100644 --- a/gtk/gtk.symbols +++ b/gtk/gtk.symbols @@ -2903,9 +2903,14 @@ gtk_scale_button_get_popup #if IN_FILE(__GTK_SCROLLABLE_C__) gtk_scrollable_get_type G_GNUC_CONST gtk_scrollable_get_hadjustment +gtk_scrollable_get_hscroll_policy gtk_scrollable_get_vadjustment +gtk_scrollable_get_vscroll_policy +gtk_scrollable_policy_get_type G_GNUC_CONST gtk_scrollable_set_hadjustment +gtk_scrollable_set_hscroll_policy gtk_scrollable_set_vadjustment +gtk_scrollable_set_vscroll_policy #endif #endif diff --git a/gtk/gtkcheckbutton.c b/gtk/gtkcheckbutton.c index 86bf09fef8..fa993804c3 100644 --- a/gtk/gtkcheckbutton.c +++ b/gtk/gtkcheckbutton.c @@ -89,8 +89,7 @@ gtk_check_button_init (GtkCheckButton *check_button) { gtk_widget_set_has_window (GTK_WIDGET (check_button), FALSE); gtk_widget_set_receives_default (GTK_WIDGET (check_button), FALSE); - GTK_TOGGLE_BUTTON (check_button)->draw_indicator = TRUE; - GTK_BUTTON (check_button)->depress_on_activate = FALSE; + gtk_toggle_button_set_mode (GTK_TOGGLE_BUTTON (check_button), TRUE); } GtkWidget* @@ -201,7 +200,7 @@ gtk_check_button_size_request (GtkWidget *widget, { GtkToggleButton *toggle_button = GTK_TOGGLE_BUTTON (widget); - if (toggle_button->draw_indicator) + if (gtk_toggle_button_get_mode (toggle_button)) { GtkWidget *child; gint temp; @@ -257,7 +256,7 @@ gtk_check_button_size_allocate (GtkWidget *widget, check_button = GTK_CHECK_BUTTON (widget); toggle_button = GTK_TOGGLE_BUTTON (widget); - if (toggle_button->draw_indicator) + if (gtk_toggle_button_get_mode (toggle_button)) { GtkWidget *child; gint indicator_size; @@ -274,7 +273,7 @@ gtk_check_button_size_allocate (GtkWidget *widget, gtk_widget_set_allocation (widget, allocation); if (gtk_widget_get_realized (widget)) - gdk_window_move_resize (button->event_window, + gdk_window_move_resize (gtk_button_get_event_window (button), allocation->x, allocation->y, allocation->width, allocation->height); @@ -321,8 +320,8 @@ gtk_check_button_draw (GtkWidget *widget, toggle_button = GTK_TOGGLE_BUTTON (widget); bin = GTK_BIN (widget); - - if (toggle_button->draw_indicator) + + if (gtk_toggle_button_get_mode (toggle_button)) { gtk_check_button_paint (widget, cr); @@ -395,9 +394,9 @@ gtk_real_check_button_draw_indicator (GtkCheckButton *check_button, if (!interior_focus || !(child && gtk_widget_get_visible (child))) x += focus_width + focus_pad; - if (toggle_button->inconsistent) + if (gtk_toggle_button_get_inconsistent (toggle_button)) shadow_type = GTK_SHADOW_ETCHED_IN; - else if (toggle_button->active) + else if (gtk_toggle_button_get_active (toggle_button)) shadow_type = GTK_SHADOW_IN; else shadow_type = GTK_SHADOW_OUT; diff --git a/gtk/gtkcomboboxtext.c b/gtk/gtkcomboboxtext.c index db3a4e86aa..d36d6dc25e 100644 --- a/gtk/gtkcomboboxtext.c +++ b/gtk/gtkcomboboxtext.c @@ -174,7 +174,6 @@ gtk_combo_box_text_insert_text (GtkComboBoxText *combo_box, GtkListStore *store; GtkTreeIter iter; gint text_column; - gint id_column; gint column_type; g_return_if_fail (GTK_IS_COMBO_BOX_TEXT (combo_box)); diff --git a/gtk/gtkfilechooserentry.c b/gtk/gtkfilechooserentry.c index 3e5420a947..009d842f37 100644 --- a/gtk/gtkfilechooserentry.c +++ b/gtk/gtkfilechooserentry.c @@ -998,13 +998,16 @@ get_entry_cursor_x (GtkFileChooserEntry *chooser_entry, gint layout_x, layout_y; gint layout_index; PangoRectangle strong_pos; + gint start_pos, end_pos; layout = gtk_entry_get_layout (GTK_ENTRY (chooser_entry)); gtk_entry_get_layout_offsets (GTK_ENTRY (chooser_entry), &layout_x, &layout_y); + gtk_editable_get_selection_bounds (GTK_EDITABLE (chooser_entry), &start_pos, &end_pos); layout_index = gtk_entry_text_index_to_layout_index (GTK_ENTRY (chooser_entry), - GTK_ENTRY (chooser_entry)->current_pos); + end_pos); + pango_layout_get_cursor_pos (layout, layout_index, &strong_pos, NULL); diff --git a/gtk/gtkmenutoolbutton.c b/gtk/gtkmenutoolbutton.c index 65bffeb901..940b4f20a0 100644 --- a/gtk/gtkmenutoolbutton.c +++ b/gtk/gtkmenutoolbutton.c @@ -310,7 +310,7 @@ menu_position_func (GtkMenu *menu, } else { - gdk_window_get_origin (GTK_BUTTON (priv->arrow_button)->event_window, x, y); + gdk_window_get_origin (gtk_button_get_event_window (GTK_BUTTON (priv->arrow_button)), x, y); gtk_widget_get_preferred_size (priv->arrow_button, &req, NULL); diff --git a/gtk/gtkradiobutton.c b/gtk/gtkradiobutton.c index d760d4f920..7a51b9525d 100644 --- a/gtk/gtkradiobutton.c +++ b/gtk/gtkradiobutton.c @@ -207,7 +207,7 @@ gtk_radio_button_init (GtkRadioButton *radio_button) gtk_widget_set_has_window (GTK_WIDGET (radio_button), FALSE); gtk_widget_set_receives_default (GTK_WIDGET (radio_button), FALSE); - GTK_TOGGLE_BUTTON (radio_button)->active = TRUE; + _gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (radio_button), TRUE); GTK_BUTTON (radio_button)->depress_on_activate = FALSE; @@ -652,7 +652,7 @@ gtk_radio_button_focus (GtkWidget *widget, /* Radio buttons with draw_indicator unset focus "normally", since * they look like buttons to the user. */ - if (!GTK_TOGGLE_BUTTON (widget)->draw_indicator) + if (!gtk_toggle_button_get_mode (GTK_TOGGLE_BUTTON (widget))) return GTK_WIDGET_CLASS (gtk_radio_button_parent_class)->focus (widget, direction); if (gtk_widget_is_focus (widget)) @@ -766,7 +766,7 @@ gtk_radio_button_focus (GtkWidget *widget, tmp_slist = priv->group; while (tmp_slist) { - if (GTK_TOGGLE_BUTTON (tmp_slist->data)->active) + if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (tmp_slist->data))) selected_button = tmp_slist->data; tmp_slist = tmp_slist->next; } @@ -795,7 +795,7 @@ gtk_radio_button_clicked (GtkButton *button) g_object_ref (GTK_WIDGET (button)); - if (toggle_button->active) + if (gtk_toggle_button_get_active (toggle_button)) { tmp_button = NULL; tmp_list = priv->group; @@ -805,7 +805,8 @@ gtk_radio_button_clicked (GtkButton *button) tmp_button = tmp_list->data; tmp_list = tmp_list->next; - if (tmp_button->active && tmp_button != toggle_button) + if (tmp_button != toggle_button && + gtk_toggle_button_get_active (tmp_button)) break; tmp_button = NULL; @@ -818,14 +819,16 @@ gtk_radio_button_clicked (GtkButton *button) else { toggled = TRUE; - toggle_button->active = !toggle_button->active; + _gtk_toggle_button_set_active (toggle_button, + !gtk_toggle_button_get_active (toggle_button)); new_state = (button->in_button ? GTK_STATE_PRELIGHT : GTK_STATE_NORMAL); } } else { toggled = TRUE; - toggle_button->active = !toggle_button->active; + _gtk_toggle_button_set_active (toggle_button, + !gtk_toggle_button_get_active (toggle_button)); tmp_list = priv->group; while (tmp_list) @@ -833,7 +836,7 @@ gtk_radio_button_clicked (GtkButton *button) tmp_button = tmp_list->data; tmp_list = tmp_list->next; - if (tmp_button->active && (tmp_button != toggle_button)) + if (gtk_toggle_button_get_active (tmp_button) && (tmp_button != toggle_button)) { gtk_button_clicked (GTK_BUTTON (tmp_button)); break; @@ -843,12 +846,12 @@ gtk_radio_button_clicked (GtkButton *button) new_state = (button->in_button ? GTK_STATE_PRELIGHT : GTK_STATE_ACTIVE); } - if (toggle_button->inconsistent) + if (gtk_toggle_button_get_inconsistent (toggle_button)) depressed = FALSE; else if (button->in_button && button->button_down) - depressed = !toggle_button->active; + depressed = !gtk_toggle_button_get_active (toggle_button); else - depressed = toggle_button->active; + depressed = gtk_toggle_button_get_active (toggle_button); if (gtk_widget_get_state (GTK_WIDGET (button)) != new_state) gtk_widget_set_state (GTK_WIDGET (button), new_state); @@ -913,9 +916,9 @@ gtk_radio_button_draw_indicator (GtkCheckButton *check_button, if (!interior_focus || !(child && gtk_widget_get_visible (child))) x += focus_width + focus_pad; - if (toggle_button->inconsistent) + if (gtk_toggle_button_get_inconsistent (toggle_button)) shadow_type = GTK_SHADOW_ETCHED_IN; - else if (toggle_button->active) + else if (gtk_toggle_button_get_active (toggle_button)) shadow_type = GTK_SHADOW_IN; else shadow_type = GTK_SHADOW_OUT; diff --git a/gtk/gtksizerequest.c b/gtk/gtksizerequest.c index f214f9d431..a5a3103d49 100644 --- a/gtk/gtksizerequest.c +++ b/gtk/gtksizerequest.c @@ -119,7 +119,7 @@ static GQuark recursion_check_quark = 0; #endif /* G_DISABLE_CHECKS */ static void -push_recursion_check (GtkWidget *request, +push_recursion_check (GtkWidget *widget, GtkSizeGroupMode orientation, gint for_size) { @@ -130,7 +130,7 @@ push_recursion_check (GtkWidget *request, if (recursion_check_quark == 0) recursion_check_quark = g_quark_from_static_string ("gtk-size-request-in-progress"); - previous_method = g_object_get_qdata (G_OBJECT (request), recursion_check_quark); + previous_method = g_object_get_qdata (G_OBJECT (widget), recursion_check_quark); if (orientation == GTK_SIZE_GROUP_HORIZONTAL) { @@ -147,26 +147,26 @@ push_recursion_check (GtkWidget *request, " GtkWidget ::%s implementation. " "Should just invoke GTK_WIDGET_GET_CLASS(widget)->%s " "directly rather than using gtk_widget_%s", - G_OBJECT_TYPE_NAME (request), request, + G_OBJECT_TYPE_NAME (widget), widget, method, previous_method, method, method); } - g_object_set_qdata (G_OBJECT (request), recursion_check_quark, (char*) method); + g_object_set_qdata (G_OBJECT (widget), recursion_check_quark, (char*) method); #endif /* G_DISABLE_CHECKS */ } static void -pop_recursion_check (GtkWidget *request, +pop_recursion_check (GtkWidget *widget, GtkSizeGroupMode orientation) { #ifndef G_DISABLE_CHECKS - g_object_set_qdata (G_OBJECT (request), recursion_check_quark, NULL); + g_object_set_qdata (G_OBJECT (widget), recursion_check_quark, NULL); #endif } static void -compute_size_for_orientation (GtkWidget *request, +compute_size_for_orientation (GtkWidget *widget, GtkSizeGroupMode orientation, gint for_size, gint *minimum_size, @@ -174,14 +174,12 @@ compute_size_for_orientation (GtkWidget *request, { SizeRequestCache *cache; SizeRequest *cached_size; - GtkWidget *widget; gboolean found_in_cache = FALSE; int adjusted_min, adjusted_natural; - g_return_if_fail (GTK_IS_WIDGET (request)); + g_return_if_fail (GTK_IS_WIDGET (widget)); g_return_if_fail (minimum_size != NULL || natural_size != NULL); - widget = GTK_WIDGET (request); cache = _gtk_widget_peek_request_cache (widget); if (orientation == GTK_SIZE_GROUP_HORIZONTAL) @@ -226,9 +224,9 @@ compute_size_for_orientation (GtkWidget *request, if (for_size < 0) { - push_recursion_check (request, orientation, for_size); - GTK_WIDGET_GET_CLASS (request)->get_preferred_width (request, &min_size, &nat_size); - pop_recursion_check (request, orientation); + push_recursion_check (widget, orientation, for_size); + GTK_WIDGET_GET_CLASS (widget)->get_preferred_width (widget, &min_size, &nat_size); + pop_recursion_check (widget, orientation); } else { @@ -240,16 +238,16 @@ compute_size_for_orientation (GtkWidget *request, gtk_widget_get_preferred_height (widget, NULL, &natural_height); /* convert for_size to unadjusted height (for_size is a proposed allocation) */ - GTK_WIDGET_GET_CLASS (request)->adjust_size_allocation (widget, - GTK_ORIENTATION_VERTICAL, - &natural_height, - &ignored_position, - &for_size); - - push_recursion_check (request, orientation, for_size); - GTK_WIDGET_GET_CLASS (request)->get_preferred_width_for_height (request, for_size, + GTK_WIDGET_GET_CLASS (widget)->adjust_size_allocation (widget, + GTK_ORIENTATION_VERTICAL, + &natural_height, + &ignored_position, + &for_size); + + push_recursion_check (widget, orientation, for_size); + GTK_WIDGET_GET_CLASS (widget)->get_preferred_width_for_height (widget, for_size, &min_size, &nat_size); - pop_recursion_check (request, orientation); + pop_recursion_check (widget, orientation); } } else @@ -258,9 +256,9 @@ compute_size_for_orientation (GtkWidget *request, if (for_size < 0) { - push_recursion_check (request, orientation, for_size); - GTK_WIDGET_GET_CLASS (request)->get_preferred_height (request, &min_size, &nat_size); - pop_recursion_check (request, orientation); + push_recursion_check (widget, orientation, for_size); + GTK_WIDGET_GET_CLASS (widget)->get_preferred_height (widget, &min_size, &nat_size); + pop_recursion_check (widget, orientation); } else { @@ -272,23 +270,23 @@ compute_size_for_orientation (GtkWidget *request, gtk_widget_get_preferred_width (widget, NULL, &natural_width); /* convert for_size to unadjusted width (for_size is a proposed allocation) */ - GTK_WIDGET_GET_CLASS (request)->adjust_size_allocation (widget, - GTK_ORIENTATION_HORIZONTAL, - &natural_width, - &ignored_position, - &for_size); - - push_recursion_check (request, orientation, for_size); - GTK_WIDGET_GET_CLASS (request)->get_preferred_height_for_width (request, for_size, + GTK_WIDGET_GET_CLASS (widget)->adjust_size_allocation (widget, + GTK_ORIENTATION_HORIZONTAL, + &natural_width, + &ignored_position, + &for_size); + + push_recursion_check (widget, orientation, for_size); + GTK_WIDGET_GET_CLASS (widget)->get_preferred_height_for_width (widget, for_size, &min_size, &nat_size); - pop_recursion_check (request, orientation); + pop_recursion_check (widget, orientation); } } if (min_size > nat_size) { g_warning ("%s %p reported min size %d and natural size %d; natural size must be >= min size", - G_OBJECT_TYPE_NAME (request), request, min_size, nat_size); + G_OBJECT_TYPE_NAME (widget), widget, min_size, nat_size); } /* Support for dangling "size-request" signal implementations on @@ -308,18 +306,18 @@ compute_size_for_orientation (GtkWidget *request, adjusted_min = cached_size->minimum_size; adjusted_natural = cached_size->natural_size; - GTK_WIDGET_GET_CLASS (request)->adjust_size_request (GTK_WIDGET (request), - orientation == GTK_SIZE_GROUP_HORIZONTAL ? - GTK_ORIENTATION_HORIZONTAL : - GTK_ORIENTATION_VERTICAL, - &adjusted_min, - &adjusted_natural); + GTK_WIDGET_GET_CLASS (widget)->adjust_size_request (widget, + orientation == GTK_SIZE_GROUP_HORIZONTAL ? + GTK_ORIENTATION_HORIZONTAL : + GTK_ORIENTATION_VERTICAL, + &adjusted_min, + &adjusted_natural); if (adjusted_min < cached_size->minimum_size || adjusted_natural < cached_size->natural_size) { g_warning ("%s %p adjusted size %s min %d natural %d must not decrease below min %d natural %d", - G_OBJECT_TYPE_NAME (request), request, + G_OBJECT_TYPE_NAME (widget), widget, orientation == GTK_SIZE_GROUP_VERTICAL ? "vertical" : "horizontal", adjusted_min, adjusted_natural, cached_size->minimum_size, cached_size->natural_size); @@ -328,7 +326,7 @@ compute_size_for_orientation (GtkWidget *request, else if (adjusted_min > adjusted_natural) { g_warning ("%s %p adjusted size %s min %d natural %d original min %d natural %d has min greater than natural", - G_OBJECT_TYPE_NAME (request), request, + G_OBJECT_TYPE_NAME (widget), widget, orientation == GTK_SIZE_GROUP_VERTICAL ? "vertical" : "horizontal", adjusted_min, adjusted_natural, cached_size->minimum_size, cached_size->natural_size); @@ -344,8 +342,8 @@ compute_size_for_orientation (GtkWidget *request, /* Update size-groups with our request and update our cached requests * with the size-group values in a single pass. */ - _gtk_size_group_bump_requisition (GTK_WIDGET (request), - orientation, + _gtk_size_group_bump_requisition (widget, + orientation, &cached_size->minimum_size, &cached_size->natural_size); } @@ -360,7 +358,7 @@ compute_size_for_orientation (GtkWidget *request, GTK_NOTE (SIZE_REQUEST, g_print ("[%p] %s\t%s: %d is minimum %d and natural: %d (hit cache: %s)\n", - request, G_OBJECT_TYPE_NAME (request), + widget, G_OBJECT_TYPE_NAME (widget), orientation == GTK_SIZE_GROUP_HORIZONTAL ? "width for height" : "height for width" , for_size, diff --git a/gtk/gtkspinbutton.c b/gtk/gtkspinbutton.c index 7d11ac6e66..18503b6cae 100644 --- a/gtk/gtkspinbutton.c +++ b/gtk/gtkspinbutton.c @@ -679,7 +679,7 @@ gtk_spin_button_size_request (GtkWidget *widget, GTK_WIDGET_CLASS (gtk_spin_button_parent_class)->size_request (widget, requisition); - if (entry->width_chars < 0) + if (gtk_entry_get_width_chars (entry) < 0) { PangoContext *context; PangoFontMetrics *metrics; @@ -1003,7 +1003,7 @@ static gint gtk_spin_button_focus_out (GtkWidget *widget, GdkEventFocus *event) { - if (GTK_ENTRY (widget)->editable) + if (gtk_editable_get_editable (GTK_EDITABLE (widget))) gtk_spin_button_update (GTK_SPIN_BUTTON (widget)); return GTK_WIDGET_CLASS (gtk_spin_button_parent_class)->focus_out_event (widget, event); @@ -1144,8 +1144,8 @@ gtk_spin_button_button_press (GtkWidget *widget, if (!gtk_widget_has_focus (widget)) gtk_widget_grab_focus (widget); priv->button = event->button; - - if (GTK_ENTRY (widget)->editable) + + if (gtk_editable_get_editable (GTK_EDITABLE (widget))) gtk_spin_button_update (spin); gtk_widget_get_preferred_size (widget, &requisition, NULL); @@ -1468,7 +1468,7 @@ gtk_spin_button_snap (GtkSpinButton *spin_button, static void gtk_spin_button_activate (GtkEntry *entry) { - if (entry->editable) + if (gtk_editable_get_editable (GTK_EDITABLE (entry))) gtk_spin_button_update (GTK_SPIN_BUTTON (entry)); /* Chain up so that entry->activates_default is honored */ @@ -2291,7 +2291,7 @@ gtk_spin_button_set_snap_to_ticks (GtkSpinButton *spin_button, if (new_val != priv->snap_to_ticks) { priv->snap_to_ticks = new_val; - if (new_val && GTK_ENTRY (spin_button)->editable) + if (new_val && gtk_editable_get_editable (GTK_EDITABLE (spin_button))) gtk_spin_button_update (spin_button); g_object_notify (G_OBJECT (spin_button), "snap-to-ticks"); diff --git a/gtk/gtktogglebutton.c b/gtk/gtktogglebutton.c index e1a3c169bb..a60ffebae3 100644 --- a/gtk/gtktogglebutton.c +++ b/gtk/gtktogglebutton.c @@ -39,6 +39,13 @@ #define DEFAULT_TOP_POS 4 #define DEFAULT_SPACING 7 +struct _GtkToggleButtonPrivate +{ + guint active : 1; + guint draw_indicator : 1; + guint inconsistent : 1; +}; + enum { TOGGLED, LAST_SIGNAL @@ -141,13 +148,22 @@ gtk_toggle_button_class_init (GtkToggleButtonClass *class) NULL, NULL, _gtk_marshal_VOID__VOID, G_TYPE_NONE, 0); + + g_type_class_add_private (class, sizeof (GtkToggleButtonPrivate)); } static void gtk_toggle_button_init (GtkToggleButton *toggle_button) { - toggle_button->active = FALSE; - toggle_button->draw_indicator = FALSE; + GtkToggleButtonPrivate *priv; + + toggle_button->priv = G_TYPE_INSTANCE_GET_PRIVATE (toggle_button, + GTK_TYPE_TOGGLE_BUTTON, + GtkToggleButtonPrivate); + priv = toggle_button->priv; + + priv->active = FALSE; + priv->draw_indicator = FALSE; GTK_BUTTON (toggle_button)->depress_on_activate = TRUE; } @@ -262,20 +278,19 @@ gtk_toggle_button_get_property (GObject *object, GValue *value, GParamSpec *pspec) { - GtkToggleButton *tb; - - tb = GTK_TOGGLE_BUTTON (object); + GtkToggleButton *tb = GTK_TOGGLE_BUTTON (object); + GtkToggleButtonPrivate *priv = tb->priv; switch (prop_id) { case PROP_ACTIVE: - g_value_set_boolean (value, tb->active); + g_value_set_boolean (value, priv->active); break; case PROP_INCONSISTENT: - g_value_set_boolean (value, tb->inconsistent); + g_value_set_boolean (value, priv->inconsistent); break; case PROP_DRAW_INDICATOR: - g_value_set_boolean (value, tb->draw_indicator); + g_value_set_boolean (value, priv->draw_indicator); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -301,13 +316,17 @@ void gtk_toggle_button_set_mode (GtkToggleButton *toggle_button, gboolean draw_indicator) { + GtkToggleButtonPrivate *priv; + g_return_if_fail (GTK_IS_TOGGLE_BUTTON (toggle_button)); + priv = toggle_button->priv; + draw_indicator = draw_indicator ? TRUE : FALSE; - if (toggle_button->draw_indicator != draw_indicator) + if (priv->draw_indicator != draw_indicator) { - toggle_button->draw_indicator = draw_indicator; + priv->draw_indicator = draw_indicator; GTK_BUTTON (toggle_button)->depress_on_activate = !draw_indicator; if (gtk_widget_get_visible (GTK_WIDGET (toggle_button))) @@ -332,28 +351,38 @@ gtk_toggle_button_get_mode (GtkToggleButton *toggle_button) { g_return_val_if_fail (GTK_IS_TOGGLE_BUTTON (toggle_button), FALSE); - return toggle_button->draw_indicator; + return toggle_button->priv->draw_indicator; } void gtk_toggle_button_set_active (GtkToggleButton *toggle_button, gboolean is_active) { + GtkToggleButtonPrivate *priv; + g_return_if_fail (GTK_IS_TOGGLE_BUTTON (toggle_button)); + priv = toggle_button->priv; + is_active = is_active != FALSE; - if (toggle_button->active != is_active) + if (priv->active != is_active) gtk_button_clicked (GTK_BUTTON (toggle_button)); } +void +_gtk_toggle_button_set_active (GtkToggleButton *toggle_button, + gboolean is_active) +{ + toggle_button->priv->active = is_active; +} gboolean gtk_toggle_button_get_active (GtkToggleButton *toggle_button) { g_return_val_if_fail (GTK_IS_TOGGLE_BUTTON (toggle_button), FALSE); - return (toggle_button->active) ? TRUE : FALSE; + return toggle_button->priv->active; } @@ -384,14 +413,18 @@ void gtk_toggle_button_set_inconsistent (GtkToggleButton *toggle_button, gboolean setting) { + GtkToggleButtonPrivate *priv; + g_return_if_fail (GTK_IS_TOGGLE_BUTTON (toggle_button)); - + + priv = toggle_button->priv; + setting = setting != FALSE; - if (setting != toggle_button->inconsistent) + if (setting != priv->inconsistent) { - toggle_button->inconsistent = setting; - + priv->inconsistent = setting; + gtk_toggle_button_update_state (GTK_BUTTON (toggle_button)); gtk_widget_queue_draw (GTK_WIDGET (toggle_button)); @@ -412,21 +445,23 @@ gtk_toggle_button_get_inconsistent (GtkToggleButton *toggle_button) { g_return_val_if_fail (GTK_IS_TOGGLE_BUTTON (toggle_button), FALSE); - return toggle_button->inconsistent; + return toggle_button->priv->inconsistent; } static gint gtk_toggle_button_draw (GtkWidget *widget, cairo_t *cr) { + GtkToggleButton *toggle_button = GTK_TOGGLE_BUTTON (widget); + GtkToggleButtonPrivate *priv = toggle_button->priv; GtkWidget *child = gtk_bin_get_child (GTK_BIN (widget)); GtkButton *button = GTK_BUTTON (widget); GtkStateType state_type; GtkShadowType shadow_type; state_type = gtk_widget_get_state (widget); - - if (GTK_TOGGLE_BUTTON (widget)->inconsistent) + + if (priv->inconsistent) { if (state_type == GTK_STATE_ACTIVE) state_type = GTK_STATE_NORMAL; @@ -493,7 +528,9 @@ static void gtk_toggle_button_clicked (GtkButton *button) { GtkToggleButton *toggle_button = GTK_TOGGLE_BUTTON (button); - toggle_button->active = !toggle_button->active; + GtkToggleButtonPrivate *priv = toggle_button->priv; + + priv->active = !priv->active; gtk_toggle_button_toggled (toggle_button); @@ -509,6 +546,7 @@ static void gtk_toggle_button_update_state (GtkButton *button) { GtkToggleButton *toggle_button = GTK_TOGGLE_BUTTON (button); + GtkToggleButtonPrivate *priv = toggle_button->priv; gboolean depressed, touchscreen; GtkStateType new_state; @@ -516,14 +554,14 @@ gtk_toggle_button_update_state (GtkButton *button) "gtk-touchscreen-mode", &touchscreen, NULL); - if (toggle_button->inconsistent) + if (priv->inconsistent) depressed = FALSE; else if (button->in_button && button->button_down) depressed = TRUE; else - depressed = toggle_button->active; - - if (!touchscreen && button->in_button && (!button->button_down || toggle_button->draw_indicator)) + depressed = priv->active; + + if (!touchscreen && button->in_button && (!button->button_down || priv->draw_indicator)) new_state = GTK_STATE_PRELIGHT; else new_state = depressed ? GTK_STATE_ACTIVE : GTK_STATE_NORMAL; diff --git a/gtk/gtktogglebutton.h b/gtk/gtktogglebutton.h index 321b472ffb..48b477cd82 100644 --- a/gtk/gtktogglebutton.h +++ b/gtk/gtktogglebutton.h @@ -44,17 +44,16 @@ G_BEGIN_DECLS #define GTK_IS_TOGGLE_BUTTON_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_TOGGLE_BUTTON)) #define GTK_TOGGLE_BUTTON_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_TOGGLE_BUTTON, GtkToggleButtonClass)) - -typedef struct _GtkToggleButton GtkToggleButton; -typedef struct _GtkToggleButtonClass GtkToggleButtonClass; +typedef struct _GtkToggleButton GtkToggleButton; +typedef struct _GtkToggleButtonPrivate GtkToggleButtonPrivate; +typedef struct _GtkToggleButtonClass GtkToggleButtonClass; struct _GtkToggleButton { + /*< private >*/ GtkButton button; - guint GSEAL (active) : 1; - guint GSEAL (draw_indicator) : 1; - guint GSEAL (inconsistent) : 1; + GtkToggleButtonPrivate *priv; }; struct _GtkToggleButtonClass @@ -87,6 +86,9 @@ void gtk_toggle_button_set_inconsistent (GtkToggleButton *toggle_button, gboolean setting); gboolean gtk_toggle_button_get_inconsistent (GtkToggleButton *toggle_button); +void _gtk_toggle_button_set_active (GtkToggleButton *toggle_button, + gboolean is_active); + G_END_DECLS diff --git a/gtk/gtktoggletoolbutton.c b/gtk/gtktoggletoolbutton.c index bf6a071a28..e6cea93c93 100644 --- a/gtk/gtktoggletoolbutton.c +++ b/gtk/gtktoggletoolbutton.c @@ -291,7 +291,9 @@ static void button_toggled (GtkWidget *widget, GtkToggleToolButton *toggle_tool_button) { - gboolean toggle_active = GTK_TOGGLE_BUTTON (widget)->active; + gboolean toggle_active; + + toggle_active = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)); if (toggle_tool_button->priv->active != toggle_active) { diff --git a/gtk/gtktoolbar.c b/gtk/gtktoolbar.c index 87b180f999..c6f520ccd1 100644 --- a/gtk/gtktoolbar.c +++ b/gtk/gtktoolbar.c @@ -2603,7 +2603,7 @@ menu_position_func (GtkMenu *menu, gtk_widget_get_allocation (priv->arrow_button, &allocation); - gdk_window_get_origin (GTK_BUTTON (priv->arrow_button)->event_window, x, y); + gdk_window_get_origin (gtk_button_get_event_window (GTK_BUTTON (priv->arrow_button)), x, y); if (priv->orientation == GTK_ORIENTATION_HORIZONTAL) { if (gtk_widget_get_direction (GTK_WIDGET (toolbar)) == GTK_TEXT_DIR_LTR) diff --git a/gtk/gtktreeview.c b/gtk/gtktreeview.c index de2bb25963..18fdf51a43 100644 --- a/gtk/gtktreeview.c +++ b/gtk/gtktreeview.c @@ -9295,7 +9295,7 @@ _gtk_tree_view_column_start_drag (GtkTreeView *tree_view, send_event = gdk_event_new (GDK_LEAVE_NOTIFY); send_event->crossing.send_event = TRUE; - send_event->crossing.window = g_object_ref (GTK_BUTTON (column->button)->event_window); + send_event->crossing.window = g_object_ref (gtk_button_get_event_window (GTK_BUTTON (column->button))); send_event->crossing.subwindow = NULL; send_event->crossing.detail = GDK_NOTIFY_ANCESTOR; send_event->crossing.time = GDK_CURRENT_TIME; diff --git a/gtk/gtktreeviewcolumn.c b/gtk/gtktreeviewcolumn.c index a62165b281..161eb6d315 100644 --- a/gtk/gtktreeviewcolumn.c +++ b/gtk/gtktreeviewcolumn.c @@ -1098,7 +1098,7 @@ gtk_tree_view_column_button_event (GtkWidget *widget, ((GdkEventButton *)event)->button == 1) { column->maybe_reordered = TRUE; - gdk_window_get_pointer (GTK_BUTTON (widget)->event_window, + gdk_window_get_pointer (gtk_button_get_event_window (GTK_BUTTON (widget)), &column->drag_x, &column->drag_y, NULL); |