X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fhildon2%2Fmodest-number-editor.c;h=254e3e7569a7b03ec819982c8ecc2c9cd83df3dc;hp=de2a072467da5acc2873fbcf180599a15e9eda92;hb=03f20a5e06f43b43765ca16f2ac482eb558ed845;hpb=17319d5700c0f40e765d1128f20f3ffa86602932 diff --git a/src/hildon2/modest-number-editor.c b/src/hildon2/modest-number-editor.c index de2a072..254e3e7 100644 --- a/src/hildon2/modest-number-editor.c +++ b/src/hildon2/modest-number-editor.c @@ -1,8 +1,31 @@ /* - * This file is a part of modest + * Copyright (C) 2008 Nokia Corporation, all rights reserved. + * All rights reserved. * - * Copyright (C) 2005, 2006, 2008 Nokia Corporation, all rights reserved. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Nokia Corporation nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER + * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /** @@ -191,7 +214,7 @@ modest_number_editor_class_init (ModestNumberEditorClass *editor g_signal_new ("valid_changed", MODEST_TYPE_NUMBER_EDITOR, G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (ModestNumberEditorClass, valid_changed), - g_signal_accumulator_true_handled, NULL, + NULL, NULL, g_cclosure_marshal_VOID__BOOLEAN, G_TYPE_NONE, 1, G_TYPE_BOOLEAN); } @@ -221,21 +244,6 @@ modest_number_editor_init (ModestNumberEditor *editor) g_assert (priv); priv->select_all_idle_id = 0; - - /* Connect child widget signals */ - g_signal_connect (GTK_OBJECT (editor), "changed", - G_CALLBACK (modest_number_editor_entry_changed), - editor); - - g_signal_connect (GTK_OBJECT (editor), "focus-out-event", - G_CALLBACK (modest_number_editor_entry_focusout), - editor); - - hildon_gtk_entry_set_input_mode (GTK_ENTRY (editor), - HILDON_GTK_INPUT_MODE_NUMERIC); - - modest_number_editor_set_range (editor, G_MININT, G_MAXINT); - priv->is_valid = TRUE; } @@ -353,11 +361,12 @@ modest_number_editor_validate_value (ModestNumberEditor *editor, modest_number_editor_set_value (editor, fixup_value); g_signal_emit (editor, ModestNumberEditor_signal[RANGE_ERROR], 0, error_code, &r); add_select_all_idle (editor); + is_valid = modest_number_editor_is_valid (editor); } if (priv->is_valid != is_valid) { - g_signal_emit (editor, ModestNumberEditor_signal[VALID_CHANGED], 0, is_valid); priv->is_valid = is_valid; + g_signal_emit (editor, ModestNumberEditor_signal[VALID_CHANGED], 0, is_valid); } } @@ -375,10 +384,15 @@ modest_number_editor_entry_focusout (GtkWidget *widget, GdkEventFocus *event, gpointer data) { - g_assert (MODEST_IS_NUMBER_EDITOR(data)); + GtkWidget *window; + + g_assert (MODEST_IS_NUMBER_EDITOR(data)); - modest_number_editor_validate_value (MODEST_NUMBER_EDITOR(data), FALSE); - return FALSE; + window = gtk_widget_get_toplevel (widget); + if (window && gtk_window_has_toplevel_focus (GTK_WINDOW (window))) + modest_number_editor_validate_value (MODEST_NUMBER_EDITOR(data), FALSE); + + return FALSE; } static gboolean @@ -439,9 +453,23 @@ modest_number_editor_new (gint min, { ModestNumberEditor *editor = g_object_new (MODEST_TYPE_NUMBER_EDITOR, NULL); + /* Connect child widget signals */ + g_signal_connect (GTK_OBJECT (editor), "changed", + G_CALLBACK (modest_number_editor_entry_changed), + editor); + + g_signal_connect (GTK_OBJECT (editor), "focus-out-event", + G_CALLBACK (modest_number_editor_entry_focusout), + editor); + + /* Numeric input mode */ + hildon_gtk_entry_set_input_mode (GTK_ENTRY (editor), + HILDON_GTK_INPUT_MODE_NUMERIC); + /* Set user inputted range to editor */ modest_number_editor_set_range (editor, min, max); + return GTK_WIDGET (editor); }