Blame gtk/gtkentry.c

Packit Service fb6fa5
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
Packit Service fb6fa5
/* GTK - The GIMP Toolkit
Packit Service fb6fa5
 * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
Packit Service fb6fa5
 * Copyright (C) 2004-2006 Christian Hammond
Packit Service fb6fa5
 * Copyright (C) 2008 Cody Russell
Packit Service fb6fa5
 * Copyright (C) 2008 Red Hat, Inc.
Packit Service fb6fa5
 *
Packit Service fb6fa5
 * This library is free software; you can redistribute it and/or
Packit Service fb6fa5
 * modify it under the terms of the GNU Lesser General Public
Packit Service fb6fa5
 * License as published by the Free Software Foundation; either
Packit Service fb6fa5
 * version 2 of the License, or (at your option) any later version.
Packit Service fb6fa5
 *
Packit Service fb6fa5
 * This library is distributed in the hope that it will be useful,
Packit Service fb6fa5
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit Service fb6fa5
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit Service fb6fa5
 * Lesser General Public License for more details.
Packit Service fb6fa5
 *
Packit Service fb6fa5
 * You should have received a copy of the GNU Lesser General Public
Packit Service fb6fa5
 * License along with this library; if not, write to the
Packit Service fb6fa5
 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Packit Service fb6fa5
 * Boston, MA 02111-1307, USA.
Packit Service fb6fa5
 */
Packit Service fb6fa5
Packit Service fb6fa5
/*
Packit Service fb6fa5
 * Modified by the GTK+ Team and others 1997-2000.  See the AUTHORS
Packit Service fb6fa5
 * file for a list of people on the GTK+ Team.  See the ChangeLog
Packit Service fb6fa5
 * files for a list of changes.  These files are distributed with
Packit Service fb6fa5
 * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
Packit Service fb6fa5
 */
Packit Service fb6fa5
Packit Service fb6fa5
#include "config.h"
Packit Service fb6fa5
Packit Service fb6fa5
#include <math.h>
Packit Service fb6fa5
#include <string.h>
Packit Service fb6fa5
Packit Service fb6fa5
#include "gdk/gdkkeysyms.h"
Packit Service fb6fa5
#include "gtkalignment.h"
Packit Service fb6fa5
#include "gtkbindings.h"
Packit Service fb6fa5
#include "gtkcelleditable.h"
Packit Service fb6fa5
#include "gtkclipboard.h"
Packit Service fb6fa5
#include "gtkdnd.h"
Packit Service fb6fa5
#include "gtkentry.h"
Packit Service fb6fa5
#include "gtkentrybuffer.h"
Packit Service fb6fa5
#include "gtkimagemenuitem.h"
Packit Service fb6fa5
#include "gtkimcontextsimple.h"
Packit Service fb6fa5
#include "gtkimmulticontext.h"
Packit Service fb6fa5
#include "gtkintl.h"
Packit Service fb6fa5
#include "gtklabel.h"
Packit Service fb6fa5
#include "gtkmain.h"
Packit Service fb6fa5
#include "gtkmarshalers.h"
Packit Service fb6fa5
#include "gtkmenu.h"
Packit Service fb6fa5
#include "gtkmenuitem.h"
Packit Service fb6fa5
#include "gtkseparatormenuitem.h"
Packit Service fb6fa5
#include "gtkselection.h"
Packit Service fb6fa5
#include "gtksettings.h"
Packit Service fb6fa5
#include "gtkspinbutton.h"
Packit Service fb6fa5
#include "gtkstock.h"
Packit Service fb6fa5
#include "gtktextutil.h"
Packit Service fb6fa5
#include "gtkwindow.h"
Packit Service fb6fa5
#include "gtktreeview.h"
Packit Service fb6fa5
#include "gtktreeselection.h"
Packit Service fb6fa5
#include "gtkprivate.h"
Packit Service fb6fa5
#include "gtkentryprivate.h"
Packit Service fb6fa5
#include "gtkcelllayout.h"
Packit Service fb6fa5
#include "gtktooltip.h"
Packit Service fb6fa5
#include "gtkiconfactory.h"
Packit Service fb6fa5
#include "gtkicontheme.h"
Packit Service fb6fa5
#include "gtkalias.h"
Packit Service fb6fa5
Packit Service fb6fa5
#define GTK_ENTRY_COMPLETION_KEY "gtk-entry-completion-key"
Packit Service fb6fa5
Packit Service fb6fa5
#define MIN_ENTRY_WIDTH  150
Packit Service fb6fa5
#define DRAW_TIMEOUT     20
Packit Service fb6fa5
#define COMPLETION_TIMEOUT 300
Packit Service fb6fa5
#define PASSWORD_HINT_MAX 8
Packit Service fb6fa5
Packit Service fb6fa5
#define MAX_ICONS 2
Packit Service fb6fa5
Packit Service fb6fa5
#define IS_VALID_ICON_POSITION(pos)               \
Packit Service fb6fa5
  ((pos) == GTK_ENTRY_ICON_PRIMARY ||                   \
Packit Service fb6fa5
   (pos) == GTK_ENTRY_ICON_SECONDARY)
Packit Service fb6fa5
Packit Service fb6fa5
static const GtkBorder default_inner_border = { 2, 2, 2, 2 };
Packit Service fb6fa5
static GQuark          quark_inner_border   = 0;
Packit Service fb6fa5
static GQuark          quark_password_hint  = 0;
Packit Service fb6fa5
static GQuark          quark_cursor_hadjustment = 0;
Packit Service fb6fa5
static GQuark          quark_capslock_feedback = 0;
Packit Service fb6fa5
Packit Service fb6fa5
typedef struct _GtkEntryPrivate GtkEntryPrivate;
Packit Service fb6fa5
Packit Service fb6fa5
#define GTK_ENTRY_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), GTK_TYPE_ENTRY, GtkEntryPrivate))
Packit Service fb6fa5
Packit Service fb6fa5
typedef struct
Packit Service fb6fa5
{
Packit Service fb6fa5
  GdkWindow *window;
Packit Service fb6fa5
  gchar *tooltip;
Packit Service fb6fa5
  guint insensitive    : 1;
Packit Service fb6fa5
  guint nonactivatable : 1;
Packit Service fb6fa5
  guint prelight       : 1;
Packit Service fb6fa5
  guint in_drag        : 1;
Packit Service fb6fa5
  guint pressed        : 1;
Packit Service fb6fa5
Packit Service fb6fa5
  GtkImageType  storage_type;
Packit Service fb6fa5
  GdkPixbuf    *pixbuf;
Packit Service fb6fa5
  gchar        *stock_id;
Packit Service fb6fa5
  gchar        *icon_name;
Packit Service fb6fa5
  GIcon        *gicon;
Packit Service fb6fa5
Packit Service fb6fa5
  GtkTargetList *target_list;
Packit Service fb6fa5
  GdkDragAction actions;
Packit Service fb6fa5
} EntryIconInfo;
Packit Service fb6fa5
Packit Service fb6fa5
struct _GtkEntryPrivate 
Packit Service fb6fa5
{
Packit Service fb6fa5
  GtkEntryBuffer* buffer;
Packit Service fb6fa5
Packit Service fb6fa5
  gfloat xalign;
Packit Service fb6fa5
  gint insert_pos;
Packit Service fb6fa5
  guint blink_time;  /* time in msec the cursor has blinked since last user event */
Packit Service fb6fa5
  guint interior_focus          : 1;
Packit Service fb6fa5
  guint real_changed            : 1;
Packit Service fb6fa5
  guint invisible_char_set      : 1;
Packit Service fb6fa5
  guint caps_lock_warning       : 1;
Packit Service fb6fa5
  guint caps_lock_warning_shown : 1;
Packit Service fb6fa5
  guint change_count            : 8;
Packit Service fb6fa5
  guint progress_pulse_mode     : 1;
Packit Service fb6fa5
  guint progress_pulse_way_back : 1;
Packit Service fb6fa5
Packit Service fb6fa5
  gint focus_width;
Packit Service fb6fa5
  GtkShadowType shadow_type;
Packit Service fb6fa5
Packit Service fb6fa5
  gdouble progress_fraction;
Packit Service fb6fa5
  gdouble progress_pulse_fraction;
Packit Service fb6fa5
  gdouble progress_pulse_current;
Packit Service fb6fa5
Packit Service fb6fa5
  EntryIconInfo *icons[MAX_ICONS];
Packit Service fb6fa5
  gint icon_margin;
Packit Service fb6fa5
  gint start_x;
Packit Service fb6fa5
  gint start_y;
Packit Service fb6fa5
Packit Service fb6fa5
  gchar *im_module;
Packit Service fb6fa5
};
Packit Service fb6fa5
Packit Service fb6fa5
typedef struct _GtkEntryPasswordHint GtkEntryPasswordHint;
Packit Service fb6fa5
Packit Service fb6fa5
struct _GtkEntryPasswordHint
Packit Service fb6fa5
{
Packit Service fb6fa5
  gint position;      /* Position (in text) of the last password hint */
Packit Service fb6fa5
  guint source_id;    /* Timeout source id */
Packit Service fb6fa5
};
Packit Service fb6fa5
Packit Service fb6fa5
typedef struct _GtkEntryCapslockFeedback GtkEntryCapslockFeedback;
Packit Service fb6fa5
Packit Service fb6fa5
struct _GtkEntryCapslockFeedback
Packit Service fb6fa5
{
Packit Service fb6fa5
  GtkWidget *entry;
Packit Service fb6fa5
  GtkWidget *window;
Packit Service fb6fa5
  GtkWidget *label;
Packit Service fb6fa5
};
Packit Service fb6fa5
Packit Service fb6fa5
enum {
Packit Service fb6fa5
  ACTIVATE,
Packit Service fb6fa5
  POPULATE_POPUP,
Packit Service fb6fa5
  MOVE_CURSOR,
Packit Service fb6fa5
  INSERT_AT_CURSOR,
Packit Service fb6fa5
  DELETE_FROM_CURSOR,
Packit Service fb6fa5
  BACKSPACE,
Packit Service fb6fa5
  CUT_CLIPBOARD,
Packit Service fb6fa5
  COPY_CLIPBOARD,
Packit Service fb6fa5
  PASTE_CLIPBOARD,
Packit Service fb6fa5
  TOGGLE_OVERWRITE,
Packit Service fb6fa5
  ICON_PRESS,
Packit Service fb6fa5
  ICON_RELEASE,
Packit Service fb6fa5
  PREEDIT_CHANGED,
Packit Service fb6fa5
  LAST_SIGNAL
Packit Service fb6fa5
};
Packit Service fb6fa5
Packit Service fb6fa5
enum {
Packit Service fb6fa5
  PROP_0,
Packit Service fb6fa5
  PROP_BUFFER,
Packit Service fb6fa5
  PROP_CURSOR_POSITION,
Packit Service fb6fa5
  PROP_SELECTION_BOUND,
Packit Service fb6fa5
  PROP_EDITABLE,
Packit Service fb6fa5
  PROP_MAX_LENGTH,
Packit Service fb6fa5
  PROP_VISIBILITY,
Packit Service fb6fa5
  PROP_HAS_FRAME,
Packit Service fb6fa5
  PROP_INNER_BORDER,
Packit Service fb6fa5
  PROP_INVISIBLE_CHAR,
Packit Service fb6fa5
  PROP_ACTIVATES_DEFAULT,
Packit Service fb6fa5
  PROP_WIDTH_CHARS,
Packit Service fb6fa5
  PROP_SCROLL_OFFSET,
Packit Service fb6fa5
  PROP_TEXT,
Packit Service fb6fa5
  PROP_XALIGN,
Packit Service fb6fa5
  PROP_TRUNCATE_MULTILINE,
Packit Service fb6fa5
  PROP_SHADOW_TYPE,
Packit Service fb6fa5
  PROP_OVERWRITE_MODE,
Packit Service fb6fa5
  PROP_TEXT_LENGTH,
Packit Service fb6fa5
  PROP_INVISIBLE_CHAR_SET,
Packit Service fb6fa5
  PROP_CAPS_LOCK_WARNING,
Packit Service fb6fa5
  PROP_PROGRESS_FRACTION,
Packit Service fb6fa5
  PROP_PROGRESS_PULSE_STEP,
Packit Service fb6fa5
  PROP_PIXBUF_PRIMARY,
Packit Service fb6fa5
  PROP_PIXBUF_SECONDARY,
Packit Service fb6fa5
  PROP_STOCK_PRIMARY,
Packit Service fb6fa5
  PROP_STOCK_SECONDARY,
Packit Service fb6fa5
  PROP_ICON_NAME_PRIMARY,
Packit Service fb6fa5
  PROP_ICON_NAME_SECONDARY,
Packit Service fb6fa5
  PROP_GICON_PRIMARY,
Packit Service fb6fa5
  PROP_GICON_SECONDARY,
Packit Service fb6fa5
  PROP_STORAGE_TYPE_PRIMARY,
Packit Service fb6fa5
  PROP_STORAGE_TYPE_SECONDARY,
Packit Service fb6fa5
  PROP_ACTIVATABLE_PRIMARY,
Packit Service fb6fa5
  PROP_ACTIVATABLE_SECONDARY,
Packit Service fb6fa5
  PROP_SENSITIVE_PRIMARY,
Packit Service fb6fa5
  PROP_SENSITIVE_SECONDARY,
Packit Service fb6fa5
  PROP_TOOLTIP_TEXT_PRIMARY,
Packit Service fb6fa5
  PROP_TOOLTIP_TEXT_SECONDARY,
Packit Service fb6fa5
  PROP_TOOLTIP_MARKUP_PRIMARY,
Packit Service fb6fa5
  PROP_TOOLTIP_MARKUP_SECONDARY,
Packit Service fb6fa5
  PROP_IM_MODULE,
Packit Service fb6fa5
  PROP_EDITING_CANCELED
Packit Service fb6fa5
};
Packit Service fb6fa5
Packit Service fb6fa5
static guint signals[LAST_SIGNAL] = { 0 };
Packit Service fb6fa5
Packit Service fb6fa5
typedef enum {
Packit Service fb6fa5
  CURSOR_STANDARD,
Packit Service fb6fa5
  CURSOR_DND
Packit Service fb6fa5
} CursorType;
Packit Service fb6fa5
Packit Service fb6fa5
typedef enum
Packit Service fb6fa5
{
Packit Service fb6fa5
  DISPLAY_NORMAL,       /* The entry text is being shown */
Packit Service fb6fa5
  DISPLAY_INVISIBLE,    /* In invisible mode, text replaced by (eg) bullets */
Packit Service fb6fa5
  DISPLAY_BLANK         /* In invisible mode, nothing shown at all */
Packit Service fb6fa5
} DisplayMode;
Packit Service fb6fa5
Packit Service fb6fa5
/* GObject, GtkObject methods
Packit Service fb6fa5
 */
Packit Service fb6fa5
static void   gtk_entry_editable_init        (GtkEditableClass     *iface);
Packit Service fb6fa5
static void   gtk_entry_cell_editable_init   (GtkCellEditableIface *iface);
Packit Service fb6fa5
static void   gtk_entry_set_property         (GObject          *object,
Packit Service fb6fa5
                                              guint             prop_id,
Packit Service fb6fa5
                                              const GValue     *value,
Packit Service fb6fa5
                                              GParamSpec       *pspec);
Packit Service fb6fa5
static void   gtk_entry_get_property         (GObject          *object,
Packit Service fb6fa5
                                              guint             prop_id,
Packit Service fb6fa5
                                              GValue           *value,
Packit Service fb6fa5
                                              GParamSpec       *pspec);
Packit Service fb6fa5
static void   gtk_entry_finalize             (GObject          *object);
Packit Service fb6fa5
static void   gtk_entry_destroy              (GtkObject        *object);
Packit Service fb6fa5
static void   gtk_entry_dispose              (GObject          *object);
Packit Service fb6fa5
Packit Service fb6fa5
/* GtkWidget methods
Packit Service fb6fa5
 */
Packit Service fb6fa5
static void   gtk_entry_realize              (GtkWidget        *widget);
Packit Service fb6fa5
static void   gtk_entry_unrealize            (GtkWidget        *widget);
Packit Service fb6fa5
static void   gtk_entry_map                  (GtkWidget        *widget);
Packit Service fb6fa5
static void   gtk_entry_unmap                (GtkWidget        *widget);
Packit Service fb6fa5
static void   gtk_entry_size_request         (GtkWidget        *widget,
Packit Service fb6fa5
					      GtkRequisition   *requisition);
Packit Service fb6fa5
static void   gtk_entry_size_allocate        (GtkWidget        *widget,
Packit Service fb6fa5
					      GtkAllocation    *allocation);
Packit Service fb6fa5
static void   gtk_entry_draw_frame           (GtkWidget        *widget,
Packit Service fb6fa5
                                              GdkEventExpose   *event);
Packit Service fb6fa5
static void   gtk_entry_draw_progress        (GtkWidget        *widget,
Packit Service fb6fa5
                                              GdkEventExpose   *event);
Packit Service fb6fa5
static gint   gtk_entry_expose               (GtkWidget        *widget,
Packit Service fb6fa5
					      GdkEventExpose   *event);
Packit Service fb6fa5
static gint   gtk_entry_button_press         (GtkWidget        *widget,
Packit Service fb6fa5
					      GdkEventButton   *event);
Packit Service fb6fa5
static gint   gtk_entry_button_release       (GtkWidget        *widget,
Packit Service fb6fa5
					      GdkEventButton   *event);
Packit Service fb6fa5
static gint   gtk_entry_enter_notify         (GtkWidget        *widget,
Packit Service fb6fa5
                                              GdkEventCrossing *event);
Packit Service fb6fa5
static gint   gtk_entry_leave_notify         (GtkWidget        *widget,
Packit Service fb6fa5
                                              GdkEventCrossing *event);
Packit Service fb6fa5
static gint   gtk_entry_motion_notify        (GtkWidget        *widget,
Packit Service fb6fa5
					      GdkEventMotion   *event);
Packit Service fb6fa5
static gint   gtk_entry_key_press            (GtkWidget        *widget,
Packit Service fb6fa5
					      GdkEventKey      *event);
Packit Service fb6fa5
static gint   gtk_entry_key_release          (GtkWidget        *widget,
Packit Service fb6fa5
					      GdkEventKey      *event);
Packit Service fb6fa5
static gint   gtk_entry_focus_in             (GtkWidget        *widget,
Packit Service fb6fa5
					      GdkEventFocus    *event);
Packit Service fb6fa5
static gint   gtk_entry_focus_out            (GtkWidget        *widget,
Packit Service fb6fa5
					      GdkEventFocus    *event);
Packit Service fb6fa5
static void   gtk_entry_grab_focus           (GtkWidget        *widget);
Packit Service fb6fa5
static void   gtk_entry_style_set            (GtkWidget        *widget,
Packit Service fb6fa5
					      GtkStyle         *previous_style);
Packit Service fb6fa5
static gboolean gtk_entry_query_tooltip      (GtkWidget        *widget,
Packit Service fb6fa5
                                              gint              x,
Packit Service fb6fa5
                                              gint              y,
Packit Service fb6fa5
                                              gboolean          keyboard_tip,
Packit Service fb6fa5
                                              GtkTooltip       *tooltip);
Packit Service fb6fa5
static void   gtk_entry_direction_changed    (GtkWidget        *widget,
Packit Service fb6fa5
					      GtkTextDirection  previous_dir);
Packit Service fb6fa5
static void   gtk_entry_state_changed        (GtkWidget        *widget,
Packit Service fb6fa5
					      GtkStateType      previous_state);
Packit Service fb6fa5
static void   gtk_entry_screen_changed       (GtkWidget        *widget,
Packit Service fb6fa5
					      GdkScreen        *old_screen);
Packit Service fb6fa5
Packit Service fb6fa5
static gboolean gtk_entry_drag_drop          (GtkWidget        *widget,
Packit Service fb6fa5
                                              GdkDragContext   *context,
Packit Service fb6fa5
                                              gint              x,
Packit Service fb6fa5
                                              gint              y,
Packit Service fb6fa5
                                              guint             time);
Packit Service fb6fa5
static gboolean gtk_entry_drag_motion        (GtkWidget        *widget,
Packit Service fb6fa5
					      GdkDragContext   *context,
Packit Service fb6fa5
					      gint              x,
Packit Service fb6fa5
					      gint              y,
Packit Service fb6fa5
					      guint             time);
Packit Service fb6fa5
static void     gtk_entry_drag_leave         (GtkWidget        *widget,
Packit Service fb6fa5
					      GdkDragContext   *context,
Packit Service fb6fa5
					      guint             time);
Packit Service fb6fa5
static void     gtk_entry_drag_data_received (GtkWidget        *widget,
Packit Service fb6fa5
					      GdkDragContext   *context,
Packit Service fb6fa5
					      gint              x,
Packit Service fb6fa5
					      gint              y,
Packit Service fb6fa5
					      GtkSelectionData *selection_data,
Packit Service fb6fa5
					      guint             info,
Packit Service fb6fa5
					      guint             time);
Packit Service fb6fa5
static void     gtk_entry_drag_data_get      (GtkWidget        *widget,
Packit Service fb6fa5
					      GdkDragContext   *context,
Packit Service fb6fa5
					      GtkSelectionData *selection_data,
Packit Service fb6fa5
					      guint             info,
Packit Service fb6fa5
					      guint             time);
Packit Service fb6fa5
static void     gtk_entry_drag_data_delete   (GtkWidget        *widget,
Packit Service fb6fa5
					      GdkDragContext   *context);
Packit Service fb6fa5
static void     gtk_entry_drag_begin         (GtkWidget        *widget,
Packit Service fb6fa5
                                              GdkDragContext   *context);
Packit Service fb6fa5
static void     gtk_entry_drag_end           (GtkWidget        *widget,
Packit Service fb6fa5
                                              GdkDragContext   *context);
Packit Service fb6fa5
Packit Service fb6fa5
Packit Service fb6fa5
/* GtkEditable method implementations
Packit Service fb6fa5
 */
Packit Service fb6fa5
static void     gtk_entry_insert_text          (GtkEditable *editable,
Packit Service fb6fa5
						const gchar *new_text,
Packit Service fb6fa5
						gint         new_text_length,
Packit Service fb6fa5
						gint        *position);
Packit Service fb6fa5
static void     gtk_entry_delete_text          (GtkEditable *editable,
Packit Service fb6fa5
						gint         start_pos,
Packit Service fb6fa5
						gint         end_pos);
Packit Service fb6fa5
static gchar *  gtk_entry_get_chars            (GtkEditable *editable,
Packit Service fb6fa5
						gint         start_pos,
Packit Service fb6fa5
						gint         end_pos);
Packit Service fb6fa5
static void     gtk_entry_real_set_position    (GtkEditable *editable,
Packit Service fb6fa5
						gint         position);
Packit Service fb6fa5
static gint     gtk_entry_get_position         (GtkEditable *editable);
Packit Service fb6fa5
static void     gtk_entry_set_selection_bounds (GtkEditable *editable,
Packit Service fb6fa5
						gint         start,
Packit Service fb6fa5
						gint         end);
Packit Service fb6fa5
static gboolean gtk_entry_get_selection_bounds (GtkEditable *editable,
Packit Service fb6fa5
						gint        *start,
Packit Service fb6fa5
						gint        *end);
Packit Service fb6fa5
Packit Service fb6fa5
/* GtkCellEditable method implementations
Packit Service fb6fa5
 */
Packit Service fb6fa5
static void gtk_entry_start_editing (GtkCellEditable *cell_editable,
Packit Service fb6fa5
				     GdkEvent        *event);
Packit Service fb6fa5
Packit Service fb6fa5
/* Default signal handlers
Packit Service fb6fa5
 */
Packit Service fb6fa5
static void gtk_entry_real_insert_text   (GtkEditable     *editable,
Packit Service fb6fa5
					  const gchar     *new_text,
Packit Service fb6fa5
					  gint             new_text_length,
Packit Service fb6fa5
					  gint            *position);
Packit Service fb6fa5
static void gtk_entry_real_delete_text   (GtkEditable     *editable,
Packit Service fb6fa5
					  gint             start_pos,
Packit Service fb6fa5
					  gint             end_pos);
Packit Service fb6fa5
static void gtk_entry_move_cursor        (GtkEntry        *entry,
Packit Service fb6fa5
					  GtkMovementStep  step,
Packit Service fb6fa5
					  gint             count,
Packit Service fb6fa5
					  gboolean         extend_selection);
Packit Service fb6fa5
static void gtk_entry_insert_at_cursor   (GtkEntry        *entry,
Packit Service fb6fa5
					  const gchar     *str);
Packit Service fb6fa5
static void gtk_entry_delete_from_cursor (GtkEntry        *entry,
Packit Service fb6fa5
					  GtkDeleteType    type,
Packit Service fb6fa5
					  gint             count);
Packit Service fb6fa5
static void gtk_entry_backspace          (GtkEntry        *entry);
Packit Service fb6fa5
static void gtk_entry_cut_clipboard      (GtkEntry        *entry);
Packit Service fb6fa5
static void gtk_entry_copy_clipboard     (GtkEntry        *entry);
Packit Service fb6fa5
static void gtk_entry_paste_clipboard    (GtkEntry        *entry);
Packit Service fb6fa5
static void gtk_entry_toggle_overwrite   (GtkEntry        *entry);
Packit Service fb6fa5
static void gtk_entry_select_all         (GtkEntry        *entry);
Packit Service fb6fa5
static void gtk_entry_real_activate      (GtkEntry        *entry);
Packit Service fb6fa5
static gboolean gtk_entry_popup_menu     (GtkWidget       *widget);
Packit Service fb6fa5
Packit Service fb6fa5
static void keymap_direction_changed     (GdkKeymap       *keymap,
Packit Service fb6fa5
					  GtkEntry        *entry);
Packit Service fb6fa5
static void keymap_state_changed         (GdkKeymap       *keymap,
Packit Service fb6fa5
					  GtkEntry        *entry);
Packit Service fb6fa5
static void remove_capslock_feedback     (GtkEntry        *entry);
Packit Service fb6fa5
Packit Service fb6fa5
/* IM Context Callbacks
Packit Service fb6fa5
 */
Packit Service fb6fa5
static void     gtk_entry_commit_cb               (GtkIMContext *context,
Packit Service fb6fa5
						   const gchar  *str,
Packit Service fb6fa5
						   GtkEntry     *entry);
Packit Service fb6fa5
static void     gtk_entry_preedit_changed_cb      (GtkIMContext *context,
Packit Service fb6fa5
						   GtkEntry     *entry);
Packit Service fb6fa5
static gboolean gtk_entry_retrieve_surrounding_cb (GtkIMContext *context,
Packit Service fb6fa5
						   GtkEntry     *entry);
Packit Service fb6fa5
static gboolean gtk_entry_delete_surrounding_cb   (GtkIMContext *context,
Packit Service fb6fa5
						   gint          offset,
Packit Service fb6fa5
						   gint          n_chars,
Packit Service fb6fa5
						   GtkEntry     *entry);
Packit Service fb6fa5
Packit Service fb6fa5
/* Internal routines
Packit Service fb6fa5
 */
Packit Service fb6fa5
static void         gtk_entry_enter_text               (GtkEntry       *entry,
Packit Service fb6fa5
                                                        const gchar    *str);
Packit Service fb6fa5
static void         gtk_entry_set_positions            (GtkEntry       *entry,
Packit Service fb6fa5
							gint            current_pos,
Packit Service fb6fa5
							gint            selection_bound);
Packit Service fb6fa5
static void         gtk_entry_draw_text                (GtkEntry       *entry);
Packit Service fb6fa5
static void         gtk_entry_draw_cursor              (GtkEntry       *entry,
Packit Service fb6fa5
							CursorType      type);
Packit Service fb6fa5
static PangoLayout *gtk_entry_ensure_layout            (GtkEntry       *entry,
Packit Service fb6fa5
                                                        gboolean        include_preedit);
Packit Service fb6fa5
static void         gtk_entry_reset_layout             (GtkEntry       *entry);
Packit Service fb6fa5
static void         gtk_entry_queue_draw               (GtkEntry       *entry);
Packit Service fb6fa5
static void         gtk_entry_recompute                (GtkEntry       *entry);
Packit Service fb6fa5
static gint         gtk_entry_find_position            (GtkEntry       *entry,
Packit Service fb6fa5
							gint            x);
Packit Service fb6fa5
static void         gtk_entry_get_cursor_locations     (GtkEntry       *entry,
Packit Service fb6fa5
							CursorType      type,
Packit Service fb6fa5
							gint           *strong_x,
Packit Service fb6fa5
							gint           *weak_x);
Packit Service fb6fa5
static void         gtk_entry_adjust_scroll            (GtkEntry       *entry);
Packit Service fb6fa5
static gint         gtk_entry_move_visually            (GtkEntry       *editable,
Packit Service fb6fa5
							gint            start,
Packit Service fb6fa5
							gint            count);
Packit Service fb6fa5
static gint         gtk_entry_move_logically           (GtkEntry       *entry,
Packit Service fb6fa5
							gint            start,
Packit Service fb6fa5
							gint            count);
Packit Service fb6fa5
static gint         gtk_entry_move_forward_word        (GtkEntry       *entry,
Packit Service fb6fa5
							gint            start,
Packit Service fb6fa5
                                                        gboolean        allow_whitespace);
Packit Service fb6fa5
static gint         gtk_entry_move_backward_word       (GtkEntry       *entry,
Packit Service fb6fa5
							gint            start,
Packit Service fb6fa5
                                                        gboolean        allow_whitespace);
Packit Service fb6fa5
static void         gtk_entry_delete_whitespace        (GtkEntry       *entry);
Packit Service fb6fa5
static void         gtk_entry_select_word              (GtkEntry       *entry);
Packit Service fb6fa5
static void         gtk_entry_select_line              (GtkEntry       *entry);
Packit Service fb6fa5
static void         gtk_entry_paste                    (GtkEntry       *entry,
Packit Service fb6fa5
							GdkAtom         selection);
Packit Service fb6fa5
static void         gtk_entry_update_primary_selection (GtkEntry       *entry);
Packit Service fb6fa5
static void         gtk_entry_do_popup                 (GtkEntry       *entry,
Packit Service fb6fa5
							GdkEventButton *event);
Packit Service fb6fa5
static gboolean     gtk_entry_mnemonic_activate        (GtkWidget      *widget,
Packit Service fb6fa5
							gboolean        group_cycling);
Packit Service fb6fa5
static void         gtk_entry_check_cursor_blink       (GtkEntry       *entry);
Packit Service fb6fa5
static void         gtk_entry_pend_cursor_blink        (GtkEntry       *entry);
Packit Service fb6fa5
static void         gtk_entry_reset_blink_time         (GtkEntry       *entry);
Packit Service fb6fa5
static void         gtk_entry_get_text_area_size       (GtkEntry       *entry,
Packit Service fb6fa5
							gint           *x,
Packit Service fb6fa5
							gint           *y,
Packit Service fb6fa5
							gint           *width,
Packit Service fb6fa5
							gint           *height);
Packit Service fb6fa5
static void         get_text_area_size                 (GtkEntry       *entry,
Packit Service fb6fa5
							gint           *x,
Packit Service fb6fa5
							gint           *y,
Packit Service fb6fa5
							gint           *width,
Packit Service fb6fa5
							gint           *height);
Packit Service fb6fa5
static void         get_widget_window_size             (GtkEntry       *entry,
Packit Service fb6fa5
							gint           *x,
Packit Service fb6fa5
							gint           *y,
Packit Service fb6fa5
							gint           *width,
Packit Service fb6fa5
							gint           *height);
Packit Service fb6fa5
static void         gtk_entry_move_adjustments         (GtkEntry             *entry);
Packit Service fb6fa5
static void         gtk_entry_ensure_pixbuf            (GtkEntry             *entry,
Packit Service fb6fa5
                                                        GtkEntryIconPosition  icon_pos);
Packit Service fb6fa5
Packit Service fb6fa5
Packit Service fb6fa5
/* Completion */
Packit Service fb6fa5
static gint         gtk_entry_completion_timeout       (gpointer            data);
Packit Service fb6fa5
static gboolean     gtk_entry_completion_key_press     (GtkWidget          *widget,
Packit Service fb6fa5
							GdkEventKey        *event,
Packit Service fb6fa5
							gpointer            user_data);
Packit Service fb6fa5
static void         gtk_entry_completion_changed       (GtkWidget          *entry,
Packit Service fb6fa5
							gpointer            user_data);
Packit Service fb6fa5
static gboolean     check_completion_callback          (GtkEntryCompletion *completion);
Packit Service fb6fa5
static void         clear_completion_callback          (GtkEntry           *entry,
Packit Service fb6fa5
							GParamSpec         *pspec);
Packit Service fb6fa5
static gboolean     accept_completion_callback         (GtkEntry           *entry);
Packit Service fb6fa5
static void         completion_insert_text_callback    (GtkEntry           *entry,
Packit Service fb6fa5
							const gchar        *text,
Packit Service fb6fa5
							gint                length,
Packit Service fb6fa5
							gint                position,
Packit Service fb6fa5
							GtkEntryCompletion *completion);
Packit Service fb6fa5
static void         disconnect_completion_signals      (GtkEntry           *entry,
Packit Service fb6fa5
							GtkEntryCompletion *completion);
Packit Service fb6fa5
static void         connect_completion_signals         (GtkEntry           *entry,
Packit Service fb6fa5
							GtkEntryCompletion *completion);
Packit Service fb6fa5
Packit Service fb6fa5
static void         begin_change                       (GtkEntry *entry);
Packit Service fb6fa5
static void         end_change                         (GtkEntry *entry);
Packit Service fb6fa5
static void         emit_changed                       (GtkEntry *entry);
Packit Service fb6fa5
Packit Service fb6fa5
Packit Service fb6fa5
static void         buffer_inserted_text               (GtkEntryBuffer *buffer, 
Packit Service fb6fa5
                                                        guint           position,
Packit Service fb6fa5
                                                        const gchar    *chars,
Packit Service fb6fa5
                                                        guint           n_chars,
Packit Service fb6fa5
                                                        GtkEntry       *entry);
Packit Service fb6fa5
static void         buffer_deleted_text                (GtkEntryBuffer *buffer, 
Packit Service fb6fa5
                                                        guint           position,
Packit Service fb6fa5
                                                        guint           n_chars,
Packit Service fb6fa5
                                                        GtkEntry       *entry);
Packit Service fb6fa5
static void         buffer_notify_text                 (GtkEntryBuffer *buffer, 
Packit Service fb6fa5
                                                        GParamSpec     *spec,
Packit Service fb6fa5
                                                        GtkEntry       *entry);
Packit Service fb6fa5
static void         buffer_notify_length               (GtkEntryBuffer *buffer, 
Packit Service fb6fa5
                                                        GParamSpec     *spec,
Packit Service fb6fa5
                                                        GtkEntry       *entry);
Packit Service fb6fa5
static void         buffer_notify_max_length           (GtkEntryBuffer *buffer, 
Packit Service fb6fa5
                                                        GParamSpec     *spec,
Packit Service fb6fa5
                                                        GtkEntry       *entry);
Packit Service fb6fa5
static void         buffer_connect_signals             (GtkEntry       *entry);
Packit Service fb6fa5
static void         buffer_disconnect_signals          (GtkEntry       *entry);
Packit Service fb6fa5
static GtkEntryBuffer *get_buffer                      (GtkEntry       *entry);
Packit Service fb6fa5
Packit Service fb6fa5
Packit Service fb6fa5
G_DEFINE_TYPE_WITH_CODE (GtkEntry, gtk_entry, GTK_TYPE_WIDGET,
Packit Service fb6fa5
                         G_IMPLEMENT_INTERFACE (GTK_TYPE_EDITABLE,
Packit Service fb6fa5
                                                gtk_entry_editable_init)
Packit Service fb6fa5
                         G_IMPLEMENT_INTERFACE (GTK_TYPE_CELL_EDITABLE,
Packit Service fb6fa5
                                                gtk_entry_cell_editable_init))
Packit Service fb6fa5
Packit Service fb6fa5
static void
Packit Service fb6fa5
add_move_binding (GtkBindingSet  *binding_set,
Packit Service fb6fa5
		  guint           keyval,
Packit Service fb6fa5
		  guint           modmask,
Packit Service fb6fa5
		  GtkMovementStep step,
Packit Service fb6fa5
		  gint            count)
Packit Service fb6fa5
{
Packit Service fb6fa5
  g_return_if_fail ((modmask & GDK_SHIFT_MASK) == 0);
Packit Service fb6fa5
  
Packit Service fb6fa5
  gtk_binding_entry_add_signal (binding_set, keyval, modmask,
Packit Service fb6fa5
				"move-cursor", 3,
Packit Service fb6fa5
				G_TYPE_ENUM, step,
Packit Service fb6fa5
				G_TYPE_INT, count,
Packit Service fb6fa5
				G_TYPE_BOOLEAN, FALSE);
Packit Service fb6fa5
Packit Service fb6fa5
  /* Selection-extending version */
Packit Service fb6fa5
  gtk_binding_entry_add_signal (binding_set, keyval, modmask | GDK_SHIFT_MASK,
Packit Service fb6fa5
				"move-cursor", 3,
Packit Service fb6fa5
				G_TYPE_ENUM, step,
Packit Service fb6fa5
				G_TYPE_INT, count,
Packit Service fb6fa5
				G_TYPE_BOOLEAN, TRUE);
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
static void
Packit Service fb6fa5
gtk_entry_class_init (GtkEntryClass *class)
Packit Service fb6fa5
{
Packit Service fb6fa5
  GObjectClass *gobject_class = G_OBJECT_CLASS (class);
Packit Service fb6fa5
  GtkWidgetClass *widget_class;
Packit Service fb6fa5
  GtkObjectClass *gtk_object_class;
Packit Service fb6fa5
  GtkBindingSet *binding_set;
Packit Service fb6fa5
Packit Service fb6fa5
  widget_class = (GtkWidgetClass*) class;
Packit Service fb6fa5
  gtk_object_class = (GtkObjectClass *)class;
Packit Service fb6fa5
Packit Service fb6fa5
  gobject_class->dispose = gtk_entry_dispose;
Packit Service fb6fa5
  gobject_class->finalize = gtk_entry_finalize;
Packit Service fb6fa5
  gobject_class->set_property = gtk_entry_set_property;
Packit Service fb6fa5
  gobject_class->get_property = gtk_entry_get_property;
Packit Service fb6fa5
Packit Service fb6fa5
  widget_class->map = gtk_entry_map;
Packit Service fb6fa5
  widget_class->unmap = gtk_entry_unmap;
Packit Service fb6fa5
  widget_class->realize = gtk_entry_realize;
Packit Service fb6fa5
  widget_class->unrealize = gtk_entry_unrealize;
Packit Service fb6fa5
  widget_class->size_request = gtk_entry_size_request;
Packit Service fb6fa5
  widget_class->size_allocate = gtk_entry_size_allocate;
Packit Service fb6fa5
  widget_class->expose_event = gtk_entry_expose;
Packit Service fb6fa5
  widget_class->enter_notify_event = gtk_entry_enter_notify;
Packit Service fb6fa5
  widget_class->leave_notify_event = gtk_entry_leave_notify;
Packit Service fb6fa5
  widget_class->button_press_event = gtk_entry_button_press;
Packit Service fb6fa5
  widget_class->button_release_event = gtk_entry_button_release;
Packit Service fb6fa5
  widget_class->motion_notify_event = gtk_entry_motion_notify;
Packit Service fb6fa5
  widget_class->key_press_event = gtk_entry_key_press;
Packit Service fb6fa5
  widget_class->key_release_event = gtk_entry_key_release;
Packit Service fb6fa5
  widget_class->focus_in_event = gtk_entry_focus_in;
Packit Service fb6fa5
  widget_class->focus_out_event = gtk_entry_focus_out;
Packit Service fb6fa5
  widget_class->grab_focus = gtk_entry_grab_focus;
Packit Service fb6fa5
  widget_class->style_set = gtk_entry_style_set;
Packit Service fb6fa5
  widget_class->query_tooltip = gtk_entry_query_tooltip;
Packit Service fb6fa5
  widget_class->drag_begin = gtk_entry_drag_begin;
Packit Service fb6fa5
  widget_class->drag_end = gtk_entry_drag_end;
Packit Service fb6fa5
  widget_class->direction_changed = gtk_entry_direction_changed;
Packit Service fb6fa5
  widget_class->state_changed = gtk_entry_state_changed;
Packit Service fb6fa5
  widget_class->screen_changed = gtk_entry_screen_changed;
Packit Service fb6fa5
  widget_class->mnemonic_activate = gtk_entry_mnemonic_activate;
Packit Service fb6fa5
Packit Service fb6fa5
  widget_class->drag_drop = gtk_entry_drag_drop;
Packit Service fb6fa5
  widget_class->drag_motion = gtk_entry_drag_motion;
Packit Service fb6fa5
  widget_class->drag_leave = gtk_entry_drag_leave;
Packit Service fb6fa5
  widget_class->drag_data_received = gtk_entry_drag_data_received;
Packit Service fb6fa5
  widget_class->drag_data_get = gtk_entry_drag_data_get;
Packit Service fb6fa5
  widget_class->drag_data_delete = gtk_entry_drag_data_delete;
Packit Service fb6fa5
Packit Service fb6fa5
  widget_class->popup_menu = gtk_entry_popup_menu;
Packit Service fb6fa5
Packit Service fb6fa5
  gtk_object_class->destroy = gtk_entry_destroy;
Packit Service fb6fa5
Packit Service fb6fa5
  class->move_cursor = gtk_entry_move_cursor;
Packit Service fb6fa5
  class->insert_at_cursor = gtk_entry_insert_at_cursor;
Packit Service fb6fa5
  class->delete_from_cursor = gtk_entry_delete_from_cursor;
Packit Service fb6fa5
  class->backspace = gtk_entry_backspace;
Packit Service fb6fa5
  class->cut_clipboard = gtk_entry_cut_clipboard;
Packit Service fb6fa5
  class->copy_clipboard = gtk_entry_copy_clipboard;
Packit Service fb6fa5
  class->paste_clipboard = gtk_entry_paste_clipboard;
Packit Service fb6fa5
  class->toggle_overwrite = gtk_entry_toggle_overwrite;
Packit Service fb6fa5
  class->activate = gtk_entry_real_activate;
Packit Service fb6fa5
  class->get_text_area_size = gtk_entry_get_text_area_size;
Packit Service fb6fa5
  
Packit Service fb6fa5
  quark_inner_border = g_quark_from_static_string ("gtk-entry-inner-border");
Packit Service fb6fa5
  quark_password_hint = g_quark_from_static_string ("gtk-entry-password-hint");
Packit Service fb6fa5
  quark_cursor_hadjustment = g_quark_from_static_string ("gtk-hadjustment");
Packit Service fb6fa5
  quark_capslock_feedback = g_quark_from_static_string ("gtk-entry-capslock-feedback");
Packit Service fb6fa5
Packit Service fb6fa5
  g_object_class_override_property (gobject_class,
Packit Service fb6fa5
                                    PROP_EDITING_CANCELED,
Packit Service fb6fa5
                                    "editing-canceled");
Packit Service fb6fa5
Packit Service fb6fa5
  g_object_class_install_property (gobject_class,
Packit Service fb6fa5
                                   PROP_BUFFER,
Packit Service fb6fa5
                                   g_param_spec_object ("buffer",
Packit Service fb6fa5
                                                        P_("Text Buffer"),
Packit Service fb6fa5
                                                        P_("Text buffer object which actually stores entry text"),
Packit Service fb6fa5
                                                        GTK_TYPE_ENTRY_BUFFER,
Packit Service fb6fa5
                                                        GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT));
Packit Service fb6fa5
Packit Service fb6fa5
  g_object_class_install_property (gobject_class,
Packit Service fb6fa5
                                   PROP_CURSOR_POSITION,
Packit Service fb6fa5
                                   g_param_spec_int ("cursor-position",
Packit Service fb6fa5
                                                     P_("Cursor Position"),
Packit Service fb6fa5
                                                     P_("The current position of the insertion cursor in chars"),
Packit Service fb6fa5
                                                     0,
Packit Service fb6fa5
                                                     GTK_ENTRY_BUFFER_MAX_SIZE,
Packit Service fb6fa5
                                                     0,
Packit Service fb6fa5
                                                     GTK_PARAM_READABLE));
Packit Service fb6fa5
  
Packit Service fb6fa5
  g_object_class_install_property (gobject_class,
Packit Service fb6fa5
                                   PROP_SELECTION_BOUND,
Packit Service fb6fa5
                                   g_param_spec_int ("selection-bound",
Packit Service fb6fa5
                                                     P_("Selection Bound"),
Packit Service fb6fa5
                                                     P_("The position of the opposite end of the selection from the cursor in chars"),
Packit Service fb6fa5
                                                     0,
Packit Service fb6fa5
                                                     GTK_ENTRY_BUFFER_MAX_SIZE,
Packit Service fb6fa5
                                                     0,
Packit Service fb6fa5
                                                     GTK_PARAM_READABLE));
Packit Service fb6fa5
  
Packit Service fb6fa5
  g_object_class_install_property (gobject_class,
Packit Service fb6fa5
                                   PROP_EDITABLE,
Packit Service fb6fa5
                                   g_param_spec_boolean ("editable",
Packit Service fb6fa5
							 P_("Editable"),
Packit Service fb6fa5
							 P_("Whether the entry contents can be edited"),
Packit Service fb6fa5
                                                         TRUE,
Packit Service fb6fa5
							 GTK_PARAM_READWRITE));
Packit Service fb6fa5
  
Packit Service fb6fa5
  g_object_class_install_property (gobject_class,
Packit Service fb6fa5
                                   PROP_MAX_LENGTH,
Packit Service fb6fa5
                                   g_param_spec_int ("max-length",
Packit Service fb6fa5
                                                     P_("Maximum length"),
Packit Service fb6fa5
                                                     P_("Maximum number of characters for this entry. Zero if no maximum"),
Packit Service fb6fa5
                                                     0,
Packit Service fb6fa5
                                                     GTK_ENTRY_BUFFER_MAX_SIZE,
Packit Service fb6fa5
                                                     0,
Packit Service fb6fa5
                                                     GTK_PARAM_READWRITE));
Packit Service fb6fa5
  g_object_class_install_property (gobject_class,
Packit Service fb6fa5
                                   PROP_VISIBILITY,
Packit Service fb6fa5
                                   g_param_spec_boolean ("visibility",
Packit Service fb6fa5
							 P_("Visibility"),
Packit Service fb6fa5
							 P_("FALSE displays the \"invisible char\" instead of the actual text (password mode)"),
Packit Service fb6fa5
                                                         TRUE,
Packit Service fb6fa5
							 GTK_PARAM_READWRITE));
Packit Service fb6fa5
Packit Service fb6fa5
  g_object_class_install_property (gobject_class,
Packit Service fb6fa5
                                   PROP_HAS_FRAME,
Packit Service fb6fa5
                                   g_param_spec_boolean ("has-frame",
Packit Service fb6fa5
							 P_("Has Frame"),
Packit Service fb6fa5
							 P_("FALSE removes outside bevel from entry"),
Packit Service fb6fa5
                                                         TRUE,
Packit Service fb6fa5
							 GTK_PARAM_READWRITE));
Packit Service fb6fa5
Packit Service fb6fa5
  g_object_class_install_property (gobject_class,
Packit Service fb6fa5
                                   PROP_INNER_BORDER,
Packit Service fb6fa5
                                   g_param_spec_boxed ("inner-border",
Packit Service fb6fa5
                                                       P_("Inner Border"),
Packit Service fb6fa5
                                                       P_("Border between text and frame. Overrides the inner-border style property"),
Packit Service fb6fa5
                                                       GTK_TYPE_BORDER,
Packit Service fb6fa5
                                                       GTK_PARAM_READWRITE));
Packit Service fb6fa5
Packit Service fb6fa5
  g_object_class_install_property (gobject_class,
Packit Service fb6fa5
                                   PROP_INVISIBLE_CHAR,
Packit Service fb6fa5
                                   g_param_spec_unichar ("invisible-char",
Packit Service fb6fa5
							 P_("Invisible character"),
Packit Service fb6fa5
							 P_("The character to use when masking entry contents (in \"password mode\")"),
Packit Service fb6fa5
							 '*',
Packit Service fb6fa5
							 GTK_PARAM_READWRITE));
Packit Service fb6fa5
Packit Service fb6fa5
  g_object_class_install_property (gobject_class,
Packit Service fb6fa5
                                   PROP_ACTIVATES_DEFAULT,
Packit Service fb6fa5
                                   g_param_spec_boolean ("activates-default",
Packit Service fb6fa5
							 P_("Activates default"),
Packit Service fb6fa5
							 P_("Whether to activate the default widget (such as the default button in a dialog) when Enter is pressed"),
Packit Service fb6fa5
                                                         FALSE,
Packit Service fb6fa5
							 GTK_PARAM_READWRITE));
Packit Service fb6fa5
  g_object_class_install_property (gobject_class,
Packit Service fb6fa5
                                   PROP_WIDTH_CHARS,
Packit Service fb6fa5
                                   g_param_spec_int ("width-chars",
Packit Service fb6fa5
                                                     P_("Width in chars"),
Packit Service fb6fa5
                                                     P_("Number of characters to leave space for in the entry"),
Packit Service fb6fa5
                                                     -1,
Packit Service fb6fa5
                                                     G_MAXINT,
Packit Service fb6fa5
                                                     -1,
Packit Service fb6fa5
                                                     GTK_PARAM_READWRITE));
Packit Service fb6fa5
Packit Service fb6fa5
  g_object_class_install_property (gobject_class,
Packit Service fb6fa5
                                   PROP_SCROLL_OFFSET,
Packit Service fb6fa5
                                   g_param_spec_int ("scroll-offset",
Packit Service fb6fa5
                                                     P_("Scroll offset"),
Packit Service fb6fa5
                                                     P_("Number of pixels of the entry scrolled off the screen to the left"),
Packit Service fb6fa5
                                                     0,
Packit Service fb6fa5
                                                     G_MAXINT,
Packit Service fb6fa5
                                                     0,
Packit Service fb6fa5
                                                     GTK_PARAM_READABLE));
Packit Service fb6fa5
Packit Service fb6fa5
  g_object_class_install_property (gobject_class,
Packit Service fb6fa5
                                   PROP_TEXT,
Packit Service fb6fa5
                                   g_param_spec_string ("text",
Packit Service fb6fa5
							P_("Text"),
Packit Service fb6fa5
							P_("The contents of the entry"),
Packit Service fb6fa5
							"",
Packit Service fb6fa5
							GTK_PARAM_READWRITE));
Packit Service fb6fa5
Packit Service fb6fa5
  /**
Packit Service fb6fa5
   * GtkEntry:xalign:
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * The horizontal alignment, from 0 (left) to 1 (right). 
Packit Service fb6fa5
   * Reversed for RTL layouts.
Packit Service fb6fa5
   * 
Packit Service fb6fa5
   * Since: 2.4
Packit Service fb6fa5
   */
Packit Service fb6fa5
  g_object_class_install_property (gobject_class,
Packit Service fb6fa5
                                   PROP_XALIGN,
Packit Service fb6fa5
                                   g_param_spec_float ("xalign",
Packit Service fb6fa5
						       P_("X align"),
Packit Service fb6fa5
						       P_("The horizontal alignment, from 0 (left) to 1 (right). Reversed for RTL layouts."),
Packit Service fb6fa5
						       0.0,
Packit Service fb6fa5
						       1.0,
Packit Service fb6fa5
						       0.0,
Packit Service fb6fa5
						       GTK_PARAM_READWRITE));
Packit Service fb6fa5
Packit Service fb6fa5
  /**
Packit Service fb6fa5
   * GtkEntry:truncate-multiline:
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * When %TRUE, pasted multi-line text is truncated to the first line.
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * Since: 2.10
Packit Service fb6fa5
   */
Packit Service fb6fa5
  g_object_class_install_property (gobject_class,
Packit Service fb6fa5
                                   PROP_TRUNCATE_MULTILINE,
Packit Service fb6fa5
                                   g_param_spec_boolean ("truncate-multiline",
Packit Service fb6fa5
                                                         P_("Truncate multiline"),
Packit Service fb6fa5
                                                         P_("Whether to truncate multiline pastes to one line."),
Packit Service fb6fa5
                                                         FALSE,
Packit Service fb6fa5
                                                         GTK_PARAM_READWRITE));
Packit Service fb6fa5
Packit Service fb6fa5
  /**
Packit Service fb6fa5
   * GtkEntry:shadow-type:
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * Which kind of shadow to draw around the entry when 
Packit Service fb6fa5
   * #GtkEntry:has-frame is set to %TRUE.
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * Since: 2.12
Packit Service fb6fa5
   */
Packit Service fb6fa5
  g_object_class_install_property (gobject_class,
Packit Service fb6fa5
                                   PROP_SHADOW_TYPE,
Packit Service fb6fa5
                                   g_param_spec_enum ("shadow-type",
Packit Service fb6fa5
                                                      P_("Shadow type"),
Packit Service fb6fa5
                                                      P_("Which kind of shadow to draw around the entry when has-frame is set"),
Packit Service fb6fa5
                                                      GTK_TYPE_SHADOW_TYPE,
Packit Service fb6fa5
                                                      GTK_SHADOW_IN,
Packit Service fb6fa5
                                                      GTK_PARAM_READWRITE));
Packit Service fb6fa5
Packit Service fb6fa5
  /**
Packit Service fb6fa5
   * GtkEntry:overwrite-mode:
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * If text is overwritten when typing in the #GtkEntry.
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * Since: 2.14
Packit Service fb6fa5
   */
Packit Service fb6fa5
  g_object_class_install_property (gobject_class,
Packit Service fb6fa5
                                   PROP_OVERWRITE_MODE,
Packit Service fb6fa5
                                   g_param_spec_boolean ("overwrite-mode",
Packit Service fb6fa5
                                                         P_("Overwrite mode"),
Packit Service fb6fa5
                                                         P_("Whether new text overwrites existing text"),
Packit Service fb6fa5
                                                         FALSE,
Packit Service fb6fa5
                                                         GTK_PARAM_READWRITE));
Packit Service fb6fa5
Packit Service fb6fa5
  /**
Packit Service fb6fa5
   * GtkEntry:text-length:
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * The length of the text in the #GtkEntry.
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * Since: 2.14
Packit Service fb6fa5
   */
Packit Service fb6fa5
  g_object_class_install_property (gobject_class,
Packit Service fb6fa5
                                   PROP_TEXT_LENGTH,
Packit Service fb6fa5
                                   g_param_spec_uint ("text-length",
Packit Service fb6fa5
                                                      P_("Text length"),
Packit Service fb6fa5
                                                      P_("Length of the text currently in the entry"),
Packit Service fb6fa5
                                                      0, 
Packit Service fb6fa5
                                                      G_MAXUINT16,
Packit Service fb6fa5
                                                      0,
Packit Service fb6fa5
                                                      GTK_PARAM_READABLE));
Packit Service fb6fa5
  /**
Packit Service fb6fa5
   * GtkEntry:invisible-char-set:
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * Whether the invisible char has been set for the #GtkEntry.
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * Since: 2.16
Packit Service fb6fa5
   */
Packit Service fb6fa5
  g_object_class_install_property (gobject_class,
Packit Service fb6fa5
                                   PROP_INVISIBLE_CHAR_SET,
Packit Service fb6fa5
                                   g_param_spec_boolean ("invisible-char-set",
Packit Service fb6fa5
                                                         P_("Invisible char set"),
Packit Service fb6fa5
                                                         P_("Whether the invisible char has been set"),
Packit Service fb6fa5
                                                         FALSE,
Packit Service fb6fa5
                                                         GTK_PARAM_READWRITE));
Packit Service fb6fa5
Packit Service fb6fa5
  /**
Packit Service fb6fa5
   * GtkEntry:caps-lock-warning
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * Whether password entries will show a warning when Caps Lock is on.
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * Note that the warning is shown using a secondary icon, and thus
Packit Service fb6fa5
   * does not work if you are using the secondary icon position for some 
Packit Service fb6fa5
   * other purpose.
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * Since: 2.16
Packit Service fb6fa5
   */
Packit Service fb6fa5
  g_object_class_install_property (gobject_class,
Packit Service fb6fa5
                                   PROP_CAPS_LOCK_WARNING,
Packit Service fb6fa5
                                   g_param_spec_boolean ("caps-lock-warning",
Packit Service fb6fa5
                                                         P_("Caps Lock warning"),
Packit Service fb6fa5
                                                         P_("Whether password entries will show a warning when Caps Lock is on"),
Packit Service fb6fa5
                                                         TRUE,
Packit Service fb6fa5
                                                         GTK_PARAM_READWRITE));
Packit Service fb6fa5
Packit Service fb6fa5
  /**
Packit Service fb6fa5
   * GtkEntry:progress-fraction:
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * The current fraction of the task that's been completed.
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * Since: 2.16
Packit Service fb6fa5
   */
Packit Service fb6fa5
  g_object_class_install_property (gobject_class,
Packit Service fb6fa5
                                   PROP_PROGRESS_FRACTION,
Packit Service fb6fa5
                                   g_param_spec_double ("progress-fraction",
Packit Service fb6fa5
                                                        P_("Progress Fraction"),
Packit Service fb6fa5
                                                        P_("The current fraction of the task that's been completed"),
Packit Service fb6fa5
                                                        0.0,
Packit Service fb6fa5
                                                        1.0,
Packit Service fb6fa5
                                                        0.0,
Packit Service fb6fa5
                                                        GTK_PARAM_READWRITE));
Packit Service fb6fa5
Packit Service fb6fa5
  /**
Packit Service fb6fa5
   * GtkEntry:progress-pulse-step:
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * The fraction of total entry width to move the progress
Packit Service fb6fa5
   * bouncing block for each call to gtk_entry_progress_pulse().
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * Since: 2.16
Packit Service fb6fa5
   */
Packit Service fb6fa5
  g_object_class_install_property (gobject_class,
Packit Service fb6fa5
                                   PROP_PROGRESS_PULSE_STEP,
Packit Service fb6fa5
                                   g_param_spec_double ("progress-pulse-step",
Packit Service fb6fa5
                                                        P_("Progress Pulse Step"),
Packit Service fb6fa5
                                                        P_("The fraction of total entry width to move the progress bouncing block for each call to gtk_entry_progress_pulse()"),
Packit Service fb6fa5
                                                        0.0,
Packit Service fb6fa5
                                                        1.0,
Packit Service fb6fa5
                                                        0.1,
Packit Service fb6fa5
                                                        GTK_PARAM_READWRITE));
Packit Service fb6fa5
Packit Service fb6fa5
  /**
Packit Service fb6fa5
   * GtkEntry:primary-icon-pixbuf:
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * A pixbuf to use as the primary icon for the entry.
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * Since: 2.16
Packit Service fb6fa5
   */
Packit Service fb6fa5
  g_object_class_install_property (gobject_class,
Packit Service fb6fa5
                                   PROP_PIXBUF_PRIMARY,
Packit Service fb6fa5
                                   g_param_spec_object ("primary-icon-pixbuf",
Packit Service fb6fa5
                                                        P_("Primary pixbuf"),
Packit Service fb6fa5
                                                        P_("Primary pixbuf for the entry"),
Packit Service fb6fa5
                                                        GDK_TYPE_PIXBUF,
Packit Service fb6fa5
                                                        GTK_PARAM_READWRITE));
Packit Service fb6fa5
  
Packit Service fb6fa5
  /**
Packit Service fb6fa5
   * GtkEntry:secondary-icon-pixbuf:
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * An pixbuf to use as the secondary icon for the entry.
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * Since: 2.16
Packit Service fb6fa5
   */
Packit Service fb6fa5
  g_object_class_install_property (gobject_class,
Packit Service fb6fa5
                                   PROP_PIXBUF_SECONDARY,
Packit Service fb6fa5
                                   g_param_spec_object ("secondary-icon-pixbuf",
Packit Service fb6fa5
                                                        P_("Secondary pixbuf"),
Packit Service fb6fa5
                                                        P_("Secondary pixbuf for the entry"),
Packit Service fb6fa5
                                                        GDK_TYPE_PIXBUF,
Packit Service fb6fa5
                                                        GTK_PARAM_READWRITE));
Packit Service fb6fa5
Packit Service fb6fa5
  /**
Packit Service fb6fa5
   * GtkEntry:primary-icon-stock:
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * The stock id to use for the primary icon for the entry.
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * Since: 2.16
Packit Service fb6fa5
   */
Packit Service fb6fa5
  g_object_class_install_property (gobject_class,
Packit Service fb6fa5
                                   PROP_STOCK_PRIMARY,
Packit Service fb6fa5
                                   g_param_spec_string ("primary-icon-stock",
Packit Service fb6fa5
                                                        P_("Primary stock ID"),
Packit Service fb6fa5
                                                        P_("Stock ID for primary icon"),
Packit Service fb6fa5
                                                        NULL,
Packit Service fb6fa5
                                                        GTK_PARAM_READWRITE));
Packit Service fb6fa5
Packit Service fb6fa5
  /**
Packit Service fb6fa5
   * GtkEntry:secondary-icon-stock:
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * The stock id to use for the secondary icon for the entry.
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * Since: 2.16
Packit Service fb6fa5
   */
Packit Service fb6fa5
  g_object_class_install_property (gobject_class,
Packit Service fb6fa5
                                   PROP_STOCK_SECONDARY,
Packit Service fb6fa5
                                   g_param_spec_string ("secondary-icon-stock",
Packit Service fb6fa5
                                                        P_("Secondary stock ID"),
Packit Service fb6fa5
                                                        P_("Stock ID for secondary icon"),
Packit Service fb6fa5
                                                        NULL,
Packit Service fb6fa5
                                                        GTK_PARAM_READWRITE));
Packit Service fb6fa5
  
Packit Service fb6fa5
  /**
Packit Service fb6fa5
   * GtkEntry:primary-icon-name:
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * The icon name to use for the primary icon for the entry.
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * Since: 2.16
Packit Service fb6fa5
   */
Packit Service fb6fa5
  g_object_class_install_property (gobject_class,
Packit Service fb6fa5
                                   PROP_ICON_NAME_PRIMARY,
Packit Service fb6fa5
                                   g_param_spec_string ("primary-icon-name",
Packit Service fb6fa5
                                                        P_("Primary icon name"),
Packit Service fb6fa5
                                                        P_("Icon name for primary icon"),
Packit Service fb6fa5
                                                        NULL,
Packit Service fb6fa5
                                                        GTK_PARAM_READWRITE));
Packit Service fb6fa5
  
Packit Service fb6fa5
  /**
Packit Service fb6fa5
   * GtkEntry:secondary-icon-name:
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * The icon name to use for the secondary icon for the entry.
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * Since: 2.16
Packit Service fb6fa5
   */
Packit Service fb6fa5
  g_object_class_install_property (gobject_class,
Packit Service fb6fa5
                                   PROP_ICON_NAME_SECONDARY,
Packit Service fb6fa5
                                   g_param_spec_string ("secondary-icon-name",
Packit Service fb6fa5
                                                        P_("Secondary icon name"),
Packit Service fb6fa5
                                                        P_("Icon name for secondary icon"),
Packit Service fb6fa5
                                                        NULL,
Packit Service fb6fa5
                                                        GTK_PARAM_READWRITE));
Packit Service fb6fa5
  
Packit Service fb6fa5
  /**
Packit Service fb6fa5
   * GtkEntry:primary-icon-gicon:
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * The #GIcon to use for the primary icon for the entry.
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * Since: 2.16
Packit Service fb6fa5
   */
Packit Service fb6fa5
  g_object_class_install_property (gobject_class,
Packit Service fb6fa5
                                   PROP_GICON_PRIMARY,
Packit Service fb6fa5
                                   g_param_spec_object ("primary-icon-gicon",
Packit Service fb6fa5
                                                        P_("Primary GIcon"),
Packit Service fb6fa5
                                                        P_("GIcon for primary icon"),
Packit Service fb6fa5
                                                        G_TYPE_ICON,
Packit Service fb6fa5
                                                        GTK_PARAM_READWRITE));
Packit Service fb6fa5
  
Packit Service fb6fa5
  /**
Packit Service fb6fa5
   * GtkEntry:secondary-icon-gicon:
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * The #GIcon to use for the secondary icon for the entry.
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * Since: 2.16
Packit Service fb6fa5
   */
Packit Service fb6fa5
  g_object_class_install_property (gobject_class,
Packit Service fb6fa5
                                   PROP_GICON_SECONDARY,
Packit Service fb6fa5
                                   g_param_spec_object ("secondary-icon-gicon",
Packit Service fb6fa5
                                                        P_("Secondary GIcon"),
Packit Service fb6fa5
                                                        P_("GIcon for secondary icon"),
Packit Service fb6fa5
                                                        G_TYPE_ICON,
Packit Service fb6fa5
                                                        GTK_PARAM_READWRITE));
Packit Service fb6fa5
  
Packit Service fb6fa5
  /**
Packit Service fb6fa5
   * GtkEntry:primary-icon-storage-type:
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * The representation which is used for the primary icon of the entry.
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * Since: 2.16
Packit Service fb6fa5
   */
Packit Service fb6fa5
  g_object_class_install_property (gobject_class,
Packit Service fb6fa5
                                   PROP_STORAGE_TYPE_PRIMARY,
Packit Service fb6fa5
                                   g_param_spec_enum ("primary-icon-storage-type",
Packit Service fb6fa5
                                                      P_("Primary storage type"),
Packit Service fb6fa5
                                                      P_("The representation being used for primary icon"),
Packit Service fb6fa5
                                                      GTK_TYPE_IMAGE_TYPE,
Packit Service fb6fa5
                                                      GTK_IMAGE_EMPTY,
Packit Service fb6fa5
                                                      GTK_PARAM_READABLE));
Packit Service fb6fa5
  
Packit Service fb6fa5
  /**
Packit Service fb6fa5
   * GtkEntry:secondary-icon-storage-type:
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * The representation which is used for the secondary icon of the entry.
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * Since: 2.16
Packit Service fb6fa5
   */
Packit Service fb6fa5
  g_object_class_install_property (gobject_class,
Packit Service fb6fa5
                                   PROP_STORAGE_TYPE_SECONDARY,
Packit Service fb6fa5
                                   g_param_spec_enum ("secondary-icon-storage-type",
Packit Service fb6fa5
                                                      P_("Secondary storage type"),
Packit Service fb6fa5
                                                      P_("The representation being used for secondary icon"),
Packit Service fb6fa5
                                                      GTK_TYPE_IMAGE_TYPE,
Packit Service fb6fa5
                                                      GTK_IMAGE_EMPTY,
Packit Service fb6fa5
                                                      GTK_PARAM_READABLE));
Packit Service fb6fa5
  
Packit Service fb6fa5
  /**
Packit Service fb6fa5
   * GtkEntry:primary-icon-activatable:
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * Whether the primary icon is activatable.
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * GTK+ emits the #GtkEntry::icon-press and #GtkEntry::icon-release 
Packit Service fb6fa5
   * signals only on sensitive, activatable icons. 
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * Sensitive, but non-activatable icons can be used for purely 
Packit Service fb6fa5
   * informational purposes.
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * Since: 2.16
Packit Service fb6fa5
   */
Packit Service fb6fa5
  g_object_class_install_property (gobject_class,
Packit Service fb6fa5
                                   PROP_ACTIVATABLE_PRIMARY,
Packit Service fb6fa5
                                   g_param_spec_boolean ("primary-icon-activatable",
Packit Service fb6fa5
                                                         P_("Primary icon activatable"),
Packit Service fb6fa5
                                                         P_("Whether the primary icon is activatable"),
Packit Service fb6fa5
                                                         FALSE,
Packit Service fb6fa5
                                                         GTK_PARAM_READWRITE));
Packit Service fb6fa5
  
Packit Service fb6fa5
  /**
Packit Service fb6fa5
   * GtkEntry:secondary-icon-activatable:
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * Whether the secondary icon is activatable.
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * GTK+ emits the #GtkEntry::icon-press and #GtkEntry::icon-release 
Packit Service fb6fa5
   * signals only on sensitive, activatable icons.
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * Sensitive, but non-activatable icons can be used for purely 
Packit Service fb6fa5
   * informational purposes.
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * Since: 2.16
Packit Service fb6fa5
   */
Packit Service fb6fa5
  g_object_class_install_property (gobject_class,
Packit Service fb6fa5
                                   PROP_ACTIVATABLE_SECONDARY,
Packit Service fb6fa5
                                   g_param_spec_boolean ("secondary-icon-activatable",
Packit Service fb6fa5
                                                         P_("Secondary icon activatable"),
Packit Service fb6fa5
                                                         P_("Whether the secondary icon is activatable"),
Packit Service fb6fa5
                                                         FALSE,
Packit Service fb6fa5
                                                         GTK_PARAM_READWRITE));
Packit Service fb6fa5
  
Packit Service fb6fa5
  
Packit Service fb6fa5
  /**
Packit Service fb6fa5
   * GtkEntry:primary-icon-sensitive:
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * Whether the primary icon is sensitive.
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * An insensitive icon appears grayed out. GTK+ does not emit the 
Packit Service fb6fa5
   * #GtkEntry::icon-press and #GtkEntry::icon-release signals and 
Packit Service fb6fa5
   * does not allow DND from insensitive icons.
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * An icon should be set insensitive if the action that would trigger
Packit Service fb6fa5
   * when clicked is currently not available.
Packit Service fb6fa5
   * 
Packit Service fb6fa5
   * Since: 2.16
Packit Service fb6fa5
   */
Packit Service fb6fa5
  g_object_class_install_property (gobject_class,
Packit Service fb6fa5
                                   PROP_SENSITIVE_PRIMARY,
Packit Service fb6fa5
                                   g_param_spec_boolean ("primary-icon-sensitive",
Packit Service fb6fa5
                                                         P_("Primary icon sensitive"),
Packit Service fb6fa5
                                                         P_("Whether the primary icon is sensitive"),
Packit Service fb6fa5
                                                         TRUE,
Packit Service fb6fa5
                                                         GTK_PARAM_READWRITE));
Packit Service fb6fa5
  
Packit Service fb6fa5
  /**
Packit Service fb6fa5
   * GtkEntry:secondary-icon-sensitive:
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * Whether the secondary icon is sensitive.
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * An insensitive icon appears grayed out. GTK+ does not emit the 
Packit Service fb6fa5
   * #GtkEntry::icon-press and #GtkEntry::icon-release signals and 
Packit Service fb6fa5
   * does not allow DND from insensitive icons.
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * An icon should be set insensitive if the action that would trigger
Packit Service fb6fa5
   * when clicked is currently not available.
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * Since: 2.16
Packit Service fb6fa5
   */
Packit Service fb6fa5
  g_object_class_install_property (gobject_class,
Packit Service fb6fa5
                                   PROP_SENSITIVE_SECONDARY,
Packit Service fb6fa5
                                   g_param_spec_boolean ("secondary-icon-sensitive",
Packit Service fb6fa5
                                                         P_("Secondary icon sensitive"),
Packit Service fb6fa5
                                                         P_("Whether the secondary icon is sensitive"),
Packit Service fb6fa5
                                                         TRUE,
Packit Service fb6fa5
                                                         GTK_PARAM_READWRITE));
Packit Service fb6fa5
  
Packit Service fb6fa5
  /**
Packit Service fb6fa5
   * GtkEntry:primary-icon-tooltip-text:
Packit Service fb6fa5
   * 
Packit Service fb6fa5
   * The contents of the tooltip on the primary icon.
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * Also see gtk_entry_set_icon_tooltip_text().
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * Since: 2.16
Packit Service fb6fa5
   */
Packit Service fb6fa5
  g_object_class_install_property (gobject_class,
Packit Service fb6fa5
                                   PROP_TOOLTIP_TEXT_PRIMARY,
Packit Service fb6fa5
                                   g_param_spec_string ("primary-icon-tooltip-text",
Packit Service fb6fa5
                                                        P_("Primary icon tooltip text"),
Packit Service fb6fa5
                                                        P_("The contents of the tooltip on the primary icon"),                              
Packit Service fb6fa5
                                                        NULL,
Packit Service fb6fa5
                                                        GTK_PARAM_READWRITE));
Packit Service fb6fa5
  
Packit Service fb6fa5
  /**
Packit Service fb6fa5
   * GtkEntry:secondary-icon-tooltip-text:
Packit Service fb6fa5
   * 
Packit Service fb6fa5
   * The contents of the tooltip on the secondary icon.
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * Also see gtk_entry_set_icon_tooltip_text().
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * Since: 2.16
Packit Service fb6fa5
   */
Packit Service fb6fa5
  g_object_class_install_property (gobject_class,
Packit Service fb6fa5
                                   PROP_TOOLTIP_TEXT_SECONDARY,
Packit Service fb6fa5
                                   g_param_spec_string ("secondary-icon-tooltip-text",
Packit Service fb6fa5
                                                        P_("Secondary icon tooltip text"),
Packit Service fb6fa5
                                                        P_("The contents of the tooltip on the secondary icon"),                              
Packit Service fb6fa5
                                                        NULL,
Packit Service fb6fa5
                                                        GTK_PARAM_READWRITE));
Packit Service fb6fa5
Packit Service fb6fa5
  /**
Packit Service fb6fa5
   * GtkEntry:primary-icon-tooltip-markup:
Packit Service fb6fa5
   * 
Packit Service fb6fa5
   * The contents of the tooltip on the primary icon, which is marked up
Packit Service fb6fa5
   * with the <link linkend="PangoMarkupFormat">Pango text markup 
Packit Service fb6fa5
   * language</link>.
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * Also see gtk_entry_set_icon_tooltip_markup().
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * Since: 2.16
Packit Service fb6fa5
   */
Packit Service fb6fa5
  g_object_class_install_property (gobject_class,
Packit Service fb6fa5
                                   PROP_TOOLTIP_MARKUP_PRIMARY,
Packit Service fb6fa5
                                   g_param_spec_string ("primary-icon-tooltip-markup",
Packit Service fb6fa5
                                                        P_("Primary icon tooltip markup"),
Packit Service fb6fa5
                                                        P_("The contents of the tooltip on the primary icon"),                              
Packit Service fb6fa5
                                                        NULL,
Packit Service fb6fa5
                                                        GTK_PARAM_READWRITE));
Packit Service fb6fa5
Packit Service fb6fa5
  /**
Packit Service fb6fa5
   * GtkEntry:secondary-icon-tooltip-markup:
Packit Service fb6fa5
   * 
Packit Service fb6fa5
   * The contents of the tooltip on the secondary icon, which is marked up
Packit Service fb6fa5
   * with the <link linkend="PangoMarkupFormat">Pango text markup 
Packit Service fb6fa5
   * language</link>.
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * Also see gtk_entry_set_icon_tooltip_markup().
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * Since: 2.16
Packit Service fb6fa5
   */
Packit Service fb6fa5
  g_object_class_install_property (gobject_class,
Packit Service fb6fa5
                                   PROP_TOOLTIP_MARKUP_SECONDARY,
Packit Service fb6fa5
                                   g_param_spec_string ("secondary-icon-tooltip-markup",
Packit Service fb6fa5
                                                        P_("Secondary icon tooltip markup"),
Packit Service fb6fa5
                                                        P_("The contents of the tooltip on the secondary icon"),                              
Packit Service fb6fa5
                                                        NULL,
Packit Service fb6fa5
                                                        GTK_PARAM_READWRITE));
Packit Service fb6fa5
Packit Service fb6fa5
  /**
Packit Service fb6fa5
   * GtkEntry:im-module:
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * Which IM (input method) module should be used for this entry. 
Packit Service fb6fa5
   * See #GtkIMContext.
Packit Service fb6fa5
   * 
Packit Service fb6fa5
   * Setting this to a non-%NULL value overrides the
Packit Service fb6fa5
   * system-wide IM module setting. See the GtkSettings 
Packit Service fb6fa5
   * #GtkSettings:gtk-im-module property.
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * Since: 2.16
Packit Service fb6fa5
   */  
Packit Service fb6fa5
  g_object_class_install_property (gobject_class,
Packit Service fb6fa5
                                   PROP_IM_MODULE,
Packit Service fb6fa5
                                   g_param_spec_string ("im-module",
Packit Service fb6fa5
                                                        P_("IM module"),
Packit Service fb6fa5
                                                        P_("Which IM module should be used"),
Packit Service fb6fa5
                                                        NULL,
Packit Service fb6fa5
                                                        GTK_PARAM_READWRITE));
Packit Service fb6fa5
Packit Service fb6fa5
  /**
Packit Service fb6fa5
   * GtkEntry:icon-prelight:
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * The prelight style property determines whether activatable
Packit Service fb6fa5
   * icons prelight on mouseover.
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * Since: 2.16
Packit Service fb6fa5
   */
Packit Service fb6fa5
  gtk_widget_class_install_style_property (widget_class,
Packit Service fb6fa5
                                           g_param_spec_boolean ("icon-prelight",
Packit Service fb6fa5
                                                                 P_("Icon Prelight"),
Packit Service fb6fa5
                                                                 P_("Whether activatable icons should prelight when hovered"),
Packit Service fb6fa5
                                                                 TRUE,
Packit Service fb6fa5
                                                                 GTK_PARAM_READABLE));
Packit Service fb6fa5
Packit Service fb6fa5
  /**
Packit Service fb6fa5
   * GtkEntry:progress-border:
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * The border around the progress bar in the entry.
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * Since: 2.16
Packit Service fb6fa5
   */
Packit Service fb6fa5
  gtk_widget_class_install_style_property (widget_class,
Packit Service fb6fa5
					   g_param_spec_boxed ("progress-border",
Packit Service fb6fa5
                                                               P_("Progress Border"),
Packit Service fb6fa5
                                                               P_("Border around the progress bar"),
Packit Service fb6fa5
                                                               GTK_TYPE_BORDER,
Packit Service fb6fa5
                                                               GTK_PARAM_READABLE));
Packit Service fb6fa5
  
Packit Service fb6fa5
  /**
Packit Service fb6fa5
   * GtkEntry:invisible-char:
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * The invisible character is used when masking entry contents (in
Packit Service fb6fa5
   * \"password mode\")"). When it is not explicitly set with the
Packit Service fb6fa5
   * #GtkEntry::invisible-char property, GTK+ determines the character
Packit Service fb6fa5
   * to use from a list of possible candidates, depending on availability
Packit Service fb6fa5
   * in the current font.
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * This style property allows the theme to prepend a character
Packit Service fb6fa5
   * to the list of candidates.
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * Since: 2.18
Packit Service fb6fa5
   */
Packit Service fb6fa5
  gtk_widget_class_install_style_property (widget_class,
Packit Service fb6fa5
                                           g_param_spec_unichar ("invisible-char",
Packit Service fb6fa5
					    		         P_("Invisible character"),
Packit Service fb6fa5
							         P_("The character to use when masking entry contents (in \"password mode\")"),
Packit Service fb6fa5
							         0,
Packit Service fb6fa5
							         GTK_PARAM_READABLE));
Packit Service fb6fa5
  
Packit Service fb6fa5
  /**
Packit Service fb6fa5
   * GtkEntry::populate-popup:
Packit Service fb6fa5
   * @entry: The entry on which the signal is emitted
Packit Service fb6fa5
   * @menu: the menu that is being populated
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * The ::populate-popup signal gets emitted before showing the 
Packit Service fb6fa5
   * context menu of the entry. 
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * If you need to add items to the context menu, connect
Packit Service fb6fa5
   * to this signal and append your menuitems to the @menu.
Packit Service fb6fa5
   */
Packit Service fb6fa5
  signals[POPULATE_POPUP] =
Packit Service fb6fa5
    g_signal_new (I_("populate-popup"),
Packit Service fb6fa5
		  G_OBJECT_CLASS_TYPE (gobject_class),
Packit Service fb6fa5
		  G_SIGNAL_RUN_LAST,
Packit Service fb6fa5
		  G_STRUCT_OFFSET (GtkEntryClass, populate_popup),
Packit Service fb6fa5
		  NULL, NULL,
Packit Service fb6fa5
		  _gtk_marshal_VOID__OBJECT,
Packit Service fb6fa5
		  G_TYPE_NONE, 1,
Packit Service fb6fa5
		  GTK_TYPE_MENU);
Packit Service fb6fa5
  
Packit Service fb6fa5
 /* Action signals */
Packit Service fb6fa5
  
Packit Service fb6fa5
  /**
Packit Service fb6fa5
   * GtkEntry::activate:
Packit Service fb6fa5
   * @entry: The entry on which the signal is emitted
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * The ::activate signal is emitted when the the user hits
Packit Service fb6fa5
   * the Enter key.
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * While this signal is used as a <link linkend="keybinding-signals">keybinding signal</link>,
Packit Service fb6fa5
   * it is also commonly used by applications to intercept
Packit Service fb6fa5
   * activation of entries.
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * The default bindings for this signal are all forms of the Enter key.
Packit Service fb6fa5
   */
Packit Service fb6fa5
  signals[ACTIVATE] =
Packit Service fb6fa5
    g_signal_new (I_("activate"),
Packit Service fb6fa5
		  G_OBJECT_CLASS_TYPE (gobject_class),
Packit Service fb6fa5
		  G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
Packit Service fb6fa5
		  G_STRUCT_OFFSET (GtkEntryClass, activate),
Packit Service fb6fa5
		  NULL, NULL,
Packit Service fb6fa5
		  _gtk_marshal_VOID__VOID,
Packit Service fb6fa5
		  G_TYPE_NONE, 0);
Packit Service fb6fa5
  widget_class->activate_signal = signals[ACTIVATE];
Packit Service fb6fa5
Packit Service fb6fa5
  /**
Packit Service fb6fa5
   * GtkEntry::move-cursor:
Packit Service fb6fa5
   * @entry: the object which received the signal
Packit Service fb6fa5
   * @step: the granularity of the move, as a #GtkMovementStep
Packit Service fb6fa5
   * @count: the number of @step units to move
Packit Service fb6fa5
   * @extend_selection: %TRUE if the move should extend the selection
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * The ::move-cursor signal is a
Packit Service fb6fa5
   * <link linkend="keybinding-signals">keybinding signal</link>
Packit Service fb6fa5
   * which gets emitted when the user initiates a cursor movement.
Packit Service fb6fa5
   * If the cursor is not visible in @entry, this signal causes
Packit Service fb6fa5
   * the viewport to be moved instead.
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * Applications should not connect to it, but may emit it with
Packit Service fb6fa5
   * g_signal_emit_by_name() if they need to control the cursor
Packit Service fb6fa5
   * programmatically.
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * The default bindings for this signal come in two variants,
Packit Service fb6fa5
   * the variant with the Shift modifier extends the selection,
Packit Service fb6fa5
   * the variant without the Shift modifer does not.
Packit Service fb6fa5
   * There are too many key combinations to list them all here.
Packit Service fb6fa5
   * <itemizedlist>
Packit Service fb6fa5
   * <listitem>Arrow keys move by individual characters/lines</listitem>
Packit Service fb6fa5
   * <listitem>Ctrl-arrow key combinations move by words/paragraphs</listitem>
Packit Service fb6fa5
   * <listitem>Home/End keys move to the ends of the buffer</listitem>
Packit Service fb6fa5
   * </itemizedlist>
Packit Service fb6fa5
   */
Packit Service fb6fa5
  signals[MOVE_CURSOR] = 
Packit Service fb6fa5
    g_signal_new (I_("move-cursor"),
Packit Service fb6fa5
		  G_OBJECT_CLASS_TYPE (gobject_class),
Packit Service fb6fa5
		  G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
Packit Service fb6fa5
		  G_STRUCT_OFFSET (GtkEntryClass, move_cursor),
Packit Service fb6fa5
		  NULL, NULL,
Packit Service fb6fa5
		  _gtk_marshal_VOID__ENUM_INT_BOOLEAN,
Packit Service fb6fa5
		  G_TYPE_NONE, 3,
Packit Service fb6fa5
		  GTK_TYPE_MOVEMENT_STEP,
Packit Service fb6fa5
		  G_TYPE_INT,
Packit Service fb6fa5
		  G_TYPE_BOOLEAN);
Packit Service fb6fa5
Packit Service fb6fa5
  /**
Packit Service fb6fa5
   * GtkEntry::insert-at-cursor:
Packit Service fb6fa5
   * @entry: the object which received the signal
Packit Service fb6fa5
   * @string: the string to insert
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * The ::insert-at-cursor signal is a
Packit Service fb6fa5
   * <link linkend="keybinding-signals">keybinding signal</link>
Packit Service fb6fa5
   * which gets emitted when the user initiates the insertion of a
Packit Service fb6fa5
   * fixed string at the cursor.
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * This signal has no default bindings.
Packit Service fb6fa5
   */
Packit Service fb6fa5
  signals[INSERT_AT_CURSOR] = 
Packit Service fb6fa5
    g_signal_new (I_("insert-at-cursor"),
Packit Service fb6fa5
		  G_OBJECT_CLASS_TYPE (gobject_class),
Packit Service fb6fa5
		  G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
Packit Service fb6fa5
		  G_STRUCT_OFFSET (GtkEntryClass, insert_at_cursor),
Packit Service fb6fa5
		  NULL, NULL,
Packit Service fb6fa5
		  _gtk_marshal_VOID__STRING,
Packit Service fb6fa5
		  G_TYPE_NONE, 1,
Packit Service fb6fa5
		  G_TYPE_STRING);
Packit Service fb6fa5
Packit Service fb6fa5
  /**
Packit Service fb6fa5
   * GtkEntry::delete-from-cursor:
Packit Service fb6fa5
   * @entry: the object which received the signal
Packit Service fb6fa5
   * @type: the granularity of the deletion, as a #GtkDeleteType
Packit Service fb6fa5
   * @count: the number of @type units to delete
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * The ::delete-from-cursor signal is a
Packit Service fb6fa5
   * <link linkend="keybinding-signals">keybinding signal</link>
Packit Service fb6fa5
   * which gets emitted when the user initiates a text deletion.
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * If the @type is %GTK_DELETE_CHARS, GTK+ deletes the selection
Packit Service fb6fa5
   * if there is one, otherwise it deletes the requested number
Packit Service fb6fa5
   * of characters.
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * The default bindings for this signal are
Packit Service fb6fa5
   * Delete for deleting a character and Ctrl-Delete for
Packit Service fb6fa5
   * deleting a word.
Packit Service fb6fa5
   */
Packit Service fb6fa5
  signals[DELETE_FROM_CURSOR] = 
Packit Service fb6fa5
    g_signal_new (I_("delete-from-cursor"),
Packit Service fb6fa5
		  G_OBJECT_CLASS_TYPE (gobject_class),
Packit Service fb6fa5
		  G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
Packit Service fb6fa5
		  G_STRUCT_OFFSET (GtkEntryClass, delete_from_cursor),
Packit Service fb6fa5
		  NULL, NULL,
Packit Service fb6fa5
		  _gtk_marshal_VOID__ENUM_INT,
Packit Service fb6fa5
		  G_TYPE_NONE, 2,
Packit Service fb6fa5
		  GTK_TYPE_DELETE_TYPE,
Packit Service fb6fa5
		  G_TYPE_INT);
Packit Service fb6fa5
Packit Service fb6fa5
  /**
Packit Service fb6fa5
   * GtkEntry::backspace:
Packit Service fb6fa5
   * @entry: the object which received the signal
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * The ::backspace signal is a
Packit Service fb6fa5
   * <link linkend="keybinding-signals">keybinding signal</link>
Packit Service fb6fa5
   * which gets emitted when the user asks for it.
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * The default bindings for this signal are
Packit Service fb6fa5
   * Backspace and Shift-Backspace.
Packit Service fb6fa5
   */
Packit Service fb6fa5
  signals[BACKSPACE] =
Packit Service fb6fa5
    g_signal_new (I_("backspace"),
Packit Service fb6fa5
		  G_OBJECT_CLASS_TYPE (gobject_class),
Packit Service fb6fa5
		  G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
Packit Service fb6fa5
		  G_STRUCT_OFFSET (GtkEntryClass, backspace),
Packit Service fb6fa5
		  NULL, NULL,
Packit Service fb6fa5
		  _gtk_marshal_VOID__VOID,
Packit Service fb6fa5
		  G_TYPE_NONE, 0);
Packit Service fb6fa5
Packit Service fb6fa5
  /**
Packit Service fb6fa5
   * GtkEntry::cut-clipboard:
Packit Service fb6fa5
   * @entry: the object which received the signal
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * The ::cut-clipboard signal is a
Packit Service fb6fa5
   * <link linkend="keybinding-signals">keybinding signal</link>
Packit Service fb6fa5
   * which gets emitted to cut the selection to the clipboard.
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * The default bindings for this signal are
Packit Service fb6fa5
   * Ctrl-x and Shift-Delete.
Packit Service fb6fa5
   */
Packit Service fb6fa5
  signals[CUT_CLIPBOARD] =
Packit Service fb6fa5
    g_signal_new (I_("cut-clipboard"),
Packit Service fb6fa5
		  G_OBJECT_CLASS_TYPE (gobject_class),
Packit Service fb6fa5
		  G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
Packit Service fb6fa5
		  G_STRUCT_OFFSET (GtkEntryClass, cut_clipboard),
Packit Service fb6fa5
		  NULL, NULL,
Packit Service fb6fa5
		  _gtk_marshal_VOID__VOID,
Packit Service fb6fa5
		  G_TYPE_NONE, 0);
Packit Service fb6fa5
Packit Service fb6fa5
  /**
Packit Service fb6fa5
   * GtkEntry::copy-clipboard:
Packit Service fb6fa5
   * @entry: the object which received the signal
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * The ::copy-clipboard signal is a
Packit Service fb6fa5
   * <link linkend="keybinding-signals">keybinding signal</link>
Packit Service fb6fa5
   * which gets emitted to copy the selection to the clipboard.
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * The default bindings for this signal are
Packit Service fb6fa5
   * Ctrl-c and Ctrl-Insert.
Packit Service fb6fa5
   */
Packit Service fb6fa5
  signals[COPY_CLIPBOARD] =
Packit Service fb6fa5
    g_signal_new (I_("copy-clipboard"),
Packit Service fb6fa5
		  G_OBJECT_CLASS_TYPE (gobject_class),
Packit Service fb6fa5
		  G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
Packit Service fb6fa5
		  G_STRUCT_OFFSET (GtkEntryClass, copy_clipboard),
Packit Service fb6fa5
		  NULL, NULL,
Packit Service fb6fa5
		  _gtk_marshal_VOID__VOID,
Packit Service fb6fa5
		  G_TYPE_NONE, 0);
Packit Service fb6fa5
Packit Service fb6fa5
  /**
Packit Service fb6fa5
   * GtkEntry::paste-clipboard:
Packit Service fb6fa5
   * @entry: the object which received the signal
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * The ::paste-clipboard signal is a
Packit Service fb6fa5
   * <link linkend="keybinding-signals">keybinding signal</link>
Packit Service fb6fa5
   * which gets emitted to paste the contents of the clipboard
Packit Service fb6fa5
   * into the text view.
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * The default bindings for this signal are
Packit Service fb6fa5
   * Ctrl-v and Shift-Insert.
Packit Service fb6fa5
   */
Packit Service fb6fa5
  signals[PASTE_CLIPBOARD] =
Packit Service fb6fa5
    g_signal_new (I_("paste-clipboard"),
Packit Service fb6fa5
		  G_OBJECT_CLASS_TYPE (gobject_class),
Packit Service fb6fa5
		  G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
Packit Service fb6fa5
		  G_STRUCT_OFFSET (GtkEntryClass, paste_clipboard),
Packit Service fb6fa5
		  NULL, NULL,
Packit Service fb6fa5
		  _gtk_marshal_VOID__VOID,
Packit Service fb6fa5
		  G_TYPE_NONE, 0);
Packit Service fb6fa5
Packit Service fb6fa5
  /**
Packit Service fb6fa5
   * GtkEntry::toggle-overwrite:
Packit Service fb6fa5
   * @entry: the object which received the signal
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * The ::toggle-overwrite signal is a
Packit Service fb6fa5
   * <link linkend="keybinding-signals">keybinding signal</link>
Packit Service fb6fa5
   * which gets emitted to toggle the overwrite mode of the entry.
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * The default bindings for this signal is Insert.
Packit Service fb6fa5
   */
Packit Service fb6fa5
  signals[TOGGLE_OVERWRITE] =
Packit Service fb6fa5
    g_signal_new (I_("toggle-overwrite"),
Packit Service fb6fa5
		  G_OBJECT_CLASS_TYPE (gobject_class),
Packit Service fb6fa5
		  G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
Packit Service fb6fa5
		  G_STRUCT_OFFSET (GtkEntryClass, toggle_overwrite),
Packit Service fb6fa5
		  NULL, NULL,
Packit Service fb6fa5
		  _gtk_marshal_VOID__VOID,
Packit Service fb6fa5
		  G_TYPE_NONE, 0);
Packit Service fb6fa5
Packit Service fb6fa5
  /**
Packit Service fb6fa5
   * GtkEntry::icon-press:
Packit Service fb6fa5
   * @entry: The entry on which the signal is emitted
Packit Service fb6fa5
   * @icon_pos: The position of the clicked icon
Packit Service fb6fa5
   * @event: the button press event
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * The ::icon-press signal is emitted when an activatable icon
Packit Service fb6fa5
   * is clicked.
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * Since: 2.16
Packit Service fb6fa5
   */
Packit Service fb6fa5
  signals[ICON_PRESS] =
Packit Service fb6fa5
    g_signal_new (I_("icon-press"),
Packit Service fb6fa5
                  G_TYPE_FROM_CLASS (gobject_class),
Packit Service fb6fa5
                  G_SIGNAL_RUN_LAST,
Packit Service fb6fa5
                  0,
Packit Service fb6fa5
                  NULL, NULL,
Packit Service fb6fa5
                  _gtk_marshal_VOID__ENUM_BOXED,
Packit Service fb6fa5
                  G_TYPE_NONE, 2,
Packit Service fb6fa5
                  GTK_TYPE_ENTRY_ICON_POSITION,
Packit Service fb6fa5
                  GDK_TYPE_EVENT | G_SIGNAL_TYPE_STATIC_SCOPE);
Packit Service fb6fa5
  
Packit Service fb6fa5
  /**
Packit Service fb6fa5
   * GtkEntry::icon-release:
Packit Service fb6fa5
   * @entry: The entry on which the signal is emitted
Packit Service fb6fa5
   * @icon_pos: The position of the clicked icon
Packit Service fb6fa5
   * @event: the button release event
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * The ::icon-release signal is emitted on the button release from a
Packit Service fb6fa5
   * mouse click over an activatable icon.
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * Since: 2.16
Packit Service fb6fa5
   */
Packit Service fb6fa5
  signals[ICON_RELEASE] =
Packit Service fb6fa5
    g_signal_new (I_("icon-release"),
Packit Service fb6fa5
                  G_TYPE_FROM_CLASS (gobject_class),
Packit Service fb6fa5
                  G_SIGNAL_RUN_LAST,
Packit Service fb6fa5
                  0,
Packit Service fb6fa5
                  NULL, NULL,
Packit Service fb6fa5
                  _gtk_marshal_VOID__ENUM_BOXED,
Packit Service fb6fa5
                  G_TYPE_NONE, 2,
Packit Service fb6fa5
                  GTK_TYPE_ENTRY_ICON_POSITION,
Packit Service fb6fa5
                  GDK_TYPE_EVENT | G_SIGNAL_TYPE_STATIC_SCOPE);
Packit Service fb6fa5
Packit Service fb6fa5
  /**
Packit Service fb6fa5
   * GtkEntry::preedit-changed:
Packit Service fb6fa5
   * @entry: the object which received the signal
Packit Service fb6fa5
   * @preedit: the current preedit string
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * If an input method is used, the typed text will not immediately
Packit Service fb6fa5
   * be committed to the buffer. So if you are interested in the text,
Packit Service fb6fa5
   * connect to this signal.
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * Since: 2.20
Packit Service fb6fa5
   */
Packit Service fb6fa5
  signals[PREEDIT_CHANGED] =
Packit Service fb6fa5
    g_signal_new_class_handler (I_("preedit-changed"),
Packit Service fb6fa5
                                G_OBJECT_CLASS_TYPE (gobject_class),
Packit Service fb6fa5
                                G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
Packit Service fb6fa5
                                NULL,
Packit Service fb6fa5
                                NULL, NULL,
Packit Service fb6fa5
                                _gtk_marshal_VOID__STRING,
Packit Service fb6fa5
                                G_TYPE_NONE, 1,
Packit Service fb6fa5
                                G_TYPE_STRING);
Packit Service fb6fa5
Packit Service fb6fa5
Packit Service fb6fa5
  /*
Packit Service fb6fa5
   * Key bindings
Packit Service fb6fa5
   */
Packit Service fb6fa5
Packit Service fb6fa5
  binding_set = gtk_binding_set_by_class (class);
Packit Service fb6fa5
Packit Service fb6fa5
  /* Moving the insertion point */
Packit Service fb6fa5
  add_move_binding (binding_set, GDK_Right, 0,
Packit Service fb6fa5
		    GTK_MOVEMENT_VISUAL_POSITIONS, 1);
Packit Service fb6fa5
  
Packit Service fb6fa5
  add_move_binding (binding_set, GDK_Left, 0,
Packit Service fb6fa5
		    GTK_MOVEMENT_VISUAL_POSITIONS, -1);
Packit Service fb6fa5
Packit Service fb6fa5
  add_move_binding (binding_set, GDK_KP_Right, 0,
Packit Service fb6fa5
		    GTK_MOVEMENT_VISUAL_POSITIONS, 1);
Packit Service fb6fa5
  
Packit Service fb6fa5
  add_move_binding (binding_set, GDK_KP_Left, 0,
Packit Service fb6fa5
		    GTK_MOVEMENT_VISUAL_POSITIONS, -1);
Packit Service fb6fa5
  
Packit Service fb6fa5
  add_move_binding (binding_set, GDK_Right, GDK_CONTROL_MASK,
Packit Service fb6fa5
		    GTK_MOVEMENT_WORDS, 1);
Packit Service fb6fa5
Packit Service fb6fa5
  add_move_binding (binding_set, GDK_Left, GDK_CONTROL_MASK,
Packit Service fb6fa5
		    GTK_MOVEMENT_WORDS, -1);
Packit Service fb6fa5
Packit Service fb6fa5
  add_move_binding (binding_set, GDK_KP_Right, GDK_CONTROL_MASK,
Packit Service fb6fa5
		    GTK_MOVEMENT_WORDS, 1);
Packit Service fb6fa5
Packit Service fb6fa5
  add_move_binding (binding_set, GDK_KP_Left, GDK_CONTROL_MASK,
Packit Service fb6fa5
		    GTK_MOVEMENT_WORDS, -1);
Packit Service fb6fa5
  
Packit Service fb6fa5
  add_move_binding (binding_set, GDK_Home, 0,
Packit Service fb6fa5
		    GTK_MOVEMENT_DISPLAY_LINE_ENDS, -1);
Packit Service fb6fa5
Packit Service fb6fa5
  add_move_binding (binding_set, GDK_End, 0,
Packit Service fb6fa5
		    GTK_MOVEMENT_DISPLAY_LINE_ENDS, 1);
Packit Service fb6fa5
Packit Service fb6fa5
  add_move_binding (binding_set, GDK_KP_Home, 0,
Packit Service fb6fa5
		    GTK_MOVEMENT_DISPLAY_LINE_ENDS, -1);
Packit Service fb6fa5
Packit Service fb6fa5
  add_move_binding (binding_set, GDK_KP_End, 0,
Packit Service fb6fa5
		    GTK_MOVEMENT_DISPLAY_LINE_ENDS, 1);
Packit Service fb6fa5
  
Packit Service fb6fa5
  add_move_binding (binding_set, GDK_Home, GDK_CONTROL_MASK,
Packit Service fb6fa5
		    GTK_MOVEMENT_BUFFER_ENDS, -1);
Packit Service fb6fa5
Packit Service fb6fa5
  add_move_binding (binding_set, GDK_End, GDK_CONTROL_MASK,
Packit Service fb6fa5
		    GTK_MOVEMENT_BUFFER_ENDS, 1);
Packit Service fb6fa5
Packit Service fb6fa5
  add_move_binding (binding_set, GDK_KP_Home, GDK_CONTROL_MASK,
Packit Service fb6fa5
		    GTK_MOVEMENT_BUFFER_ENDS, -1);
Packit Service fb6fa5
Packit Service fb6fa5
  add_move_binding (binding_set, GDK_KP_End, GDK_CONTROL_MASK,
Packit Service fb6fa5
		    GTK_MOVEMENT_BUFFER_ENDS, 1);
Packit Service fb6fa5
Packit Service fb6fa5
  /* Select all
Packit Service fb6fa5
   */
Packit Service fb6fa5
  gtk_binding_entry_add_signal (binding_set, GDK_a, GDK_CONTROL_MASK,
Packit Service fb6fa5
                                "move-cursor", 3,
Packit Service fb6fa5
                                GTK_TYPE_MOVEMENT_STEP, GTK_MOVEMENT_BUFFER_ENDS,
Packit Service fb6fa5
                                G_TYPE_INT, -1,
Packit Service fb6fa5
				G_TYPE_BOOLEAN, FALSE);
Packit Service fb6fa5
  gtk_binding_entry_add_signal (binding_set, GDK_a, GDK_CONTROL_MASK,
Packit Service fb6fa5
                                "move-cursor", 3,
Packit Service fb6fa5
                                GTK_TYPE_MOVEMENT_STEP, GTK_MOVEMENT_BUFFER_ENDS,
Packit Service fb6fa5
                                G_TYPE_INT, 1,
Packit Service fb6fa5
				G_TYPE_BOOLEAN, TRUE);  
Packit Service fb6fa5
Packit Service fb6fa5
  gtk_binding_entry_add_signal (binding_set, GDK_slash, GDK_CONTROL_MASK,
Packit Service fb6fa5
                                "move-cursor", 3,
Packit Service fb6fa5
                                GTK_TYPE_MOVEMENT_STEP, GTK_MOVEMENT_BUFFER_ENDS,
Packit Service fb6fa5
                                G_TYPE_INT, -1,
Packit Service fb6fa5
				G_TYPE_BOOLEAN, FALSE);
Packit Service fb6fa5
  gtk_binding_entry_add_signal (binding_set, GDK_slash, GDK_CONTROL_MASK,
Packit Service fb6fa5
                                "move-cursor", 3,
Packit Service fb6fa5
                                GTK_TYPE_MOVEMENT_STEP, GTK_MOVEMENT_BUFFER_ENDS,
Packit Service fb6fa5
                                G_TYPE_INT, 1,
Packit Service fb6fa5
				G_TYPE_BOOLEAN, TRUE);  
Packit Service fb6fa5
  /* Unselect all 
Packit Service fb6fa5
   */
Packit Service fb6fa5
  gtk_binding_entry_add_signal (binding_set, GDK_backslash, GDK_CONTROL_MASK,
Packit Service fb6fa5
                                "move-cursor", 3,
Packit Service fb6fa5
                                GTK_TYPE_MOVEMENT_STEP, GTK_MOVEMENT_VISUAL_POSITIONS,
Packit Service fb6fa5
                                G_TYPE_INT, 0,
Packit Service fb6fa5
				G_TYPE_BOOLEAN, FALSE);
Packit Service fb6fa5
  gtk_binding_entry_add_signal (binding_set, GDK_a, GDK_SHIFT_MASK | GDK_CONTROL_MASK,
Packit Service fb6fa5
                                "move-cursor", 3,
Packit Service fb6fa5
                                GTK_TYPE_MOVEMENT_STEP, GTK_MOVEMENT_VISUAL_POSITIONS,
Packit Service fb6fa5
                                G_TYPE_INT, 0,
Packit Service fb6fa5
				G_TYPE_BOOLEAN, FALSE);
Packit Service fb6fa5
Packit Service fb6fa5
  /* Activate
Packit Service fb6fa5
   */
Packit Service fb6fa5
  gtk_binding_entry_add_signal (binding_set, GDK_Return, 0,
Packit Service fb6fa5
				"activate", 0);
Packit Service fb6fa5
  gtk_binding_entry_add_signal (binding_set, GDK_ISO_Enter, 0,
Packit Service fb6fa5
				"activate", 0);
Packit Service fb6fa5
  gtk_binding_entry_add_signal (binding_set, GDK_KP_Enter, 0,
Packit Service fb6fa5
				"activate", 0);
Packit Service fb6fa5
  
Packit Service fb6fa5
  /* Deleting text */
Packit Service fb6fa5
  gtk_binding_entry_add_signal (binding_set, GDK_Delete, 0,
Packit Service fb6fa5
				"delete-from-cursor", 2,
Packit Service fb6fa5
				G_TYPE_ENUM, GTK_DELETE_CHARS,
Packit Service fb6fa5
				G_TYPE_INT, 1);
Packit Service fb6fa5
Packit Service fb6fa5
  gtk_binding_entry_add_signal (binding_set, GDK_KP_Delete, 0,
Packit Service fb6fa5
				"delete-from-cursor", 2,
Packit Service fb6fa5
				G_TYPE_ENUM, GTK_DELETE_CHARS,
Packit Service fb6fa5
				G_TYPE_INT, 1);
Packit Service fb6fa5
  
Packit Service fb6fa5
  gtk_binding_entry_add_signal (binding_set, GDK_BackSpace, 0,
Packit Service fb6fa5
				"backspace", 0);
Packit Service fb6fa5
Packit Service fb6fa5
  /* Make this do the same as Backspace, to help with mis-typing */
Packit Service fb6fa5
  gtk_binding_entry_add_signal (binding_set, GDK_BackSpace, GDK_SHIFT_MASK,
Packit Service fb6fa5
				"backspace", 0);
Packit Service fb6fa5
Packit Service fb6fa5
  gtk_binding_entry_add_signal (binding_set, GDK_Delete, GDK_CONTROL_MASK,
Packit Service fb6fa5
				"delete-from-cursor", 2,
Packit Service fb6fa5
				G_TYPE_ENUM, GTK_DELETE_WORD_ENDS,
Packit Service fb6fa5
				G_TYPE_INT, 1);
Packit Service fb6fa5
Packit Service fb6fa5
  gtk_binding_entry_add_signal (binding_set, GDK_KP_Delete, GDK_CONTROL_MASK,
Packit Service fb6fa5
				"delete-from-cursor", 2,
Packit Service fb6fa5
				G_TYPE_ENUM, GTK_DELETE_WORD_ENDS,
Packit Service fb6fa5
				G_TYPE_INT, 1);
Packit Service fb6fa5
  
Packit Service fb6fa5
  gtk_binding_entry_add_signal (binding_set, GDK_BackSpace, GDK_CONTROL_MASK,
Packit Service fb6fa5
				"delete-from-cursor", 2,
Packit Service fb6fa5
				G_TYPE_ENUM, GTK_DELETE_WORD_ENDS,
Packit Service fb6fa5
				G_TYPE_INT, -1);
Packit Service fb6fa5
Packit Service fb6fa5
  /* Cut/copy/paste */
Packit Service fb6fa5
Packit Service fb6fa5
  gtk_binding_entry_add_signal (binding_set, GDK_x, GDK_CONTROL_MASK,
Packit Service fb6fa5
				"cut-clipboard", 0);
Packit Service fb6fa5
  gtk_binding_entry_add_signal (binding_set, GDK_c, GDK_CONTROL_MASK,
Packit Service fb6fa5
				"copy-clipboard", 0);
Packit Service fb6fa5
  gtk_binding_entry_add_signal (binding_set, GDK_v, GDK_CONTROL_MASK,
Packit Service fb6fa5
				"paste-clipboard", 0);
Packit Service fb6fa5
Packit Service fb6fa5
  gtk_binding_entry_add_signal (binding_set, GDK_Delete, GDK_SHIFT_MASK,
Packit Service fb6fa5
				"cut-clipboard", 0);
Packit Service fb6fa5
  gtk_binding_entry_add_signal (binding_set, GDK_Insert, GDK_CONTROL_MASK,
Packit Service fb6fa5
				"copy-clipboard", 0);
Packit Service fb6fa5
  gtk_binding_entry_add_signal (binding_set, GDK_Insert, GDK_SHIFT_MASK,
Packit Service fb6fa5
				"paste-clipboard", 0);
Packit Service fb6fa5
Packit Service fb6fa5
  /* Overwrite */
Packit Service fb6fa5
  gtk_binding_entry_add_signal (binding_set, GDK_Insert, 0,
Packit Service fb6fa5
				"toggle-overwrite", 0);
Packit Service fb6fa5
  gtk_binding_entry_add_signal (binding_set, GDK_KP_Insert, 0,
Packit Service fb6fa5
				"toggle-overwrite", 0);
Packit Service fb6fa5
Packit Service fb6fa5
  /**
Packit Service fb6fa5
   * GtkEntry:inner-border:
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * Sets the text area's border between the text and the frame.
Packit Service fb6fa5
   *
Packit Service fb6fa5
   * Since: 2.10
Packit Service fb6fa5
   */
Packit Service fb6fa5
  gtk_widget_class_install_style_property (widget_class,
Packit Service fb6fa5
					   g_param_spec_boxed ("inner-border",
Packit Service fb6fa5
                                                               P_("Inner Border"),
Packit Service fb6fa5
                                                               P_("Border between text and frame."),
Packit Service fb6fa5
                                                               GTK_TYPE_BORDER,
Packit Service fb6fa5
                                                               GTK_PARAM_READABLE));
Packit Service fb6fa5
Packit Service fb6fa5
   /**
Packit Service fb6fa5
    * GtkEntry:state-hint:
Packit Service fb6fa5
    *
Packit Service fb6fa5
    * Indicates whether to pass a proper widget state when
Packit Service fb6fa5
    * drawing the shadow and the widget background.
Packit Service fb6fa5
    *
Packit Service fb6fa5
    * Since: 2.16
Packit Service fb6fa5
    *
Packit Service fb6fa5
    * Deprecated: 2.22: This style property will be removed in GTK+ 3
Packit Service fb6fa5
    */
Packit Service fb6fa5
   gtk_widget_class_install_style_property (widget_class,
Packit Service fb6fa5
                                            g_param_spec_boolean ("state-hint",
Packit Service fb6fa5
                                                                  P_("State Hint"),
Packit Service fb6fa5
                                                                  P_("Whether to pass a proper state when drawing shadow or background"),
Packit Service fb6fa5
                                                                  FALSE,
Packit Service fb6fa5
                                                                  GTK_PARAM_READABLE));
Packit Service fb6fa5
Packit Service fb6fa5
  g_type_class_add_private (gobject_class, sizeof (GtkEntryPrivate));
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
static void
Packit Service fb6fa5
gtk_entry_editable_init (GtkEditableClass *iface)
Packit Service fb6fa5
{
Packit Service fb6fa5
  iface->do_insert_text = gtk_entry_insert_text;
Packit Service fb6fa5
  iface->do_delete_text = gtk_entry_delete_text;
Packit Service fb6fa5
  iface->insert_text = gtk_entry_real_insert_text;
Packit Service fb6fa5
  iface->delete_text = gtk_entry_real_delete_text;
Packit Service fb6fa5
  iface->get_chars = gtk_entry_get_chars;
Packit Service fb6fa5
  iface->set_selection_bounds = gtk_entry_set_selection_bounds;
Packit Service fb6fa5
  iface->get_selection_bounds = gtk_entry_get_selection_bounds;
Packit Service fb6fa5
  iface->set_position = gtk_entry_real_set_position;
Packit Service fb6fa5
  iface->get_position = gtk_entry_get_position;
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
static void
Packit Service fb6fa5
gtk_entry_cell_editable_init (GtkCellEditableIface *iface)
Packit Service fb6fa5
{
Packit Service fb6fa5
  iface->start_editing = gtk_entry_start_editing;
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
static void
Packit Service fb6fa5
gtk_entry_set_property (GObject         *object,
Packit Service fb6fa5
                        guint            prop_id,
Packit Service fb6fa5
                        const GValue    *value,
Packit Service fb6fa5
                        GParamSpec      *pspec)
Packit Service fb6fa5
{
Packit Service fb6fa5
  GtkEntryPrivate *priv = GTK_ENTRY_GET_PRIVATE (object);
Packit Service fb6fa5
  GtkEntry *entry = GTK_ENTRY (object);
Packit Service fb6fa5
  GtkWidget *widget;
Packit Service fb6fa5
Packit Service fb6fa5
  switch (prop_id)
Packit Service fb6fa5
    {
Packit Service fb6fa5
    case PROP_BUFFER:
Packit Service fb6fa5
      gtk_entry_set_buffer (entry, g_value_get_object (value));
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_EDITABLE:
Packit Service fb6fa5
      {
Packit Service fb6fa5
        gboolean new_value = g_value_get_boolean (value);
Packit Service fb6fa5
Packit Service fb6fa5
      	if (new_value != entry->editable)
Packit Service fb6fa5
	  {
Packit Service fb6fa5
            widget = GTK_WIDGET (entry);
Packit Service fb6fa5
	    if (!new_value)
Packit Service fb6fa5
	      {
Packit Service fb6fa5
		_gtk_entry_reset_im_context (entry);
Packit Service fb6fa5
		if (gtk_widget_has_focus (widget))
Packit Service fb6fa5
		  gtk_im_context_focus_out (entry->im_context);
Packit Service fb6fa5
Packit Service fb6fa5
		entry->preedit_length = 0;
Packit Service fb6fa5
		entry->preedit_cursor = 0;
Packit Service fb6fa5
	      }
Packit Service fb6fa5
Packit Service fb6fa5
	    entry->editable = new_value;
Packit Service fb6fa5
Packit Service fb6fa5
	    if (new_value && gtk_widget_has_focus (widget))
Packit Service fb6fa5
	      gtk_im_context_focus_in (entry->im_context);
Packit Service fb6fa5
	    
Packit Service fb6fa5
	    gtk_entry_queue_draw (entry);
Packit Service fb6fa5
	  }
Packit Service fb6fa5
      }
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_MAX_LENGTH:
Packit Service fb6fa5
      gtk_entry_set_max_length (entry, g_value_get_int (value));
Packit Service fb6fa5
      break;
Packit Service fb6fa5
      
Packit Service fb6fa5
    case PROP_VISIBILITY:
Packit Service fb6fa5
      gtk_entry_set_visibility (entry, g_value_get_boolean (value));
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_HAS_FRAME:
Packit Service fb6fa5
      gtk_entry_set_has_frame (entry, g_value_get_boolean (value));
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_INNER_BORDER:
Packit Service fb6fa5
      gtk_entry_set_inner_border (entry, g_value_get_boxed (value));
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_INVISIBLE_CHAR:
Packit Service fb6fa5
      gtk_entry_set_invisible_char (entry, g_value_get_uint (value));
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_ACTIVATES_DEFAULT:
Packit Service fb6fa5
      gtk_entry_set_activates_default (entry, g_value_get_boolean (value));
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_WIDTH_CHARS:
Packit Service fb6fa5
      gtk_entry_set_width_chars (entry, g_value_get_int (value));
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_TEXT:
Packit Service fb6fa5
      gtk_entry_set_text (entry, g_value_get_string (value));
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_XALIGN:
Packit Service fb6fa5
      gtk_entry_set_alignment (entry, g_value_get_float (value));
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_TRUNCATE_MULTILINE:
Packit Service fb6fa5
      entry->truncate_multiline = g_value_get_boolean (value);
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_SHADOW_TYPE:
Packit Service fb6fa5
      priv->shadow_type = g_value_get_enum (value);
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_OVERWRITE_MODE:
Packit Service fb6fa5
      gtk_entry_set_overwrite_mode (entry, g_value_get_boolean (value));
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_INVISIBLE_CHAR_SET:
Packit Service fb6fa5
      if (g_value_get_boolean (value))
Packit Service fb6fa5
        priv->invisible_char_set = TRUE;
Packit Service fb6fa5
      else
Packit Service fb6fa5
        gtk_entry_unset_invisible_char (entry);
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_CAPS_LOCK_WARNING:
Packit Service fb6fa5
      priv->caps_lock_warning = g_value_get_boolean (value);
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_PROGRESS_FRACTION:
Packit Service fb6fa5
      gtk_entry_set_progress_fraction (entry, g_value_get_double (value));
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_PROGRESS_PULSE_STEP:
Packit Service fb6fa5
      gtk_entry_set_progress_pulse_step (entry, g_value_get_double (value));
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_PIXBUF_PRIMARY:
Packit Service fb6fa5
      gtk_entry_set_icon_from_pixbuf (entry,
Packit Service fb6fa5
                                      GTK_ENTRY_ICON_PRIMARY,
Packit Service fb6fa5
                                      g_value_get_object (value));
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_PIXBUF_SECONDARY:
Packit Service fb6fa5
      gtk_entry_set_icon_from_pixbuf (entry,
Packit Service fb6fa5
                                      GTK_ENTRY_ICON_SECONDARY,
Packit Service fb6fa5
                                      g_value_get_object (value));
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_STOCK_PRIMARY:
Packit Service fb6fa5
      gtk_entry_set_icon_from_stock (entry,
Packit Service fb6fa5
                                     GTK_ENTRY_ICON_PRIMARY,
Packit Service fb6fa5
                                     g_value_get_string (value));
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_STOCK_SECONDARY:
Packit Service fb6fa5
      gtk_entry_set_icon_from_stock (entry,
Packit Service fb6fa5
                                     GTK_ENTRY_ICON_SECONDARY,
Packit Service fb6fa5
                                     g_value_get_string (value));
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_ICON_NAME_PRIMARY:
Packit Service fb6fa5
      gtk_entry_set_icon_from_icon_name (entry,
Packit Service fb6fa5
                                         GTK_ENTRY_ICON_PRIMARY,
Packit Service fb6fa5
                                         g_value_get_string (value));
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_ICON_NAME_SECONDARY:
Packit Service fb6fa5
      gtk_entry_set_icon_from_icon_name (entry,
Packit Service fb6fa5
                                         GTK_ENTRY_ICON_SECONDARY,
Packit Service fb6fa5
                                         g_value_get_string (value));
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_GICON_PRIMARY:
Packit Service fb6fa5
      gtk_entry_set_icon_from_gicon (entry,
Packit Service fb6fa5
                                     GTK_ENTRY_ICON_PRIMARY,
Packit Service fb6fa5
                                     g_value_get_object (value));
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_GICON_SECONDARY:
Packit Service fb6fa5
      gtk_entry_set_icon_from_gicon (entry,
Packit Service fb6fa5
                                     GTK_ENTRY_ICON_SECONDARY,
Packit Service fb6fa5
                                     g_value_get_object (value));
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_ACTIVATABLE_PRIMARY:
Packit Service fb6fa5
      gtk_entry_set_icon_activatable (entry,
Packit Service fb6fa5
                                      GTK_ENTRY_ICON_PRIMARY,
Packit Service fb6fa5
                                      g_value_get_boolean (value));
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_ACTIVATABLE_SECONDARY:
Packit Service fb6fa5
      gtk_entry_set_icon_activatable (entry,
Packit Service fb6fa5
                                      GTK_ENTRY_ICON_SECONDARY,
Packit Service fb6fa5
                                      g_value_get_boolean (value));
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_SENSITIVE_PRIMARY:
Packit Service fb6fa5
      gtk_entry_set_icon_sensitive (entry,
Packit Service fb6fa5
                                    GTK_ENTRY_ICON_PRIMARY,
Packit Service fb6fa5
                                    g_value_get_boolean (value));
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_SENSITIVE_SECONDARY:
Packit Service fb6fa5
      gtk_entry_set_icon_sensitive (entry,
Packit Service fb6fa5
                                    GTK_ENTRY_ICON_SECONDARY,
Packit Service fb6fa5
                                    g_value_get_boolean (value));
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_TOOLTIP_TEXT_PRIMARY:
Packit Service fb6fa5
      gtk_entry_set_icon_tooltip_text (entry,
Packit Service fb6fa5
                                       GTK_ENTRY_ICON_PRIMARY,
Packit Service fb6fa5
                                       g_value_get_string (value));
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_TOOLTIP_TEXT_SECONDARY:
Packit Service fb6fa5
      gtk_entry_set_icon_tooltip_text (entry,
Packit Service fb6fa5
                                       GTK_ENTRY_ICON_SECONDARY,
Packit Service fb6fa5
                                       g_value_get_string (value));
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_TOOLTIP_MARKUP_PRIMARY:
Packit Service fb6fa5
      gtk_entry_set_icon_tooltip_markup (entry,
Packit Service fb6fa5
                                         GTK_ENTRY_ICON_PRIMARY,
Packit Service fb6fa5
                                         g_value_get_string (value));
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_TOOLTIP_MARKUP_SECONDARY:
Packit Service fb6fa5
      gtk_entry_set_icon_tooltip_markup (entry,
Packit Service fb6fa5
                                         GTK_ENTRY_ICON_SECONDARY,
Packit Service fb6fa5
                                         g_value_get_string (value));
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_IM_MODULE:
Packit Service fb6fa5
      g_free (priv->im_module);
Packit Service fb6fa5
      priv->im_module = g_value_dup_string (value);
Packit Service fb6fa5
      if (GTK_IS_IM_MULTICONTEXT (entry->im_context))
Packit Service fb6fa5
        gtk_im_multicontext_set_context_id (GTK_IM_MULTICONTEXT (entry->im_context), priv->im_module);
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_EDITING_CANCELED:
Packit Service fb6fa5
      entry->editing_canceled = g_value_get_boolean (value);
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_SCROLL_OFFSET:
Packit Service fb6fa5
    case PROP_CURSOR_POSITION:
Packit Service fb6fa5
    default:
Packit Service fb6fa5
      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
Packit Service fb6fa5
      break;
Packit Service fb6fa5
    }
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
static void
Packit Service fb6fa5
gtk_entry_get_property (GObject         *object,
Packit Service fb6fa5
                        guint            prop_id,
Packit Service fb6fa5
                        GValue          *value,
Packit Service fb6fa5
                        GParamSpec      *pspec)
Packit Service fb6fa5
{
Packit Service fb6fa5
  GtkEntryPrivate *priv = GTK_ENTRY_GET_PRIVATE (object);
Packit Service fb6fa5
  GtkEntry *entry = GTK_ENTRY (object);
Packit Service fb6fa5
Packit Service fb6fa5
  switch (prop_id)
Packit Service fb6fa5
    {
Packit Service fb6fa5
    case PROP_BUFFER:
Packit Service fb6fa5
      g_value_set_object (value, gtk_entry_get_buffer (entry));
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_CURSOR_POSITION:
Packit Service fb6fa5
      g_value_set_int (value, entry->current_pos);
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_SELECTION_BOUND:
Packit Service fb6fa5
      g_value_set_int (value, entry->selection_bound);
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_EDITABLE:
Packit Service fb6fa5
      g_value_set_boolean (value, entry->editable);
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_MAX_LENGTH:
Packit Service fb6fa5
      g_value_set_int (value, gtk_entry_buffer_get_max_length (get_buffer (entry)));
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_VISIBILITY:
Packit Service fb6fa5
      g_value_set_boolean (value, entry->visible);
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_HAS_FRAME:
Packit Service fb6fa5
      g_value_set_boolean (value, entry->has_frame);
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_INNER_BORDER:
Packit Service fb6fa5
      g_value_set_boxed (value, gtk_entry_get_inner_border (entry));
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_INVISIBLE_CHAR:
Packit Service fb6fa5
      g_value_set_uint (value, entry->invisible_char);
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_ACTIVATES_DEFAULT:
Packit Service fb6fa5
      g_value_set_boolean (value, entry->activates_default);
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_WIDTH_CHARS:
Packit Service fb6fa5
      g_value_set_int (value, entry->width_chars);
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_SCROLL_OFFSET:
Packit Service fb6fa5
      g_value_set_int (value, entry->scroll_offset);
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_TEXT:
Packit Service fb6fa5
      g_value_set_string (value, gtk_entry_get_text (entry));
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_XALIGN:
Packit Service fb6fa5
      g_value_set_float (value, gtk_entry_get_alignment (entry));
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_TRUNCATE_MULTILINE:
Packit Service fb6fa5
      g_value_set_boolean (value, entry->truncate_multiline);
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_SHADOW_TYPE:
Packit Service fb6fa5
      g_value_set_enum (value, priv->shadow_type);
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_OVERWRITE_MODE:
Packit Service fb6fa5
      g_value_set_boolean (value, entry->overwrite_mode);
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_TEXT_LENGTH:
Packit Service fb6fa5
      g_value_set_uint (value, gtk_entry_buffer_get_length (get_buffer (entry)));
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_INVISIBLE_CHAR_SET:
Packit Service fb6fa5
      g_value_set_boolean (value, priv->invisible_char_set);
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_IM_MODULE:
Packit Service fb6fa5
      g_value_set_string (value, priv->im_module);
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_CAPS_LOCK_WARNING:
Packit Service fb6fa5
      g_value_set_boolean (value, priv->caps_lock_warning);
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_PROGRESS_FRACTION:
Packit Service fb6fa5
      g_value_set_double (value, priv->progress_fraction);
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_PROGRESS_PULSE_STEP:
Packit Service fb6fa5
      g_value_set_double (value, priv->progress_pulse_fraction);
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_PIXBUF_PRIMARY:
Packit Service fb6fa5
      g_value_set_object (value,
Packit Service fb6fa5
                          gtk_entry_get_icon_pixbuf (entry,
Packit Service fb6fa5
                                                     GTK_ENTRY_ICON_PRIMARY));
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_PIXBUF_SECONDARY:
Packit Service fb6fa5
      g_value_set_object (value,
Packit Service fb6fa5
                          gtk_entry_get_icon_pixbuf (entry,
Packit Service fb6fa5
                                                     GTK_ENTRY_ICON_SECONDARY));
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_STOCK_PRIMARY:
Packit Service fb6fa5
      g_value_set_string (value,
Packit Service fb6fa5
                          gtk_entry_get_icon_stock (entry,
Packit Service fb6fa5
                                                    GTK_ENTRY_ICON_PRIMARY));
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_STOCK_SECONDARY:
Packit Service fb6fa5
      g_value_set_string (value,
Packit Service fb6fa5
                          gtk_entry_get_icon_stock (entry,
Packit Service fb6fa5
                                                    GTK_ENTRY_ICON_SECONDARY));
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_ICON_NAME_PRIMARY:
Packit Service fb6fa5
      g_value_set_string (value,
Packit Service fb6fa5
                          gtk_entry_get_icon_name (entry,
Packit Service fb6fa5
                                                   GTK_ENTRY_ICON_PRIMARY));
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_ICON_NAME_SECONDARY:
Packit Service fb6fa5
      g_value_set_string (value,
Packit Service fb6fa5
                          gtk_entry_get_icon_name (entry,
Packit Service fb6fa5
                                                   GTK_ENTRY_ICON_SECONDARY));
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_GICON_PRIMARY:
Packit Service fb6fa5
      g_value_set_object (value,
Packit Service fb6fa5
                          gtk_entry_get_icon_gicon (entry,
Packit Service fb6fa5
                                                    GTK_ENTRY_ICON_PRIMARY));
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_GICON_SECONDARY:
Packit Service fb6fa5
      g_value_set_object (value,
Packit Service fb6fa5
                          gtk_entry_get_icon_gicon (entry,
Packit Service fb6fa5
                                                    GTK_ENTRY_ICON_SECONDARY));
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_STORAGE_TYPE_PRIMARY:
Packit Service fb6fa5
      g_value_set_enum (value,
Packit Service fb6fa5
                        gtk_entry_get_icon_storage_type (entry, 
Packit Service fb6fa5
                                                         GTK_ENTRY_ICON_PRIMARY));
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_STORAGE_TYPE_SECONDARY:
Packit Service fb6fa5
      g_value_set_enum (value,
Packit Service fb6fa5
                        gtk_entry_get_icon_storage_type (entry, 
Packit Service fb6fa5
                                                         GTK_ENTRY_ICON_SECONDARY));
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_ACTIVATABLE_PRIMARY:
Packit Service fb6fa5
      g_value_set_boolean (value,
Packit Service fb6fa5
                           gtk_entry_get_icon_activatable (entry, GTK_ENTRY_ICON_PRIMARY));
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_ACTIVATABLE_SECONDARY:
Packit Service fb6fa5
      g_value_set_boolean (value,
Packit Service fb6fa5
                           gtk_entry_get_icon_activatable (entry, GTK_ENTRY_ICON_SECONDARY));
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_SENSITIVE_PRIMARY:
Packit Service fb6fa5
      g_value_set_boolean (value,
Packit Service fb6fa5
                           gtk_entry_get_icon_sensitive (entry, GTK_ENTRY_ICON_PRIMARY));
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_SENSITIVE_SECONDARY:
Packit Service fb6fa5
      g_value_set_boolean (value,
Packit Service fb6fa5
                           gtk_entry_get_icon_sensitive (entry, GTK_ENTRY_ICON_SECONDARY));
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_TOOLTIP_TEXT_PRIMARY:
Packit Service fb6fa5
      g_value_take_string (value,
Packit Service fb6fa5
                           gtk_entry_get_icon_tooltip_text (entry, GTK_ENTRY_ICON_PRIMARY));
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_TOOLTIP_TEXT_SECONDARY:
Packit Service fb6fa5
      g_value_take_string (value,
Packit Service fb6fa5
                           gtk_entry_get_icon_tooltip_text (entry, GTK_ENTRY_ICON_SECONDARY));
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_TOOLTIP_MARKUP_PRIMARY:
Packit Service fb6fa5
      g_value_take_string (value,
Packit Service fb6fa5
                           gtk_entry_get_icon_tooltip_markup (entry, GTK_ENTRY_ICON_PRIMARY));
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_TOOLTIP_MARKUP_SECONDARY:
Packit Service fb6fa5
      g_value_take_string (value,
Packit Service fb6fa5
                           gtk_entry_get_icon_tooltip_markup (entry, GTK_ENTRY_ICON_SECONDARY));
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    case PROP_EDITING_CANCELED:
Packit Service fb6fa5
      g_value_set_boolean (value,
Packit Service fb6fa5
                           entry->editing_canceled);
Packit Service fb6fa5
      break;
Packit Service fb6fa5
Packit Service fb6fa5
    default:
Packit Service fb6fa5
      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
Packit Service fb6fa5
      break;
Packit Service fb6fa5
    }
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
static gunichar
Packit Service fb6fa5
find_invisible_char (GtkWidget *widget)
Packit Service fb6fa5
{
Packit Service fb6fa5
  PangoLayout *layout;
Packit Service fb6fa5
  PangoAttrList *attr_list;
Packit Service fb6fa5
  gint i;
Packit Service fb6fa5
  gunichar invisible_chars [] = {
Packit Service fb6fa5
    0,
Packit Service fb6fa5
    0x25cf, /* BLACK CIRCLE */
Packit Service fb6fa5
    0x2022, /* BULLET */
Packit Service fb6fa5
    0x2731, /* HEAVY ASTERISK */
Packit Service fb6fa5
    0x273a  /* SIXTEEN POINTED ASTERISK */
Packit Service fb6fa5
  };
Packit Service fb6fa5
Packit Service fb6fa5
  if (widget->style)
Packit Service fb6fa5
    gtk_widget_style_get (widget,
Packit Service fb6fa5
                          "invisible-char", &invisible_chars[0],
Packit Service fb6fa5
                          NULL);
Packit Service fb6fa5
Packit Service fb6fa5
  layout = gtk_widget_create_pango_layout (widget, NULL);
Packit Service fb6fa5
Packit Service fb6fa5
  attr_list = pango_attr_list_new ();
Packit Service fb6fa5
  pango_attr_list_insert (attr_list, pango_attr_fallback_new (FALSE));
Packit Service fb6fa5
Packit Service fb6fa5
  pango_layout_set_attributes (layout, attr_list);
Packit Service fb6fa5
  pango_attr_list_unref (attr_list);
Packit Service fb6fa5
Packit Service fb6fa5
  for (i = (invisible_chars[0] != 0 ? 0 : 1); i < G_N_ELEMENTS (invisible_chars); i++)
Packit Service fb6fa5
    {
Packit Service fb6fa5
      gchar text[7] = { 0, };
Packit Service fb6fa5
      gint len, count;
Packit Service fb6fa5
Packit Service fb6fa5
      len = g_unichar_to_utf8 (invisible_chars[i], text);
Packit Service fb6fa5
      pango_layout_set_text (layout, text, len);
Packit Service fb6fa5
Packit Service fb6fa5
      count = pango_layout_get_unknown_glyphs_count (layout);
Packit Service fb6fa5
Packit Service fb6fa5
      if (count == 0)
Packit Service fb6fa5
        {
Packit Service fb6fa5
          g_object_unref (layout);
Packit Service fb6fa5
          return invisible_chars[i];
Packit Service fb6fa5
        }
Packit Service fb6fa5
    }
Packit Service fb6fa5
Packit Service fb6fa5
  g_object_unref (layout);
Packit Service fb6fa5
Packit Service fb6fa5
  return '*';
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
static void
Packit Service fb6fa5
gtk_entry_init (GtkEntry *entry)
Packit Service fb6fa5
{
Packit Service fb6fa5
  GtkEntryPrivate *priv = GTK_ENTRY_GET_PRIVATE (entry);
Packit Service fb6fa5
Packit Service fb6fa5
  gtk_widget_set_can_focus (GTK_WIDGET (entry), TRUE);
Packit Service fb6fa5
Packit Service fb6fa5
  entry->editable = TRUE;
Packit Service fb6fa5
  entry->visible = TRUE;
Packit Service fb6fa5
  entry->invisible_char = find_invisible_char (GTK_WIDGET (entry));
Packit Service fb6fa5
  entry->dnd_position = -1;
Packit Service fb6fa5
  entry->width_chars = -1;
Packit Service fb6fa5
  entry->is_cell_renderer = FALSE;
Packit Service fb6fa5
  entry->editing_canceled = FALSE;
Packit Service fb6fa5
  entry->has_frame = TRUE;
Packit Service fb6fa5
  entry->truncate_multiline = FALSE;
Packit Service fb6fa5
  priv->shadow_type = GTK_SHADOW_IN;
Packit Service fb6fa5
  priv->xalign = 0.0;
Packit Service fb6fa5
  priv->caps_lock_warning = TRUE;
Packit Service fb6fa5
  priv->caps_lock_warning_shown = FALSE;
Packit Service fb6fa5
  priv->progress_fraction = 0.0;
Packit Service fb6fa5
  priv->progress_pulse_fraction = 0.1;
Packit Service fb6fa5
Packit Service fb6fa5
  gtk_drag_dest_set (GTK_WIDGET (entry),
Packit Service fb6fa5
                     GTK_DEST_DEFAULT_HIGHLIGHT,
Packit Service fb6fa5
                     NULL, 0,
Packit Service fb6fa5
                     GDK_ACTION_COPY | GDK_ACTION_MOVE);
Packit Service fb6fa5
  gtk_drag_dest_add_text_targets (GTK_WIDGET (entry));
Packit Service fb6fa5
Packit Service fb6fa5
  /* This object is completely private. No external entity can gain a reference
Packit Service fb6fa5
   * to it; so we create it here and destroy it in finalize().
Packit Service fb6fa5
   */
Packit Service fb6fa5
  entry->im_context = gtk_im_multicontext_new ();
Packit Service fb6fa5
  
Packit Service fb6fa5
  g_signal_connect (entry->im_context, "commit",
Packit Service fb6fa5
		    G_CALLBACK (gtk_entry_commit_cb), entry);
Packit Service fb6fa5
  g_signal_connect (entry->im_context, "preedit-changed",
Packit Service fb6fa5
		    G_CALLBACK (gtk_entry_preedit_changed_cb), entry);
Packit Service fb6fa5
  g_signal_connect (entry->im_context, "retrieve-surrounding",
Packit Service fb6fa5
		    G_CALLBACK (gtk_entry_retrieve_surrounding_cb), entry);
Packit Service fb6fa5
  g_signal_connect (entry->im_context, "delete-surrounding",
Packit Service fb6fa5
		    G_CALLBACK (gtk_entry_delete_surrounding_cb), entry);
Packit Service fb6fa5
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
static gint
Packit Service fb6fa5
get_icon_width (GtkEntry             *entry,
Packit Service fb6fa5
                GtkEntryIconPosition  icon_pos)
Packit Service fb6fa5
{
Packit Service fb6fa5
  GtkEntryPrivate *priv = GTK_ENTRY_GET_PRIVATE (entry);
Packit Service fb6fa5
  EntryIconInfo *icon_info = priv->icons[icon_pos];
Packit Service fb6fa5
  GdkScreen *screen;
Packit Service fb6fa5
  GtkSettings *settings;
Packit Service fb6fa5
  gint menu_icon_width;
Packit Service fb6fa5
Packit Service fb6fa5
  if (!icon_info || icon_info->pixbuf == NULL)
Packit Service fb6fa5
    return 0;
Packit Service fb6fa5
Packit Service fb6fa5
  screen = gtk_widget_get_screen (GTK_WIDGET (entry));
Packit Service fb6fa5
  settings = gtk_settings_get_for_screen (screen);
Packit Service fb6fa5
Packit Service fb6fa5
  gtk_icon_size_lookup_for_settings (settings, GTK_ICON_SIZE_MENU,
Packit Service fb6fa5
                                     &menu_icon_width, NULL);
Packit Service fb6fa5
Packit Service fb6fa5
  return MAX (gdk_pixbuf_get_width (icon_info->pixbuf), menu_icon_width);
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
static void
Packit Service fb6fa5
get_icon_allocations (GtkEntry      *entry,
Packit Service fb6fa5
                      GtkAllocation *primary,
Packit Service fb6fa5
                      GtkAllocation *secondary)
Packit Service fb6fa5
Packit Service fb6fa5
{
Packit Service fb6fa5
  GtkEntryPrivate *priv = GTK_ENTRY_GET_PRIVATE (entry);
Packit Service fb6fa5
  gint x, y, width, height;
Packit Service fb6fa5
Packit Service fb6fa5
  get_text_area_size (entry, &x, &y, &width, &height);
Packit Service fb6fa5
Packit Service fb6fa5
  if (gtk_widget_has_focus (GTK_WIDGET (entry)) && !priv->interior_focus)
Packit Service fb6fa5
    y += priv->focus_width;
Packit Service fb6fa5
Packit Service fb6fa5
  primary->y = y;
Packit Service fb6fa5
  primary->height = height;
Packit Service fb6fa5
  primary->width = get_icon_width (entry, GTK_ENTRY_ICON_PRIMARY);
Packit Service fb6fa5
  if (primary->width > 0)
Packit Service fb6fa5
    primary->width += 2 * priv->icon_margin;
Packit Service fb6fa5
Packit Service fb6fa5
  secondary->y = y;
Packit Service fb6fa5
  secondary->height = height;
Packit Service fb6fa5
  secondary->width = get_icon_width (entry, GTK_ENTRY_ICON_SECONDARY);
Packit Service fb6fa5
  if (secondary->width > 0)
Packit Service fb6fa5
    secondary->width += 2 * priv->icon_margin;
Packit Service fb6fa5
Packit Service fb6fa5
  if (gtk_widget_get_direction (GTK_WIDGET (entry)) == GTK_TEXT_DIR_RTL)
Packit Service fb6fa5
    {
Packit Service fb6fa5
      primary->x = x + width - primary->width;
Packit Service fb6fa5
      secondary->x = x;
Packit Service fb6fa5
    }
Packit Service fb6fa5
  else
Packit Service fb6fa5
    {
Packit Service fb6fa5
      primary->x = x;
Packit Service fb6fa5
      secondary->x = x + width - secondary->width;
Packit Service fb6fa5
    }
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
Packit Service fb6fa5
static void
Packit Service fb6fa5
begin_change (GtkEntry *entry)
Packit Service fb6fa5
{
Packit Service fb6fa5
  GtkEntryPrivate *priv = GTK_ENTRY_GET_PRIVATE (entry);
Packit Service fb6fa5
Packit Service fb6fa5
  priv->change_count++;
Packit Service fb6fa5
Packit Service fb6fa5
  g_object_freeze_notify (G_OBJECT (entry));
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
static void
Packit Service fb6fa5
end_change (GtkEntry *entry)
Packit Service fb6fa5
{
Packit Service fb6fa5
  GtkEditable *editable = GTK_EDITABLE (entry);
Packit Service fb6fa5
  GtkEntryPrivate *priv = GTK_ENTRY_GET_PRIVATE (entry);
Packit Service fb6fa5
 
Packit Service fb6fa5
  g_return_if_fail (priv->change_count > 0);
Packit Service fb6fa5
Packit Service fb6fa5
  g_object_thaw_notify (G_OBJECT (entry));
Packit Service fb6fa5
Packit Service fb6fa5
  priv->change_count--;
Packit Service fb6fa5
Packit Service fb6fa5
  if (priv->change_count == 0)
Packit Service fb6fa5
    {
Packit Service fb6fa5
       if (priv->real_changed) 
Packit Service fb6fa5
         {
Packit Service fb6fa5
           g_signal_emit_by_name (editable, "changed");
Packit Service fb6fa5
           priv->real_changed = FALSE;
Packit Service fb6fa5
         }
Packit Service fb6fa5
    } 
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
static void
Packit Service fb6fa5
emit_changed (GtkEntry *entry)
Packit Service fb6fa5
{
Packit Service fb6fa5
  GtkEditable *editable = GTK_EDITABLE (entry);
Packit Service fb6fa5
  GtkEntryPrivate *priv = GTK_ENTRY_GET_PRIVATE (entry);
Packit Service fb6fa5
Packit Service fb6fa5
  if (priv->change_count == 0)
Packit Service fb6fa5
    g_signal_emit_by_name (editable, "changed");
Packit Service fb6fa5
  else 
Packit Service fb6fa5
    priv->real_changed = TRUE;
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
static void
Packit Service fb6fa5
gtk_entry_destroy (GtkObject *object)
Packit Service fb6fa5
{
Packit Service fb6fa5
  GtkEntry *entry = GTK_ENTRY (object);
Packit Service fb6fa5
Packit Service fb6fa5
  entry->current_pos = entry->selection_bound = 0;
Packit Service fb6fa5
  _gtk_entry_reset_im_context (entry);
Packit Service fb6fa5
  gtk_entry_reset_layout (entry);
Packit Service fb6fa5
Packit Service fb6fa5
  if (entry->blink_timeout)
Packit Service fb6fa5
    {
Packit Service fb6fa5
      g_source_remove (entry->blink_timeout);
Packit Service fb6fa5
      entry->blink_timeout = 0;
Packit Service fb6fa5
    }
Packit Service fb6fa5
Packit Service fb6fa5
  if (entry->recompute_idle)
Packit Service fb6fa5
    {
Packit Service fb6fa5
      g_source_remove (entry->recompute_idle);
Packit Service fb6fa5
      entry->recompute_idle = 0;
Packit Service fb6fa5
    }
Packit Service fb6fa5
Packit Service fb6fa5
  GTK_OBJECT_CLASS (gtk_entry_parent_class)->destroy (object);
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
static void
Packit Service fb6fa5
gtk_entry_dispose (GObject *object)
Packit Service fb6fa5
{
Packit Service fb6fa5
  GtkEntry *entry = GTK_ENTRY (object);
Packit Service fb6fa5
  GtkEntryPrivate *priv = GTK_ENTRY_GET_PRIVATE (entry);
Packit Service fb6fa5
  GdkKeymap *keymap;
Packit Service fb6fa5
Packit Service fb6fa5
  gtk_entry_set_icon_from_pixbuf (entry, GTK_ENTRY_ICON_PRIMARY, NULL);
Packit Service fb6fa5
  gtk_entry_set_icon_tooltip_markup (entry, GTK_ENTRY_ICON_PRIMARY, NULL);
Packit Service fb6fa5
  gtk_entry_set_icon_from_pixbuf (entry, GTK_ENTRY_ICON_SECONDARY, NULL);
Packit Service fb6fa5
  gtk_entry_set_icon_tooltip_markup (entry, GTK_ENTRY_ICON_SECONDARY, NULL);
Packit Service fb6fa5
  gtk_entry_set_completion (entry, NULL);
Packit Service fb6fa5
Packit Service fb6fa5
  if (priv->buffer)
Packit Service fb6fa5
    {
Packit Service fb6fa5
      buffer_disconnect_signals (entry);
Packit Service fb6fa5
      g_object_unref (priv->buffer);
Packit Service fb6fa5
      priv->buffer = NULL;
Packit Service fb6fa5
    }
Packit Service fb6fa5
Packit Service fb6fa5
  keymap = gdk_keymap_get_for_display (gtk_widget_get_display (GTK_WIDGET (object)));
Packit Service fb6fa5
  g_signal_handlers_disconnect_by_func (keymap, keymap_state_changed, entry);
Packit Service fb6fa5
  g_signal_handlers_disconnect_by_func (keymap, keymap_direction_changed, entry);
Packit Service fb6fa5
Packit Service fb6fa5
  G_OBJECT_CLASS (gtk_entry_parent_class)->dispose (object);
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
static void
Packit Service fb6fa5
gtk_entry_finalize (GObject *object)
Packit Service fb6fa5
{
Packit Service fb6fa5
  GtkEntry *entry = GTK_ENTRY (object);
Packit Service fb6fa5
  GtkEntryPrivate *priv = GTK_ENTRY_GET_PRIVATE (entry);
Packit Service fb6fa5
  EntryIconInfo *icon_info = NULL;
Packit Service fb6fa5
  gint i;
Packit Service fb6fa5
Packit Service fb6fa5
  for (i = 0; i < MAX_ICONS; i++)
Packit Service fb6fa5
    {
Packit Service fb6fa5
      if ((icon_info = priv->icons[i]) != NULL)
Packit Service fb6fa5
        {
Packit Service fb6fa5
          if (icon_info->target_list != NULL)
Packit Service fb6fa5
            {
Packit Service fb6fa5
              gtk_target_list_unref (icon_info->target_list);
Packit Service fb6fa5
              icon_info->target_list = NULL;
Packit Service fb6fa5
            }
Packit Service fb6fa5
Packit Service fb6fa5
          g_slice_free (EntryIconInfo, icon_info);
Packit Service fb6fa5
          priv->icons[i] = NULL;
Packit Service fb6fa5
        }
Packit Service fb6fa5
    }
Packit Service fb6fa5
Packit Service fb6fa5
  if (entry->cached_layout)
Packit Service fb6fa5
    g_object_unref (entry->cached_layout);
Packit Service fb6fa5
Packit Service fb6fa5
  g_object_unref (entry->im_context);
Packit Service fb6fa5
Packit Service fb6fa5
  if (entry->blink_timeout)
Packit Service fb6fa5
    g_source_remove (entry->blink_timeout);
Packit Service fb6fa5
Packit Service fb6fa5
  if (entry->recompute_idle)
Packit Service fb6fa5
    g_source_remove (entry->recompute_idle);
Packit Service fb6fa5
Packit Service fb6fa5
  g_free (priv->im_module);
Packit Service fb6fa5
Packit Service fb6fa5
  G_OBJECT_CLASS (gtk_entry_parent_class)->finalize (object);
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
static DisplayMode
Packit Service fb6fa5
gtk_entry_get_display_mode (GtkEntry *entry)
Packit Service fb6fa5
{
Packit Service fb6fa5
  GtkEntryPrivate *priv;
Packit Service fb6fa5
  if (entry->visible)
Packit Service fb6fa5
    return DISPLAY_NORMAL;
Packit Service fb6fa5
  priv = GTK_ENTRY_GET_PRIVATE (entry);
Packit Service fb6fa5
  if (entry->invisible_char == 0 && priv->invisible_char_set)
Packit Service fb6fa5
    return DISPLAY_BLANK;
Packit Service fb6fa5
  return DISPLAY_INVISIBLE;
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
static gchar*
Packit Service fb6fa5
gtk_entry_get_display_text (GtkEntry *entry,
Packit Service fb6fa5
                            gint      start_pos,
Packit Service fb6fa5
                            gint      end_pos)
Packit Service fb6fa5
{
Packit Service fb6fa5
  GtkEntryPasswordHint *password_hint;
Packit Service fb6fa5
  GtkEntryPrivate *priv;
Packit Service fb6fa5
  gunichar invisible_char;
Packit Service fb6fa5
  const gchar *start;
Packit Service fb6fa5
  const gchar *end;
Packit Service fb6fa5
  const gchar *text;
Packit Service fb6fa5
  gchar char_str[7];
Packit Service fb6fa5
  gint char_len;
Packit Service fb6fa5
  GString *str;
Packit Service fb6fa5
  guint length;
Packit Service fb6fa5
  gint i;
Packit Service fb6fa5
Packit Service fb6fa5
  priv = GTK_ENTRY_GET_PRIVATE (entry);
Packit Service fb6fa5
  text = gtk_entry_buffer_get_text (get_buffer (entry));
Packit Service fb6fa5
  length = gtk_entry_buffer_get_length (get_buffer (entry));
Packit Service fb6fa5
Packit Service fb6fa5
  if (end_pos < 0)
Packit Service fb6fa5
    end_pos = length;
Packit Service fb6fa5
  if (start_pos > length)
Packit Service fb6fa5
    start_pos = length;
Packit Service fb6fa5
Packit Service fb6fa5
  if (end_pos <= start_pos)
Packit Service fb6fa5
      return g_strdup ("");
Packit Service fb6fa5
  else if (entry->visible)
Packit Service fb6fa5
    {
Packit Service fb6fa5
      start = g_utf8_offset_to_pointer (text, start_pos);
Packit Service fb6fa5
      end = g_utf8_offset_to_pointer (start, end_pos - start_pos);
Packit Service fb6fa5
      return g_strndup (start, end - start);
Packit Service fb6fa5
    }
Packit Service fb6fa5
  else
Packit Service fb6fa5
    {
Packit Service fb6fa5
      str = g_string_sized_new (length * 2);
Packit Service fb6fa5
Packit Service fb6fa5
      /* Figure out what our invisible char is and encode it */
Packit Service fb6fa5
      if (!entry->invisible_char)
Packit Service fb6fa5
          invisible_char = priv->invisible_char_set ? ' ' : '*';
Packit Service fb6fa5
      else
Packit Service fb6fa5
          invisible_char = entry->invisible_char;
Packit Service fb6fa5
      char_len = g_unichar_to_utf8 (invisible_char, char_str);
Packit Service fb6fa5
Packit Service fb6fa5
      /*
Packit Service fb6fa5
       * Add hidden characters for each character in the text
Packit Service fb6fa5
       * buffer. If there is a password hint, then keep that
Packit Service fb6fa5
       * character visible.
Packit Service fb6fa5
       */
Packit Service fb6fa5
Packit Service fb6fa5
      password_hint = g_object_get_qdata (G_OBJECT (entry), quark_password_hint);
Packit Service fb6fa5
      for (i = start_pos; i < end_pos; ++i)
Packit Service fb6fa5
        {
Packit Service fb6fa5
          if (password_hint && i == password_hint->position)
Packit Service fb6fa5
            {
Packit Service fb6fa5
              start = g_utf8_offset_to_pointer (text, i);
Packit Service fb6fa5
              g_string_append_len (str, start, g_utf8_next_char (start) - start);
Packit Service fb6fa5
            }
Packit Service fb6fa5
          else
Packit Service fb6fa5
            {
Packit Service fb6fa5
              g_string_append_len (str, char_str, char_len);
Packit Service fb6fa5
            }
Packit Service fb6fa5
        }
Packit Service fb6fa5
Packit Service fb6fa5
      return g_string_free (str, FALSE);
Packit Service fb6fa5
    }
Packit Service fb6fa5
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
static void
Packit Service fb6fa5
update_cursors (GtkWidget *widget)
Packit Service fb6fa5
{
Packit Service fb6fa5
  GtkEntryPrivate *priv = GTK_ENTRY_GET_PRIVATE (widget);
Packit Service fb6fa5
  EntryIconInfo *icon_info = NULL;
Packit Service fb6fa5
  GdkDisplay *display;
Packit Service fb6fa5
  GdkCursor *cursor;
Packit Service fb6fa5
  gint i;
Packit Service fb6fa5
Packit Service fb6fa5
  for (i = 0; i < MAX_ICONS; i++)
Packit Service fb6fa5
    {
Packit Service fb6fa5
      if ((icon_info = priv->icons[i]) != NULL)
Packit Service fb6fa5
        {
Packit Service fb6fa5
          if (icon_info->pixbuf != NULL && icon_info->window != NULL)
Packit Service fb6fa5
            gdk_window_show_unraised (icon_info->window);
Packit Service fb6fa5
Packit Service fb6fa5
          /* The icon windows are not children of the visible entry window,
Packit Service fb6fa5
           * thus we can't just inherit the xterm cursor. Slight complication 
Packit Service fb6fa5
           * here is that for the entry, insensitive => arrow cursor, but for 
Packit Service fb6fa5
           * an icon in a sensitive entry, insensitive => xterm cursor.
Packit Service fb6fa5
           */
Packit Service fb6fa5
          if (gtk_widget_is_sensitive (widget) &&
Packit Service fb6fa5
              (icon_info->insensitive || 
Packit Service fb6fa5
               (icon_info->nonactivatable && icon_info->target_list == NULL)))
Packit Service fb6fa5
            {
Packit Service fb6fa5
              display = gtk_widget_get_display (widget);
Packit Service fb6fa5
              cursor = gdk_cursor_new_for_display (display, GDK_XTERM);
Packit Service fb6fa5
              gdk_window_set_cursor (icon_info->window, cursor);
Packit Service fb6fa5
              gdk_cursor_unref (cursor);
Packit Service fb6fa5
            }
Packit Service fb6fa5
          else
Packit Service fb6fa5
            {
Packit Service fb6fa5
              gdk_window_set_cursor (icon_info->window, NULL);
Packit Service fb6fa5
            }
Packit Service fb6fa5
        }
Packit Service fb6fa5
    }
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
static void
Packit Service fb6fa5
realize_icon_info (GtkWidget            *widget, 
Packit Service fb6fa5
                   GtkEntryIconPosition  icon_pos)
Packit Service fb6fa5
{
Packit Service fb6fa5
  GtkEntryPrivate *priv = GTK_ENTRY_GET_PRIVATE (widget);
Packit Service fb6fa5
  EntryIconInfo *icon_info = priv->icons[icon_pos];
Packit Service fb6fa5
  GdkWindowAttr attributes;
Packit Service fb6fa5
  gint attributes_mask;
Packit Service fb6fa5
Packit Service fb6fa5
  g_return_if_fail (icon_info != NULL);
Packit Service fb6fa5
Packit Service fb6fa5
  attributes.x = 0;
Packit Service fb6fa5
  attributes.y = 0;
Packit Service fb6fa5
  attributes.width = 1;
Packit Service fb6fa5
  attributes.height = 1;
Packit Service fb6fa5
  attributes.window_type = GDK_WINDOW_CHILD;
Packit Service fb6fa5
  attributes.wclass = GDK_INPUT_OUTPUT;
Packit Service fb6fa5
  attributes.visual = gtk_widget_get_visual (widget);
Packit Service fb6fa5
  attributes.colormap = gtk_widget_get_colormap (widget);
Packit Service fb6fa5
  attributes.event_mask = gtk_widget_get_events (widget);
Packit Service fb6fa5
  attributes.event_mask |= (GDK_EXPOSURE_MASK |
Packit Service fb6fa5
                                GDK_BUTTON_PRESS_MASK |
Packit Service fb6fa5
                                GDK_BUTTON_RELEASE_MASK |
Packit Service fb6fa5
                                GDK_BUTTON1_MOTION_MASK |
Packit Service fb6fa5
                                GDK_BUTTON3_MOTION_MASK |
Packit Service fb6fa5
                                GDK_POINTER_MOTION_HINT_MASK |
Packit Service fb6fa5
                                GDK_POINTER_MOTION_MASK |
Packit Service fb6fa5
                                GDK_ENTER_NOTIFY_MASK |
Packit Service fb6fa5
                            GDK_LEAVE_NOTIFY_MASK);
Packit Service fb6fa5
  attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP;
Packit Service fb6fa5
Packit Service fb6fa5
  icon_info->window = gdk_window_new (widget->window,
Packit Service fb6fa5
                                      &attributes,
Packit Service fb6fa5
                                      attributes_mask);
Packit Service fb6fa5
  gdk_window_set_user_data (icon_info->window, widget);
Packit Service fb6fa5
  gdk_window_set_background (icon_info->window,
Packit Service fb6fa5
                             &widget->style->base[gtk_widget_get_state (widget)]);
Packit Service fb6fa5
Packit Service fb6fa5
  gtk_widget_queue_resize (widget);
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
static EntryIconInfo*
Packit Service fb6fa5
construct_icon_info (GtkWidget            *widget, 
Packit Service fb6fa5
                     GtkEntryIconPosition  icon_pos)
Packit Service fb6fa5
{
Packit Service fb6fa5
  GtkEntryPrivate *priv = GTK_ENTRY_GET_PRIVATE (widget);
Packit Service fb6fa5
  EntryIconInfo *icon_info;
Packit Service fb6fa5
Packit Service fb6fa5
  g_return_val_if_fail (priv->icons[icon_pos] == NULL, NULL);
Packit Service fb6fa5
Packit Service fb6fa5
  icon_info = g_slice_new0 (EntryIconInfo);
Packit Service fb6fa5
  priv->icons[icon_pos] = icon_info;
Packit Service fb6fa5
Packit Service fb6fa5
  if (gtk_widget_get_realized (widget))
Packit Service fb6fa5
    realize_icon_info (widget, icon_pos);
Packit Service fb6fa5
Packit Service fb6fa5
  return icon_info;
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
static void
Packit Service fb6fa5
gtk_entry_map (GtkWidget *widget)
Packit Service fb6fa5
{
Packit Service fb6fa5
  GtkEntryPrivate *priv = GTK_ENTRY_GET_PRIVATE (widget);
Packit Service fb6fa5
  EntryIconInfo *icon_info = NULL;
Packit Service fb6fa5
  gint i;
Packit Service fb6fa5
Packit Service fb6fa5
  if (gtk_widget_get_realized (widget) && !gtk_widget_get_mapped (widget))
Packit Service fb6fa5
    {
Packit Service fb6fa5
      GTK_WIDGET_CLASS (gtk_entry_parent_class)->map (widget);
Packit Service fb6fa5
Packit Service fb6fa5
      for (i = 0; i < MAX_ICONS; i++)
Packit Service fb6fa5
        {
Packit Service fb6fa5
          if ((icon_info = priv->icons[i]) != NULL)
Packit Service fb6fa5
            {
Packit Service fb6fa5
              if (icon_info->pixbuf != NULL && icon_info->window != NULL)
Packit Service fb6fa5
                gdk_window_show (icon_info->window);
Packit Service fb6fa5
            }
Packit Service fb6fa5
        }
Packit Service fb6fa5
Packit Service fb6fa5
      update_cursors (widget);
Packit Service fb6fa5
    }
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
static void
Packit Service fb6fa5
gtk_entry_unmap (GtkWidget *widget)
Packit Service fb6fa5
{
Packit Service fb6fa5
  GtkEntryPrivate *priv = GTK_ENTRY_GET_PRIVATE (widget);
Packit Service fb6fa5
  EntryIconInfo *icon_info = NULL;
Packit Service fb6fa5
  gint i;
Packit Service fb6fa5
Packit Service fb6fa5
  if (gtk_widget_get_mapped (widget))
Packit Service fb6fa5
    {
Packit Service fb6fa5
      for (i = 0; i < MAX_ICONS; i++)
Packit Service fb6fa5
        {
Packit Service fb6fa5
          if ((icon_info = priv->icons[i]) != NULL)
Packit Service fb6fa5
            {
Packit Service fb6fa5
              if (icon_info->pixbuf != NULL && icon_info->window != NULL)
Packit Service fb6fa5
                gdk_window_hide (icon_info->window);
Packit Service fb6fa5
            }
Packit Service fb6fa5
        }
Packit Service fb6fa5
Packit Service fb6fa5
      GTK_WIDGET_CLASS (gtk_entry_parent_class)->unmap (widget);
Packit Service fb6fa5
    }
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
static void
Packit Service fb6fa5
gtk_entry_realize (GtkWidget *widget)
Packit Service fb6fa5
{
Packit Service fb6fa5
  GtkEntry *entry;
Packit Service fb6fa5
  GtkEntryPrivate *priv;
Packit Service fb6fa5
  EntryIconInfo *icon_info;
Packit Service fb6fa5
  GdkWindowAttr attributes;
Packit Service fb6fa5
  gint attributes_mask;
Packit Service fb6fa5
  int i;
Packit Service fb6fa5
Packit Service fb6fa5
  gtk_widget_set_realized (widget, TRUE);
Packit Service fb6fa5
  entry = GTK_ENTRY (widget);
Packit Service fb6fa5
  priv = GTK_ENTRY_GET_PRIVATE (entry);
Packit Service fb6fa5
Packit Service fb6fa5
  attributes.window_type = GDK_WINDOW_CHILD;
Packit Service fb6fa5
  
Packit Service fb6fa5
  get_widget_window_size (entry, &attributes.x, &attributes.y, &attributes.width, &attributes.height);
Packit Service fb6fa5
Packit Service fb6fa5
  attributes.wclass = GDK_INPUT_OUTPUT;
Packit Service fb6fa5
  attributes.visual = gtk_widget_get_visual (widget);
Packit Service fb6fa5
  attributes.colormap = gtk_widget_get_colormap (widget);
Packit Service fb6fa5
  attributes.event_mask = gtk_widget_get_events (widget);
Packit Service fb6fa5
  attributes.event_mask |= (GDK_EXPOSURE_MASK |
Packit Service fb6fa5
			    GDK_BUTTON_PRESS_MASK |
Packit Service fb6fa5
			    GDK_BUTTON_RELEASE_MASK |
Packit Service fb6fa5
			    GDK_BUTTON1_MOTION_MASK |
Packit Service fb6fa5
			    GDK_BUTTON3_MOTION_MASK |
Packit Service fb6fa5
			    GDK_POINTER_MOTION_HINT_MASK |
Packit Service fb6fa5
			    GDK_POINTER_MOTION_MASK |
Packit Service fb6fa5
                            GDK_ENTER_NOTIFY_MASK |
Packit Service fb6fa5
			    GDK_LEAVE_NOTIFY_MASK);
Packit Service fb6fa5
  attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP;
Packit Service fb6fa5
Packit Service fb6fa5
  widget->window = gdk_window_new (gtk_widget_get_parent_window (widget), &attributes, attributes_mask);
Packit Service fb6fa5
  gdk_window_set_user_data (widget->window, entry);
Packit Service fb6fa5
Packit Service fb6fa5
  get_text_area_size (entry, &attributes.x, &attributes.y, &attributes.width, &attributes.height);
Packit Service fb6fa5
 
Packit Service fb6fa5
  if (gtk_widget_is_sensitive (widget))
Packit Service fb6fa5
    {
Packit Service fb6fa5
      attributes.cursor = gdk_cursor_new_for_display (gtk_widget_get_display (widget), GDK_XTERM);
Packit Service fb6fa5
      attributes_mask |= GDK_WA_CURSOR;
Packit Service fb6fa5
    }
Packit Service fb6fa5
Packit Service fb6fa5
  entry->text_area = gdk_window_new (widget->window, &attributes, attributes_mask);
Packit Service fb6fa5
Packit Service fb6fa5
  gdk_window_set_user_data (entry->text_area, entry);
Packit Service fb6fa5
Packit Service fb6fa5
  if (attributes_mask & GDK_WA_CURSOR)
Packit Service fb6fa5
    gdk_cursor_unref (attributes.cursor);
Packit Service fb6fa5
Packit Service fb6fa5
  widget->style = gtk_style_attach (widget->style, widget->window);
Packit Service fb6fa5
Packit Service fb6fa5
  gdk_window_set_background (widget->window, &widget->style->base[gtk_widget_get_state (widget)]);
Packit Service fb6fa5
  gdk_window_set_background (entry->text_area, &widget->style->base[gtk_widget_get_state (widget)]);
Packit Service fb6fa5
Packit Service fb6fa5
  gdk_window_show (entry->text_area);
Packit Service fb6fa5
Packit Service fb6fa5
  gtk_im_context_set_client_window (entry->im_context, entry->text_area);
Packit Service fb6fa5
Packit Service fb6fa5
  gtk_entry_adjust_scroll (entry);
Packit Service fb6fa5
  gtk_entry_update_primary_selection (entry);
Packit Service fb6fa5
Packit Service fb6fa5
Packit Service fb6fa5
  /* If the icon positions are already setup, create their windows.
Packit Service fb6fa5
   * Otherwise if they don't exist yet, then construct_icon_info()
Packit Service fb6fa5
   * will create the windows once the widget is already realized.
Packit Service fb6fa5
   */
Packit Service fb6fa5
  for (i = 0; i < MAX_ICONS; i++)
Packit Service fb6fa5
    {
Packit Service fb6fa5
      if ((icon_info = priv->icons[i]) != NULL)
Packit Service fb6fa5
        {
Packit Service fb6fa5
          if (icon_info->window == NULL)
Packit Service fb6fa5
            realize_icon_info (widget, i);
Packit Service fb6fa5
        }
Packit Service fb6fa5
    }
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
static void
Packit Service fb6fa5
gtk_entry_unrealize (GtkWidget *widget)
Packit Service fb6fa5
{
Packit Service fb6fa5
  GtkEntry *entry = GTK_ENTRY (widget);
Packit Service fb6fa5
  GtkEntryPrivate *priv = GTK_ENTRY_GET_PRIVATE (entry);
Packit Service fb6fa5
  GtkClipboard *clipboard;
Packit Service fb6fa5
  EntryIconInfo *icon_info;
Packit Service fb6fa5
  gint i;
Packit Service fb6fa5
Packit Service fb6fa5
  gtk_entry_reset_layout (entry);
Packit Service fb6fa5
  
Packit Service fb6fa5
  gtk_im_context_set_client_window (entry->im_context, NULL);
Packit Service fb6fa5
Packit Service fb6fa5
  clipboard = gtk_widget_get_clipboard (widget, GDK_SELECTION_PRIMARY);
Packit Service fb6fa5
  if (gtk_clipboard_get_owner (clipboard) == G_OBJECT (entry))
Packit Service fb6fa5
    gtk_clipboard_clear (clipboard);
Packit Service fb6fa5
  
Packit Service fb6fa5
  if (entry->text_area)
Packit Service fb6fa5
    {
Packit Service fb6fa5
      gdk_window_set_user_data (entry->text_area, NULL);
Packit Service fb6fa5
      gdk_window_destroy (entry->text_area);
Packit Service fb6fa5
      entry->text_area = NULL;
Packit Service fb6fa5
    }
Packit Service fb6fa5
Packit Service fb6fa5
  if (entry->popup_menu)
Packit Service fb6fa5
    {
Packit Service fb6fa5
      gtk_widget_destroy (entry->popup_menu);
Packit Service fb6fa5
      entry->popup_menu = NULL;
Packit Service fb6fa5
    }
Packit Service fb6fa5
Packit Service fb6fa5
  GTK_WIDGET_CLASS (gtk_entry_parent_class)->unrealize (widget);
Packit Service fb6fa5
Packit Service fb6fa5
  for (i = 0; i < MAX_ICONS; i++)
Packit Service fb6fa5
    {
Packit Service fb6fa5
      if ((icon_info = priv->icons[i]) != NULL)
Packit Service fb6fa5
        {
Packit Service fb6fa5
          if (icon_info->window != NULL)
Packit Service fb6fa5
            {
Packit Service fb6fa5
              gdk_window_destroy (icon_info->window);
Packit Service fb6fa5
              icon_info->window = NULL;
Packit Service fb6fa5
            }
Packit Service fb6fa5
        }
Packit Service fb6fa5
    }
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
void
Packit Service fb6fa5
_gtk_entry_get_borders (GtkEntry *entry,
Packit Service fb6fa5
			gint     *xborder,
Packit Service fb6fa5
			gint     *yborder)
Packit Service fb6fa5
{
Packit Service fb6fa5
  GtkWidget *widget = GTK_WIDGET (entry);
Packit Service fb6fa5
  GtkEntryPrivate *priv = GTK_ENTRY_GET_PRIVATE (widget);
Packit Service fb6fa5
Packit Service fb6fa5
  if (entry->has_frame)
Packit Service fb6fa5
    {
Packit Service fb6fa5
      *xborder = widget->style->xthickness;
Packit Service fb6fa5
      *yborder = widget->style->ythickness;
Packit Service fb6fa5
    }
Packit Service fb6fa5
  else
Packit Service fb6fa5
    {
Packit Service fb6fa5
      *xborder = 0;
Packit Service fb6fa5
      *yborder = 0;
Packit Service fb6fa5
    }
Packit Service fb6fa5
Packit Service fb6fa5
  if (!priv->interior_focus)
Packit Service fb6fa5
    {
Packit Service fb6fa5
      *xborder += priv->focus_width;
Packit Service fb6fa5
      *yborder += priv->focus_width;
Packit Service fb6fa5
    }
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
static void
Packit Service fb6fa5
gtk_entry_size_request (GtkWidget      *widget,
Packit Service fb6fa5
			GtkRequisition *requisition)
Packit Service fb6fa5
{
Packit Service fb6fa5
  GtkEntry *entry = GTK_ENTRY (widget);
Packit Service fb6fa5
  GtkEntryPrivate *priv = GTK_ENTRY_GET_PRIVATE (entry);
Packit Service fb6fa5
  PangoFontMetrics *metrics;
Packit Service fb6fa5
  gint xborder, yborder;
Packit Service fb6fa5
  GtkBorder inner_border;
Packit Service fb6fa5
  PangoContext *context;
Packit Service fb6fa5
  int icon_widths = 0;
Packit Service fb6fa5
  int icon_width, i;
Packit Service fb6fa5
  
Packit Service fb6fa5
  gtk_widget_ensure_style (widget);
Packit Service fb6fa5
  context = gtk_widget_get_pango_context (widget);
Packit Service fb6fa5
  metrics = pango_context_get_metrics (context,
Packit Service fb6fa5
				       widget->style->font_desc,
Packit Service fb6fa5
				       pango_context_get_language (context));
Packit Service fb6fa5
Packit Service fb6fa5
  entry->ascent = pango_font_metrics_get_ascent (metrics);
Packit Service fb6fa5
  entry->descent = pango_font_metrics_get_descent (metrics);
Packit Service fb6fa5
  
Packit Service fb6fa5
  _gtk_entry_get_borders (entry, &xborder, &yborder);
Packit Service fb6fa5
  _gtk_entry_effective_inner_border (entry, &inner_border);
Packit Service fb6fa5
Packit Service fb6fa5
  if (entry->width_chars < 0)
Packit Service fb6fa5
    requisition->width = MIN_ENTRY_WIDTH + xborder * 2 + inner_border.left + inner_border.right;
Packit Service fb6fa5
  else
Packit Service fb6fa5
    {
Packit Service fb6fa5
      gint char_width = pango_font_metrics_get_approximate_char_width (metrics);
Packit Service fb6fa5
      gint digit_width = pango_font_metrics_get_approximate_digit_width (metrics);
Packit Service fb6fa5
      gint char_pixels = (MAX (char_width, digit_width) + PANGO_SCALE - 1) / PANGO_SCALE;
Packit Service fb6fa5
      
Packit Service fb6fa5
      requisition->width = char_pixels * entry->width_chars + xborder * 2 + inner_border.left + inner_border.right;
Packit Service fb6fa5
    }
Packit Service fb6fa5
    
Packit Service fb6fa5
  requisition->height = PANGO_PIXELS (entry->ascent + entry->descent) + yborder * 2 + inner_border.top + inner_border.bottom;
Packit Service fb6fa5
Packit Service fb6fa5
  for (i = 0; i < MAX_ICONS; i++)
Packit Service fb6fa5
    {
Packit Service fb6fa5
      icon_width = get_icon_width (entry, i);
Packit Service fb6fa5
      if (icon_width > 0)
Packit Service fb6fa5
        icon_widths += icon_width + 2 * priv->icon_margin;
Packit Service fb6fa5
    }
Packit Service fb6fa5
Packit Service fb6fa5
  if (icon_widths > requisition->width)
Packit Service fb6fa5
    requisition->width += icon_widths;
Packit Service fb6fa5
Packit Service fb6fa5
  pango_font_metrics_unref (metrics);
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
static void
Packit Service fb6fa5
place_windows (GtkEntry *entry)
Packit Service fb6fa5
{
Packit Service fb6fa5
  GtkWidget *widget = GTK_WIDGET (entry);
Packit Service fb6fa5
  GtkEntryPrivate *priv = GTK_ENTRY_GET_PRIVATE (entry);
Packit Service fb6fa5
  gint x, y, width, height;
Packit Service fb6fa5
  GtkAllocation primary;
Packit Service fb6fa5
  GtkAllocation secondary;
Packit Service fb6fa5
  EntryIconInfo *icon_info = NULL;
Packit Service fb6fa5
Packit Service fb6fa5
  get_text_area_size (entry, &x, &y, &width, &height);
Packit Service fb6fa5
  get_icon_allocations (entry, &primary, &secondary);
Packit Service fb6fa5
Packit Service fb6fa5
  if (gtk_widget_has_focus (widget) && !priv->interior_focus)
Packit Service fb6fa5
    y += priv->focus_width;
Packit Service fb6fa5
Packit Service fb6fa5
  if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL)
Packit Service fb6fa5
    x += secondary.width;
Packit Service fb6fa5
  else
Packit Service fb6fa5
    x += primary.width;
Packit Service fb6fa5
  width -= primary.width + secondary.width;
Packit Service fb6fa5
Packit Service fb6fa5
  if ((icon_info = priv->icons[GTK_ENTRY_ICON_PRIMARY]) != NULL)
Packit Service fb6fa5
    gdk_window_move_resize (icon_info->window,
Packit Service fb6fa5
                            primary.x, primary.y,
Packit Service fb6fa5
                            primary.width, primary.height);
Packit Service fb6fa5
Packit Service fb6fa5
  if ((icon_info = priv->icons[GTK_ENTRY_ICON_SECONDARY]) != NULL)
Packit Service fb6fa5
    gdk_window_move_resize (icon_info->window,
Packit Service fb6fa5
                            secondary.x, secondary.y,
Packit Service fb6fa5
                            secondary.width, secondary.height);
Packit Service fb6fa5
Packit Service fb6fa5
  gdk_window_move_resize (entry->text_area, x, y, width, height);
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
static void
Packit Service fb6fa5
gtk_entry_get_text_area_size (GtkEntry *entry,
Packit Service fb6fa5
                              gint     *x,
Packit Service fb6fa5
			      gint     *y,
Packit Service fb6fa5
			      gint     *width,
Packit Service fb6fa5
			      gint     *height)
Packit Service fb6fa5
{
Packit Service fb6fa5
  GtkWidget *widget = GTK_WIDGET (entry);
Packit Service fb6fa5
  GtkEntryPrivate *priv = GTK_ENTRY_GET_PRIVATE (widget);
Packit Service fb6fa5
  gint frame_height;
Packit Service fb6fa5
  gint xborder, yborder;
Packit Service fb6fa5
  GtkRequisition requisition;
Packit Service fb6fa5
Packit Service fb6fa5
  gtk_widget_get_child_requisition (widget, &requisition);
Packit Service fb6fa5
  _gtk_entry_get_borders (entry, &xborder, &yborder);
Packit Service fb6fa5
Packit Service fb6fa5
  if (gtk_widget_get_realized (widget))
Packit Service fb6fa5
    frame_height = gdk_window_get_height (widget->window);
Packit Service fb6fa5
  else
Packit Service fb6fa5
    frame_height = requisition.height;
Packit Service fb6fa5
Packit Service fb6fa5
  if (gtk_widget_has_focus (widget) && !priv->interior_focus)
Packit Service fb6fa5
    frame_height -= 2 * priv->focus_width;
Packit Service fb6fa5
Packit Service fb6fa5
  if (x)
Packit Service fb6fa5
    *x = xborder;
Packit Service fb6fa5
Packit Service fb6fa5
  if (y)
Packit Service fb6fa5
    *y = frame_height / 2 - (requisition.height - yborder * 2) / 2;
Packit Service fb6fa5
Packit Service fb6fa5
  if (width)
Packit Service fb6fa5
    *width = GTK_WIDGET (entry)->allocation.width - xborder * 2;
Packit Service fb6fa5
Packit Service fb6fa5
  if (height)
Packit Service fb6fa5
    *height = requisition.height - yborder * 2;
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
static void
Packit Service fb6fa5
get_text_area_size (GtkEntry *entry,
Packit Service fb6fa5
                    gint     *x,
Packit Service fb6fa5
                    gint     *y,
Packit Service fb6fa5
                    gint     *width,
Packit Service fb6fa5
                    gint     *height)
Packit Service fb6fa5
{
Packit Service fb6fa5
  GtkEntryClass *class;
Packit Service fb6fa5
Packit Service fb6fa5
  g_return_if_fail (GTK_IS_ENTRY (entry));
Packit Service fb6fa5
Packit Service fb6fa5
  class = GTK_ENTRY_GET_CLASS (entry);
Packit Service fb6fa5
Packit Service fb6fa5
  if (class->get_text_area_size)
Packit Service fb6fa5
    class->get_text_area_size (entry, x, y, width, height);
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
Packit Service fb6fa5
static void
Packit Service fb6fa5
get_widget_window_size (GtkEntry *entry,
Packit Service fb6fa5
                        gint     *x,
Packit Service fb6fa5
                        gint     *y,
Packit Service fb6fa5
                        gint     *width,
Packit Service fb6fa5
                        gint     *height)
Packit Service fb6fa5
{
Packit Service fb6fa5
  GtkRequisition requisition;
Packit Service fb6fa5
  GtkWidget *widget = GTK_WIDGET (entry);
Packit Service fb6fa5
      
Packit Service fb6fa5
  gtk_widget_get_child_requisition (widget, &requisition);
Packit Service fb6fa5
Packit Service fb6fa5
  if (x)
Packit Service fb6fa5
    *x = widget->allocation.x;
Packit Service fb6fa5
Packit Service fb6fa5
  if (y)
Packit Service fb6fa5
    {
Packit Service fb6fa5
      if (entry->is_cell_renderer)
Packit Service fb6fa5
	*y = widget->allocation.y;
Packit Service fb6fa5
      else
Packit Service fb6fa5
	*y = widget->allocation.y + (widget->allocation.height - requisition.height) / 2;
Packit Service fb6fa5
    }
Packit Service fb6fa5
Packit Service fb6fa5
  if (width)
Packit Service fb6fa5
    *width = widget->allocation.width;
Packit Service fb6fa5
Packit Service fb6fa5
  if (height)
Packit Service fb6fa5
    {
Packit Service fb6fa5
      if (entry->is_cell_renderer)
Packit Service fb6fa5
	*height = widget->allocation.height;
Packit Service fb6fa5
      else
Packit Service fb6fa5
	*height = requisition.height;
Packit Service fb6fa5
    }
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
void
Packit Service fb6fa5
_gtk_entry_effective_inner_border (GtkEntry  *entry,
Packit Service fb6fa5
                                   GtkBorder *border)
Packit Service fb6fa5
{
Packit Service fb6fa5
  GtkBorder *tmp_border;
Packit Service fb6fa5
Packit Service fb6fa5
  tmp_border = g_object_get_qdata (G_OBJECT (entry), quark_inner_border);
Packit Service fb6fa5
Packit Service fb6fa5
  if (tmp_border)
Packit Service fb6fa5
    {
Packit Service fb6fa5
      *border = *tmp_border;
Packit Service fb6fa5
      return;
Packit Service fb6fa5
    }
Packit Service fb6fa5
Packit Service fb6fa5
  gtk_widget_style_get (GTK_WIDGET (entry), "inner-border", &tmp_border, NULL);
Packit Service fb6fa5
Packit Service fb6fa5
  if (tmp_border)
Packit Service fb6fa5
    {
Packit Service fb6fa5
      *border = *tmp_border;
Packit Service fb6fa5
      gtk_border_free (tmp_border);
Packit Service fb6fa5
      return;
Packit Service fb6fa5
    }
Packit Service fb6fa5
Packit Service fb6fa5
  *border = default_inner_border;
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
static void
Packit Service fb6fa5
gtk_entry_size_allocate (GtkWidget     *widget,
Packit Service fb6fa5
			 GtkAllocation *allocation)
Packit Service fb6fa5
{
Packit Service fb6fa5
  GtkEntry *entry = GTK_ENTRY (widget);
Packit Service fb6fa5
  
Packit Service fb6fa5
  widget->allocation = *allocation;
Packit Service fb6fa5
  
Packit Service fb6fa5
  if (gtk_widget_get_realized (widget))
Packit Service fb6fa5
    {
Packit Service fb6fa5
      /* We call gtk_widget_get_child_requisition, since we want (for
Packit Service fb6fa5
       * backwards compatibility reasons) the realization here to
Packit Service fb6fa5
       * be affected by the usize of the entry, if set
Packit Service fb6fa5
       */
Packit Service fb6fa5
      gint x, y, width, height;
Packit Service fb6fa5
      GtkEntryCompletion* completion;
Packit Service fb6fa5
Packit Service fb6fa5
      get_widget_window_size (entry, &x, &y, &width, &height);
Packit Service fb6fa5
      gdk_window_move_resize (widget->window, x, y, width, height);
Packit Service fb6fa5
Packit Service fb6fa5
      place_windows (entry);
Packit Service fb6fa5
      gtk_entry_recompute (entry);
Packit Service fb6fa5
Packit Service fb6fa5
      completion = gtk_entry_get_completion (entry);
Packit Service fb6fa5
      if (completion && gtk_widget_get_mapped (completion->priv->popup_window))
Packit Service fb6fa5
        _gtk_entry_completion_resize_popup (completion);
Packit Service fb6fa5
    }
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
/* Kudos to the gnome-panel guys. */
Packit Service fb6fa5
static void
Packit Service fb6fa5
colorshift_pixbuf (GdkPixbuf *dest,
Packit Service fb6fa5
                   GdkPixbuf *src,
Packit Service fb6fa5
                   gint       shift)
Packit Service fb6fa5
{
Packit Service fb6fa5
  gint i, j;
Packit Service fb6fa5
  gint width, height, has_alpha, src_rowstride, dest_rowstride;
Packit Service fb6fa5
  guchar *target_pixels;
Packit Service fb6fa5
  guchar *original_pixels;
Packit Service fb6fa5
  guchar *pix_src;
Packit Service fb6fa5
  guchar *pix_dest;
Packit Service fb6fa5
  int val;
Packit Service fb6fa5
  guchar r, g, b;
Packit Service fb6fa5
Packit Service fb6fa5
  has_alpha       = gdk_pixbuf_get_has_alpha (src);
Packit Service fb6fa5
  width           = gdk_pixbuf_get_width (src);
Packit Service fb6fa5
  height          = gdk_pixbuf_get_height (src);
Packit Service fb6fa5
  src_rowstride   = gdk_pixbuf_get_rowstride (src);
Packit Service fb6fa5
  dest_rowstride  = gdk_pixbuf_get_rowstride (dest);
Packit Service fb6fa5
  original_pixels = gdk_pixbuf_get_pixels (src);
Packit Service fb6fa5
  target_pixels   = gdk_pixbuf_get_pixels (dest);
Packit Service fb6fa5
Packit Service fb6fa5
  for (i = 0; i < height; i++)
Packit Service fb6fa5
    {
Packit Service fb6fa5
      pix_dest = target_pixels   + i * dest_rowstride;
Packit Service fb6fa5
      pix_src  = original_pixels + i * src_rowstride;
Packit Service fb6fa5
Packit Service fb6fa5
      for (j = 0; j < width; j++)
Packit Service fb6fa5
        {
Packit Service fb6fa5
          r = *(pix_src++);
Packit Service fb6fa5
          g = *(pix_src++);
Packit Service fb6fa5
          b = *(pix_src++);
Packit Service fb6fa5
Packit Service fb6fa5
          val = r + shift;
Packit Service fb6fa5
          *(pix_dest++) = CLAMP (val, 0, 255);
Packit Service fb6fa5
Packit Service fb6fa5
          val = g + shift;
Packit Service fb6fa5
          *(pix_dest++) = CLAMP (val, 0, 255);
Packit Service fb6fa5
Packit Service fb6fa5
          val = b + shift;
Packit Service fb6fa5
          *(pix_dest++) = CLAMP (val, 0, 255);
Packit Service fb6fa5
Packit Service fb6fa5
          if (has_alpha)
Packit Service fb6fa5
            *(pix_dest++) = *(pix_src++);
Packit Service fb6fa5
        }
Packit Service fb6fa5
    }
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
static gboolean
Packit Service fb6fa5
should_prelight (GtkEntry             *entry,
Packit Service fb6fa5
                 GtkEntryIconPosition  icon_pos)
Packit Service fb6fa5
{
Packit Service fb6fa5
  GtkEntryPrivate *priv = GTK_ENTRY_GET_PRIVATE (entry);
Packit Service fb6fa5
  EntryIconInfo *icon_info = priv->icons[icon_pos];
Packit Service fb6fa5
  gboolean prelight;
Packit Service fb6fa5
Packit Service fb6fa5
  if (!icon_info) 
Packit Service fb6fa5
    return FALSE;
Packit Service fb6fa5
Packit Service fb6fa5
  if (icon_info->nonactivatable && icon_info->target_list == NULL)
Packit Service fb6fa5
    return FALSE;
Packit Service fb6fa5
Packit Service fb6fa5
  if (icon_info->pressed)
Packit Service fb6fa5
    return FALSE;
Packit Service fb6fa5
Packit Service fb6fa5
  gtk_widget_style_get (GTK_WIDGET (entry),
Packit Service fb6fa5
                        "icon-prelight", &prelight,
Packit Service fb6fa5
                        NULL);
Packit Service fb6fa5
Packit Service fb6fa5
  return prelight;
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
static void
Packit Service fb6fa5
draw_icon (GtkWidget            *widget,
Packit Service fb6fa5
           GtkEntryIconPosition  icon_pos)
Packit Service fb6fa5
{
Packit Service fb6fa5
  GtkEntry *entry = GTK_ENTRY (widget);
Packit Service fb6fa5
  GtkEntryPrivate *priv = GTK_ENTRY_GET_PRIVATE (entry);
Packit Service fb6fa5
  EntryIconInfo *icon_info = priv->icons[icon_pos];
Packit Service fb6fa5
  GdkPixbuf *pixbuf;
Packit Service fb6fa5
  gint x, y, width, height;
Packit Service fb6fa5
  cairo_t *cr;
Packit Service fb6fa5
Packit Service fb6fa5
  if (!icon_info)
Packit Service fb6fa5
    return;
Packit Service fb6fa5
Packit Service fb6fa5
  gtk_entry_ensure_pixbuf (entry, icon_pos);
Packit Service fb6fa5
Packit Service fb6fa5
  if (icon_info->pixbuf == NULL)
Packit Service fb6fa5
    return;
Packit Service fb6fa5
Packit Service fb6fa5
  width = gdk_window_get_width (icon_info->window);
Packit Service fb6fa5
  height = gdk_window_get_height (icon_info->window);
Packit Service fb6fa5
Packit Service fb6fa5
  /* size_allocate hasn't been called yet. These are the default values.
Packit Service fb6fa5
   */
Packit Service fb6fa5
  if (width == 1 || height == 1)
Packit Service fb6fa5
    return;
Packit Service fb6fa5
Packit Service fb6fa5
  pixbuf = icon_info->pixbuf;
Packit Service fb6fa5
  g_object_ref (pixbuf);
Packit Service fb6fa5
Packit Service fb6fa5
  if (gdk_pixbuf_get_height (pixbuf) > height)
Packit Service fb6fa5
    {
Packit Service fb6fa5
      GdkPixbuf *temp_pixbuf;
Packit Service fb6fa5
      gint scale;
Packit Service fb6fa5
Packit Service fb6fa5
      scale = height - 2 * priv->icon_margin;
Packit Service fb6fa5
      temp_pixbuf = gdk_pixbuf_scale_simple (pixbuf, scale, scale,
Packit Service fb6fa5
                                             GDK_INTERP_BILINEAR);
Packit Service fb6fa5
      g_object_unref (pixbuf);
Packit Service fb6fa5
      pixbuf = temp_pixbuf;
Packit Service fb6fa5
    }
Packit Service fb6fa5
Packit Service fb6fa5
  x = (width  - gdk_pixbuf_get_width (pixbuf)) / 2;
Packit Service fb6fa5
  y = (height - gdk_pixbuf_get_height (pixbuf)) / 2;
Packit Service fb6fa5
Packit Service fb6fa5
  if (!gtk_widget_is_sensitive (widget) ||
Packit Service fb6fa5
      icon_info->insensitive)
Packit Service fb6fa5
    {
Packit Service fb6fa5
      GdkPixbuf *temp_pixbuf;
Packit Service fb6fa5
Packit Service