summaryrefslogtreecommitdiff
path: root/gtk
diff options
context:
space:
mode:
Diffstat (limited to 'gtk')
-rw-r--r--gtk/gtk.symbols5
-rw-r--r--gtk/gtkcheckbutton.c17
-rw-r--r--gtk/gtkcomboboxtext.c1
-rw-r--r--gtk/gtkfilechooserentry.c5
-rw-r--r--gtk/gtkmenutoolbutton.c2
-rw-r--r--gtk/gtkradiobutton.c29
-rw-r--r--gtk/gtksizerequest.c90
-rw-r--r--gtk/gtkspinbutton.c12
-rw-r--r--gtk/gtktogglebutton.c88
-rw-r--r--gtk/gtktogglebutton.h14
-rw-r--r--gtk/gtktoggletoolbutton.c4
-rw-r--r--gtk/gtktoolbar.c2
-rw-r--r--gtk/gtktreeview.c2
-rw-r--r--gtk/gtktreeviewcolumn.c2
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);