X-Git-Url: https://vcs.maemo.org/git/?a=blobdiff_plain;f=src%2Fhildon-number-editor.c;h=2d447719418104246583f849f3ba22c231259885;hb=db9685e21af93630b100473c49d066de0ad3691f;hp=0d84e44c0c08928623565ce1c53f76f93258eb4f;hpb=4015b955830f709cfef90b395b1077ea1656c8bd;p=hildon diff --git a/src/hildon-number-editor.c b/src/hildon-number-editor.c index 0d84e44..2d44771 100644 --- a/src/hildon-number-editor.c +++ b/src/hildon-number-editor.c @@ -8,7 +8,7 @@ * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public License * as published by the Free Software Foundation; version 2.1 of - * the License. + * the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of @@ -24,7 +24,7 @@ /** * SECTION:hildon-number-editor - * @short_description: A widget used to enter a number within a pre-defined range + * @short_description: A widget used to enter a number within a pre-defined range. * * HildonNumberEditor is used to enter a number from a specific range. * There are two buttons to scroll the value in number field. @@ -39,24 +39,25 @@ * */ +#undef HILDON_DISABLE_DEPRECATED + #ifdef HAVE_CONFIG_H #include #endif -#include "hildon-number-editor.h" -#include -#include #include #include #include +#include +#include + +#include "hildon-number-editor.h" #include "hildon-marshalers.h" -#include "hildon-private.h" -#include "hildon-input-mode-hint.h" #include "hildon-defines.h" #include "hildon-enum-types.h" #include "hildon-banner.h" -#include #include "hildon-number-editor-private.h" +#include "hildon-private.h" #define _(String) dgettext("hildon-libs", String) @@ -97,6 +98,10 @@ hildon_number_editor_size_allocate (GtkWidget *widget, GtkAllocation *allocation); static gboolean +hildon_number_editor_focus (GtkWidget *widget, + GtkDirectionType direction); + +static gboolean hildon_number_editor_entry_keypress (GtkWidget *widget, GdkEventKey *event, gpointer data); @@ -221,7 +226,7 @@ hildon_number_editor_class_init (HildonNumberEditorClass *editor widget_class->size_request = hildon_number_editor_size_request; widget_class->size_allocate = hildon_number_editor_size_allocate; - widget_class->focus = hildon_private_composite_focus; + widget_class->focus = hildon_number_editor_focus; editor_class->range_error = hildon_number_editor_range_error; @@ -407,8 +412,10 @@ hildon_number_editor_init (HildonNumberEditor *editor) G_CALLBACK (hildon_number_editor_button_released), editor); +#ifdef MAEMO_GTK g_object_set (G_OBJECT (priv->num_entry), - "input-mode", HILDON_INPUT_MODE_HINT_NUMERIC, NULL); + "hildon-input-mode", HILDON_GTK_INPUT_MODE_NUMERIC, NULL); +#endif gtk_widget_show (priv->num_entry); gtk_widget_show (priv->minus); @@ -502,7 +509,8 @@ hildon_number_editor_start_timer (HildonNumberEditor *editor) priv = HILDON_NUMBER_EDITOR_GET_PRIVATE (editor); settings = gtk_settings_get_default (); - g_object_get (settings, "gtk-timeout-update", &timeout, NULL); + g_object_get (settings, "gtk-timeout-repeat", &timeout, NULL); + timeout *= 8; priv->button_event_id = g_timeout_add (timeout, (GSourceFunc) do_mouse_timeout, @@ -613,23 +621,23 @@ hildon_number_editor_validate_value (HildonNumberEditor *editor, */ if (value > priv->end && (priv->end >= 0 || (priv->end < 0 && value >= 0))) { - error_code = MAXIMUM_VALUE_EXCEED; + error_code = HILDON_NUMBER_EDITOR_ERROR_MAXIMUM_VALUE_EXCEED; fixup_value = priv->end; } else if (value < priv->start && (priv->start < 0 || (priv->start >= 0 && value <= 0))) { - error_code = MINIMUM_VALUE_EXCEED; + error_code = HILDON_NUMBER_EDITOR_ERROR_MINIMUM_VALUE_EXCEED; fixup_value = priv->start; } } else { if (value > priv->end) { - error_code = MAXIMUM_VALUE_EXCEED; + error_code = HILDON_NUMBER_EDITOR_ERROR_MAXIMUM_VALUE_EXCEED; fixup_value = priv->end; } else if (value < priv->start) { - error_code = MINIMUM_VALUE_EXCEED; + error_code = HILDON_NUMBER_EDITOR_ERROR_MINIMUM_VALUE_EXCEED; fixup_value = priv->start; } } @@ -638,10 +646,10 @@ hildon_number_editor_validate_value (HildonNumberEditor *editor, have plain '-', intermediate forms are allowed AND minimum bound is negative */ else if (! allow_intermediate || strcmp (text, "-") != 0 || priv->start >= 0) - error_code = ERRONEOUS_VALUE; + error_code = HILDON_NUMBER_EDITOR_ERROR_ERRONEOUS_VALUE; } else if (! allow_intermediate) - error_code = ERRONEOUS_VALUE; + error_code = HILDON_NUMBER_EDITOR_ERROR_ERRONEOUS_VALUE; if (error_code != -1) { @@ -759,6 +767,23 @@ hildon_number_editor_size_allocate (GtkWidget *widget, } static gboolean +hildon_number_editor_focus (GtkWidget *widget, + GtkDirectionType direction) +{ + gboolean retval; + GtkDirectionType effective_direction; + + g_assert (HILDON_IS_NUMBER_EDITOR (widget)); + + retval = hildon_private_composite_focus (widget, direction, &effective_direction); + + if (retval == TRUE) + return GTK_WIDGET_CLASS (parent_class)->focus (widget, effective_direction); + else + return FALSE; +} + +static gboolean hildon_number_editor_entry_focusout (GtkWidget *widget, GdkEventFocus *event, gpointer data) @@ -827,15 +852,15 @@ hildon_number_editor_range_error (HildonNumberEditor *editor, /* Construct error message */ switch (type) { - case MAXIMUM_VALUE_EXCEED: + case HILDON_NUMBER_EDITOR_ERROR_MAXIMUM_VALUE_EXCEED: err_msg = g_strdup_printf (_("ckct_ib_maximum_value"), max, max); break; - case MINIMUM_VALUE_EXCEED: + case HILDON_NUMBER_EDITOR_ERROR_MINIMUM_VALUE_EXCEED: err_msg = g_strdup_printf (_("ckct_ib_minimum_value"), min, min); break; - case ERRONEOUS_VALUE: + case HILDON_NUMBER_EDITOR_ERROR_ERRONEOUS_VALUE: err_msg = g_strdup_printf (_("ckct_ib_set_a_value_within_range"), min, max); break;