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=f7192fe1867486c5e68a40aaa5ce9aa38f78f4e6;hpb=43b1296aafe7582e7dbe6c2b6a8b478d7d9b0fcf;p=pspp diff --git a/src/ui/gui/customentry.c b/src/ui/gui/customentry.c index f7192fe186..dc5848ec08 100644 --- a/src/ui/gui/customentry.c +++ b/src/ui/gui/customentry.c @@ -1,5 +1,5 @@ /* PSPPIRE - a graphical user interface for PSPP. - Copyright (C) 2005 Free Software Foundation + Copyright (C) 2005, 2007, 2010, 2011, 2012 Free Software Foundation 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 @@ -54,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); @@ -110,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); @@ -120,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); @@ -236,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); @@ -257,8 +253,9 @@ psppire_custom_entry_expose (GtkWidget *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; @@ -275,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); } @@ -307,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; @@ -330,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), @@ -370,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); } @@ -425,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,