forked from AuroraMiddleware/gtk
Don't to focus insensitive widgets. (#68203)
Tue Feb 26 18:01:10 2002 Owen Taylor <otaylor@redhat.com> * gtk/gtkwidget.c (gtk_widget_grab_focus): Don't to focus insensitive widgets. (#68203) * gtk/gtkentry.c (gtk_entry_state_changed): Clear any current selection if we become insensitive. (#68203) * gtk/gtkentry.c (gtk_entry_grab_focus): Don't select the text if the entry isn't editable. (#67203) * gtk/gtkentry.c: Activate keybindings when not editable, but supress keybindings that change the text. (#65848, #68203) * gtk/gtkentry.c (gtk_entry_set_property): Reset the IM context for the entry when it is made not editable.
This commit is contained in:
parent
e7171e19c9
commit
d1be9aea8d
17
ChangeLog
17
ChangeLog
@ -1,3 +1,20 @@
|
|||||||
|
Tue Feb 26 18:01:10 2002 Owen Taylor <otaylor@redhat.com>
|
||||||
|
|
||||||
|
* gtk/gtkwidget.c (gtk_widget_grab_focus): Don't
|
||||||
|
to focus insensitive widgets. (#68203)
|
||||||
|
|
||||||
|
* gtk/gtkentry.c (gtk_entry_state_changed): Clear any
|
||||||
|
current selection if we become insensitive. (#68203)
|
||||||
|
|
||||||
|
* gtk/gtkentry.c (gtk_entry_grab_focus): Don't
|
||||||
|
select the text if the entry isn't editable. (#67203)
|
||||||
|
|
||||||
|
* gtk/gtkentry.c: Activate keybindings when not editable,
|
||||||
|
but supress keybindings that change the text. (#65848, #68203)
|
||||||
|
|
||||||
|
* gtk/gtkentry.c (gtk_entry_set_property): Reset the
|
||||||
|
IM context for the entry when it is made not editable.
|
||||||
|
|
||||||
Tue Feb 26 17:04:44 2002 Owen Taylor <otaylor@redhat.com>
|
Tue Feb 26 17:04:44 2002 Owen Taylor <otaylor@redhat.com>
|
||||||
|
|
||||||
* gtk/gtkcolorsel.c (update_color): Emit ::color_changed
|
* gtk/gtkcolorsel.c (update_color): Emit ::color_changed
|
||||||
|
@ -1,3 +1,20 @@
|
|||||||
|
Tue Feb 26 18:01:10 2002 Owen Taylor <otaylor@redhat.com>
|
||||||
|
|
||||||
|
* gtk/gtkwidget.c (gtk_widget_grab_focus): Don't
|
||||||
|
to focus insensitive widgets. (#68203)
|
||||||
|
|
||||||
|
* gtk/gtkentry.c (gtk_entry_state_changed): Clear any
|
||||||
|
current selection if we become insensitive. (#68203)
|
||||||
|
|
||||||
|
* gtk/gtkentry.c (gtk_entry_grab_focus): Don't
|
||||||
|
select the text if the entry isn't editable. (#67203)
|
||||||
|
|
||||||
|
* gtk/gtkentry.c: Activate keybindings when not editable,
|
||||||
|
but supress keybindings that change the text. (#65848, #68203)
|
||||||
|
|
||||||
|
* gtk/gtkentry.c (gtk_entry_set_property): Reset the
|
||||||
|
IM context for the entry when it is made not editable.
|
||||||
|
|
||||||
Tue Feb 26 17:04:44 2002 Owen Taylor <otaylor@redhat.com>
|
Tue Feb 26 17:04:44 2002 Owen Taylor <otaylor@redhat.com>
|
||||||
|
|
||||||
* gtk/gtkcolorsel.c (update_color): Emit ::color_changed
|
* gtk/gtkcolorsel.c (update_color): Emit ::color_changed
|
||||||
|
@ -1,3 +1,20 @@
|
|||||||
|
Tue Feb 26 18:01:10 2002 Owen Taylor <otaylor@redhat.com>
|
||||||
|
|
||||||
|
* gtk/gtkwidget.c (gtk_widget_grab_focus): Don't
|
||||||
|
to focus insensitive widgets. (#68203)
|
||||||
|
|
||||||
|
* gtk/gtkentry.c (gtk_entry_state_changed): Clear any
|
||||||
|
current selection if we become insensitive. (#68203)
|
||||||
|
|
||||||
|
* gtk/gtkentry.c (gtk_entry_grab_focus): Don't
|
||||||
|
select the text if the entry isn't editable. (#67203)
|
||||||
|
|
||||||
|
* gtk/gtkentry.c: Activate keybindings when not editable,
|
||||||
|
but supress keybindings that change the text. (#65848, #68203)
|
||||||
|
|
||||||
|
* gtk/gtkentry.c (gtk_entry_set_property): Reset the
|
||||||
|
IM context for the entry when it is made not editable.
|
||||||
|
|
||||||
Tue Feb 26 17:04:44 2002 Owen Taylor <otaylor@redhat.com>
|
Tue Feb 26 17:04:44 2002 Owen Taylor <otaylor@redhat.com>
|
||||||
|
|
||||||
* gtk/gtkcolorsel.c (update_color): Emit ::color_changed
|
* gtk/gtkcolorsel.c (update_color): Emit ::color_changed
|
||||||
|
@ -1,3 +1,20 @@
|
|||||||
|
Tue Feb 26 18:01:10 2002 Owen Taylor <otaylor@redhat.com>
|
||||||
|
|
||||||
|
* gtk/gtkwidget.c (gtk_widget_grab_focus): Don't
|
||||||
|
to focus insensitive widgets. (#68203)
|
||||||
|
|
||||||
|
* gtk/gtkentry.c (gtk_entry_state_changed): Clear any
|
||||||
|
current selection if we become insensitive. (#68203)
|
||||||
|
|
||||||
|
* gtk/gtkentry.c (gtk_entry_grab_focus): Don't
|
||||||
|
select the text if the entry isn't editable. (#67203)
|
||||||
|
|
||||||
|
* gtk/gtkentry.c: Activate keybindings when not editable,
|
||||||
|
but supress keybindings that change the text. (#65848, #68203)
|
||||||
|
|
||||||
|
* gtk/gtkentry.c (gtk_entry_set_property): Reset the
|
||||||
|
IM context for the entry when it is made not editable.
|
||||||
|
|
||||||
Tue Feb 26 17:04:44 2002 Owen Taylor <otaylor@redhat.com>
|
Tue Feb 26 17:04:44 2002 Owen Taylor <otaylor@redhat.com>
|
||||||
|
|
||||||
* gtk/gtkcolorsel.c (update_color): Emit ::color_changed
|
* gtk/gtkcolorsel.c (update_color): Emit ::color_changed
|
||||||
|
@ -1,3 +1,20 @@
|
|||||||
|
Tue Feb 26 18:01:10 2002 Owen Taylor <otaylor@redhat.com>
|
||||||
|
|
||||||
|
* gtk/gtkwidget.c (gtk_widget_grab_focus): Don't
|
||||||
|
to focus insensitive widgets. (#68203)
|
||||||
|
|
||||||
|
* gtk/gtkentry.c (gtk_entry_state_changed): Clear any
|
||||||
|
current selection if we become insensitive. (#68203)
|
||||||
|
|
||||||
|
* gtk/gtkentry.c (gtk_entry_grab_focus): Don't
|
||||||
|
select the text if the entry isn't editable. (#67203)
|
||||||
|
|
||||||
|
* gtk/gtkentry.c: Activate keybindings when not editable,
|
||||||
|
but supress keybindings that change the text. (#65848, #68203)
|
||||||
|
|
||||||
|
* gtk/gtkentry.c (gtk_entry_set_property): Reset the
|
||||||
|
IM context for the entry when it is made not editable.
|
||||||
|
|
||||||
Tue Feb 26 17:04:44 2002 Owen Taylor <otaylor@redhat.com>
|
Tue Feb 26 17:04:44 2002 Owen Taylor <otaylor@redhat.com>
|
||||||
|
|
||||||
* gtk/gtkcolorsel.c (update_color): Emit ::color_changed
|
* gtk/gtkcolorsel.c (update_color): Emit ::color_changed
|
||||||
|
@ -1,3 +1,20 @@
|
|||||||
|
Tue Feb 26 18:01:10 2002 Owen Taylor <otaylor@redhat.com>
|
||||||
|
|
||||||
|
* gtk/gtkwidget.c (gtk_widget_grab_focus): Don't
|
||||||
|
to focus insensitive widgets. (#68203)
|
||||||
|
|
||||||
|
* gtk/gtkentry.c (gtk_entry_state_changed): Clear any
|
||||||
|
current selection if we become insensitive. (#68203)
|
||||||
|
|
||||||
|
* gtk/gtkentry.c (gtk_entry_grab_focus): Don't
|
||||||
|
select the text if the entry isn't editable. (#67203)
|
||||||
|
|
||||||
|
* gtk/gtkentry.c: Activate keybindings when not editable,
|
||||||
|
but supress keybindings that change the text. (#65848, #68203)
|
||||||
|
|
||||||
|
* gtk/gtkentry.c (gtk_entry_set_property): Reset the
|
||||||
|
IM context for the entry when it is made not editable.
|
||||||
|
|
||||||
Tue Feb 26 17:04:44 2002 Owen Taylor <otaylor@redhat.com>
|
Tue Feb 26 17:04:44 2002 Owen Taylor <otaylor@redhat.com>
|
||||||
|
|
||||||
* gtk/gtkcolorsel.c (update_color): Emit ::color_changed
|
* gtk/gtkcolorsel.c (update_color): Emit ::color_changed
|
||||||
|
@ -1,3 +1,20 @@
|
|||||||
|
Tue Feb 26 18:01:10 2002 Owen Taylor <otaylor@redhat.com>
|
||||||
|
|
||||||
|
* gtk/gtkwidget.c (gtk_widget_grab_focus): Don't
|
||||||
|
to focus insensitive widgets. (#68203)
|
||||||
|
|
||||||
|
* gtk/gtkentry.c (gtk_entry_state_changed): Clear any
|
||||||
|
current selection if we become insensitive. (#68203)
|
||||||
|
|
||||||
|
* gtk/gtkentry.c (gtk_entry_grab_focus): Don't
|
||||||
|
select the text if the entry isn't editable. (#67203)
|
||||||
|
|
||||||
|
* gtk/gtkentry.c: Activate keybindings when not editable,
|
||||||
|
but supress keybindings that change the text. (#65848, #68203)
|
||||||
|
|
||||||
|
* gtk/gtkentry.c (gtk_entry_set_property): Reset the
|
||||||
|
IM context for the entry when it is made not editable.
|
||||||
|
|
||||||
Tue Feb 26 17:04:44 2002 Owen Taylor <otaylor@redhat.com>
|
Tue Feb 26 17:04:44 2002 Owen Taylor <otaylor@redhat.com>
|
||||||
|
|
||||||
* gtk/gtkcolorsel.c (update_color): Emit ::color_changed
|
* gtk/gtkcolorsel.c (update_color): Emit ::color_changed
|
||||||
|
@ -292,6 +292,8 @@ static void gtk_entry_do_popup (GtkEntry *entry,
|
|||||||
GdkEventButton *event);
|
GdkEventButton *event);
|
||||||
static gboolean gtk_entry_mnemonic_activate (GtkWidget *widget,
|
static gboolean gtk_entry_mnemonic_activate (GtkWidget *widget,
|
||||||
gboolean group_cycling);
|
gboolean group_cycling);
|
||||||
|
static void gtk_entry_state_changed (GtkWidget *widget,
|
||||||
|
GtkStateType previous_state);
|
||||||
static void gtk_entry_check_cursor_blink (GtkEntry *entry);
|
static void gtk_entry_check_cursor_blink (GtkEntry *entry);
|
||||||
static void gtk_entry_pend_cursor_blink (GtkEntry *entry);
|
static void gtk_entry_pend_cursor_blink (GtkEntry *entry);
|
||||||
static void get_text_area_size (GtkEntry *entry,
|
static void get_text_area_size (GtkEntry *entry,
|
||||||
@ -767,6 +769,9 @@ gtk_entry_set_property (GObject *object,
|
|||||||
{
|
{
|
||||||
entry->editable = new_value;
|
entry->editable = new_value;
|
||||||
gtk_entry_queue_draw (entry);
|
gtk_entry_queue_draw (entry);
|
||||||
|
|
||||||
|
if (!entry->editable)
|
||||||
|
gtk_entry_reset_im_context (entry);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -1524,18 +1529,19 @@ gtk_entry_key_press (GtkWidget *widget,
|
|||||||
{
|
{
|
||||||
GtkEntry *entry = GTK_ENTRY (widget);
|
GtkEntry *entry = GTK_ENTRY (widget);
|
||||||
|
|
||||||
if (!entry->editable)
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
gtk_entry_pend_cursor_blink (entry);
|
gtk_entry_pend_cursor_blink (entry);
|
||||||
|
|
||||||
|
if (entry->editable)
|
||||||
|
{
|
||||||
if (gtk_im_context_filter_keypress (entry->im_context, event))
|
if (gtk_im_context_filter_keypress (entry->im_context, event))
|
||||||
{
|
{
|
||||||
gtk_entry_obscure_mouse_cursor (entry);
|
gtk_entry_obscure_mouse_cursor (entry);
|
||||||
entry->need_im_reset = TRUE;
|
entry->need_im_reset = TRUE;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
else if (GTK_WIDGET_CLASS (parent_class)->key_press_event (widget, event))
|
}
|
||||||
|
|
||||||
|
if (GTK_WIDGET_CLASS (parent_class)->key_press_event (widget, event))
|
||||||
/* Activate key bindings
|
/* Activate key bindings
|
||||||
*/
|
*/
|
||||||
return TRUE;
|
return TRUE;
|
||||||
@ -1550,14 +1556,14 @@ gtk_entry_key_release (GtkWidget *widget,
|
|||||||
GtkEntry *entry = GTK_ENTRY (widget);
|
GtkEntry *entry = GTK_ENTRY (widget);
|
||||||
|
|
||||||
if (!entry->editable)
|
if (!entry->editable)
|
||||||
return FALSE;
|
{
|
||||||
|
|
||||||
if (gtk_im_context_filter_keypress (entry->im_context, event))
|
if (gtk_im_context_filter_keypress (entry->im_context, event))
|
||||||
{
|
{
|
||||||
entry->need_im_reset = TRUE;
|
entry->need_im_reset = TRUE;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
else
|
}
|
||||||
|
|
||||||
return GTK_WIDGET_CLASS (parent_class)->key_release_event (widget, event);
|
return GTK_WIDGET_CLASS (parent_class)->key_release_event (widget, event);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1604,6 +1610,7 @@ gtk_entry_focus_out (GtkWidget *widget,
|
|||||||
static void
|
static void
|
||||||
gtk_entry_grab_focus (GtkWidget *widget)
|
gtk_entry_grab_focus (GtkWidget *widget)
|
||||||
{
|
{
|
||||||
|
GtkEntry *entry = GTK_ENTRY (widget);
|
||||||
gboolean select_on_focus;
|
gboolean select_on_focus;
|
||||||
|
|
||||||
GTK_WIDGET_CLASS (parent_class)->grab_focus (widget);
|
GTK_WIDGET_CLASS (parent_class)->grab_focus (widget);
|
||||||
@ -1613,7 +1620,7 @@ gtk_entry_grab_focus (GtkWidget *widget)
|
|||||||
&select_on_focus,
|
&select_on_focus,
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
if (select_on_focus && !GTK_ENTRY (widget)->in_click)
|
if (select_on_focus && entry->editable && !entry->in_click)
|
||||||
gtk_editable_select_region (GTK_EDITABLE (widget), 0, -1);
|
gtk_editable_select_region (GTK_EDITABLE (widget), 0, -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1632,10 +1639,18 @@ static void
|
|||||||
gtk_entry_state_changed (GtkWidget *widget,
|
gtk_entry_state_changed (GtkWidget *widget,
|
||||||
GtkStateType previous_state)
|
GtkStateType previous_state)
|
||||||
{
|
{
|
||||||
|
GtkEntry *entry = GTK_ENTRY (widget);
|
||||||
|
|
||||||
if (GTK_WIDGET_REALIZED (widget))
|
if (GTK_WIDGET_REALIZED (widget))
|
||||||
{
|
{
|
||||||
gdk_window_set_background (widget->window, &widget->style->base[GTK_WIDGET_STATE (widget)]);
|
gdk_window_set_background (widget->window, &widget->style->base[GTK_WIDGET_STATE (widget)]);
|
||||||
gdk_window_set_background (GTK_ENTRY (widget)->text_area, &widget->style->base[GTK_WIDGET_STATE (widget)]);
|
gdk_window_set_background (entry->text_area, &widget->style->base[GTK_WIDGET_STATE (widget)]);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!GTK_WIDGET_IS_SENSITIVE (widget))
|
||||||
|
{
|
||||||
|
/* Clear any selection */
|
||||||
|
gtk_editable_select_region (GTK_EDITABLE (entry), entry->current_pos, entry->current_pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
gtk_widget_queue_clear (widget);
|
gtk_widget_queue_clear (widget);
|
||||||
@ -2064,10 +2079,13 @@ gtk_entry_insert_at_cursor (GtkEntry *entry,
|
|||||||
GtkEditable *editable = GTK_EDITABLE (entry);
|
GtkEditable *editable = GTK_EDITABLE (entry);
|
||||||
gint pos = entry->current_pos;
|
gint pos = entry->current_pos;
|
||||||
|
|
||||||
|
if (entry->editable)
|
||||||
|
{
|
||||||
gtk_entry_reset_im_context (entry);
|
gtk_entry_reset_im_context (entry);
|
||||||
|
|
||||||
gtk_editable_insert_text (editable, str, -1, &pos);
|
gtk_editable_insert_text (editable, str, -1, &pos);
|
||||||
gtk_editable_set_position (editable, pos);
|
gtk_editable_set_position (editable, pos);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -2164,13 +2182,18 @@ gtk_entry_cut_clipboard (GtkEntry *entry)
|
|||||||
gint start, end;
|
gint start, end;
|
||||||
|
|
||||||
gtk_entry_copy_clipboard (entry);
|
gtk_entry_copy_clipboard (entry);
|
||||||
|
|
||||||
|
if (entry->editable)
|
||||||
|
{
|
||||||
if (gtk_editable_get_selection_bounds (editable, &start, &end))
|
if (gtk_editable_get_selection_bounds (editable, &start, &end))
|
||||||
gtk_editable_delete_text (editable, start, end);
|
gtk_editable_delete_text (editable, start, end);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gtk_entry_paste_clipboard (GtkEntry *entry)
|
gtk_entry_paste_clipboard (GtkEntry *entry)
|
||||||
{
|
{
|
||||||
|
if (entry->editable)
|
||||||
gtk_entry_paste (entry, GDK_NONE);
|
gtk_entry_paste (entry, GDK_NONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3767,6 +3790,7 @@ unichar_chosen_func (const char *text,
|
|||||||
{
|
{
|
||||||
GtkEntry *entry = GTK_ENTRY (data);
|
GtkEntry *entry = GTK_ENTRY (data);
|
||||||
|
|
||||||
|
if (entry->editable)
|
||||||
gtk_entry_enter_text (entry, text);
|
gtk_entry_enter_text (entry, text);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3308,6 +3308,9 @@ gtk_widget_grab_focus (GtkWidget *widget)
|
|||||||
{
|
{
|
||||||
g_return_if_fail (GTK_IS_WIDGET (widget));
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
||||||
|
|
||||||
|
if (!GTK_WIDGET_IS_SENSITIVE (widget))
|
||||||
|
return;
|
||||||
|
|
||||||
g_object_ref (G_OBJECT (widget));
|
g_object_ref (G_OBJECT (widget));
|
||||||
gtk_signal_emit (GTK_OBJECT (widget), widget_signals[GRAB_FOCUS]);
|
gtk_signal_emit (GTK_OBJECT (widget), widget_signals[GRAB_FOCUS]);
|
||||||
g_object_notify (G_OBJECT (widget), "has_focus");
|
g_object_notify (G_OBJECT (widget), "has_focus");
|
||||||
|
Loading…
Reference in New Issue
Block a user