X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fcustomentry.c;h=dc5848ec087b86e338d8c7b25b2487425c15e2ea;hb=7640d70ac1a3641869d8de331594c340c9568ea2;hp=b2c25aa395c240ed1b276e518de5092a1a05a489;hpb=bc02bc027697df3207f827de722c26d8cc87e824;p=pspp diff --git a/src/ui/gui/customentry.c b/src/ui/gui/customentry.c index b2c25aa395..dc5848ec08 100644 --- a/src/ui/gui/customentry.c +++ b/src/ui/gui/customentry.c @@ -1,10 +1,9 @@ -/* - PSPPIRE --- A Graphical User Interface for PSPP - Copyright (C) 2005 Free Software Foundation +/* PSPPIRE - a graphical user interface for PSPP. + Copyright (C) 2005, 2007, 2010, 2011, 2012 Free Software Foundation - This program is free software; you can redistribute it and/or modify + This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or + the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, @@ -13,10 +12,7 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - 02110-1301, USA. -*/ + along with this program. If not, see . */ /* This widget is a subclass of GtkEntry. It's an entry widget with a @@ -45,11 +41,11 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library. If not, see + * . */ + /* * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS * file for a list of people on the GTK+ Team. See the ChangeLog @@ -58,14 +54,10 @@ */ #include -#include -#define _(msgid) gettext (msgid) - -#include -#include +#include #include "customentry.h" - +#include "helper.h" static void psppire_custom_entry_class_init (PsppireCustomEntryClass *klass); static void psppire_custom_entry_init (PsppireCustomEntry *ce); @@ -114,7 +106,7 @@ psppire_custom_entry_get_type (void) static void psppire_custom_entry_map (GtkWidget *widget) { - if (GTK_WIDGET_REALIZED (widget) && !GTK_WIDGET_MAPPED (widget)) + if (gtk_widget_get_realized (widget) && !gtk_widget_get_mapped (widget)) { GTK_WIDGET_CLASS (parent_class)->map (widget); gdk_window_show (PSPPIRE_CUSTOM_ENTRY (widget)->panel); @@ -124,7 +116,7 @@ psppire_custom_entry_map (GtkWidget *widget) static void psppire_custom_entry_unmap (GtkWidget *widget) { - if (GTK_WIDGET_MAPPED (widget)) + if (gtk_widget_get_mapped (widget)) { gdk_window_hide (PSPPIRE_CUSTOM_ENTRY (widget)->panel); GTK_WIDGET_CLASS (parent_class)->unmap (widget); @@ -240,7 +232,7 @@ psppire_custom_entry_redraw (PsppireCustomEntry *custom_entry) widget = GTK_WIDGET (custom_entry); - if (GTK_WIDGET_DRAWABLE (widget)) + if (gtk_widget_is_drawable (widget)) { gtk_widget_queue_draw (widget); @@ -256,13 +248,14 @@ static gint psppire_custom_entry_expose (GtkWidget *widget, GdkEventExpose *event) { - PsppireCustomEntry *ce = PSPPIRE_CUSTOM_ENTRY(widget); + PsppireCustomEntry *ce = PSPPIRE_CUSTOM_ENTRY (widget); g_return_val_if_fail (PSPPIRE_IS_CUSTOM_ENTRY (widget), FALSE); g_return_val_if_fail (event != NULL, FALSE); - if (GTK_WIDGET_DRAWABLE (widget)) + if (gtk_widget_is_drawable (widget)) { + gboolean is_editable; GtkShadowType shadow_type; GdkRectangle rect; @@ -279,14 +272,14 @@ psppire_custom_entry_expose (GtkWidget *widget, shadow_type = psppire_custom_entry_get_shadow_type (ce); - if (shadow_type != GTK_SHADOW_NONE) - { - gtk_paint_box (widget->style, ce->panel, - GTK_STATE_NORMAL, shadow_type, - NULL, widget, "customentry", - rect.x, rect.y, rect.width, rect.height); + g_object_get (widget, "editable", &is_editable, NULL); + + gtk_paint_box (widget->style, ce->panel, + is_editable ? GTK_STATE_NORMAL: GTK_STATE_INSENSITIVE, + shadow_type, + NULL, widget, "customentry", + rect.x, rect.y, rect.width, rect.height); - } gdk_window_end_paint (ce->panel); } @@ -311,12 +304,10 @@ psppire_custom_entry_class_init (PsppireCustomEntryClass *klass) GObjectClass *gobject_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class; - GtkEntryClass *entry_class; parent_class = g_type_class_peek_parent (klass); widget_class = (GtkWidgetClass*) klass; - entry_class = (GtkEntryClass*) klass; widget_class->map = psppire_custom_entry_map; widget_class->unmap = psppire_custom_entry_unmap; @@ -334,7 +325,7 @@ psppire_custom_entry_class_init (PsppireCustomEntryClass *klass) (widget_class, g_param_spec_enum ("shadow_type", "Shadow Type", - _("Style of bevel around the custom entry button"), + "Style of bevel around the custom entry button", GTK_TYPE_SHADOW_TYPE, GTK_SHADOW_ETCHED_IN, G_PARAM_READABLE), @@ -342,7 +333,7 @@ psppire_custom_entry_class_init (PsppireCustomEntryClass *klass) custom_entry_signals[CLICKED] = g_signal_new ("clicked", - G_TYPE_FROM_CLASS(gobject_class), + G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, @@ -374,10 +365,13 @@ psppire_custom_entry_button_press (GtkWidget *widget, if (event->window == ce->panel) { - if (!GTK_WIDGET_HAS_FOCUS (widget)) + gboolean is_editable ; + if (!gtk_widget_has_focus (widget)) gtk_widget_grab_focus (widget); - if ( event->button == 1) + g_object_get (ce, "editable", &is_editable, NULL); + + if ( event->button == 1 && is_editable ) g_signal_emit (widget, custom_entry_signals[CLICKED], 0); } @@ -429,7 +423,7 @@ psppire_custom_entry_size_allocate (GtkWidget *widget, GTK_WIDGET_CLASS (parent_class)->size_allocate (widget, &entry_allocation); - if (GTK_WIDGET_REALIZED (widget)) + if (gtk_widget_get_realized (widget)) { gdk_window_move_resize (PSPPIRE_CUSTOM_ENTRY (widget)->panel, panel_allocation.x,