aboutsummaryrefslogtreecommitdiffstats
path: root/widgets
diff options
context:
space:
mode:
Diffstat (limited to 'widgets')
-rw-r--r--widgets/text/e-entry.c51
-rw-r--r--widgets/text/e-entry.h1
2 files changed, 50 insertions, 2 deletions
diff --git a/widgets/text/e-entry.c b/widgets/text/e-entry.c
index 44a20bb6f9..3dc9de91a5 100644
--- a/widgets/text/e-entry.c
+++ b/widgets/text/e-entry.c
@@ -24,7 +24,7 @@
#include "gal/widgets/e-canvas-utils.h"
#include "e-entry.h"
-#define MIN_ENTRY_WIDTH 150
+#define MIN_ENTRY_WIDTH 50
#define INNER_BORDER 2
#define PARENT_TYPE gtk_table_get_type ()
@@ -79,6 +79,16 @@ canvas_size_allocate (GtkWidget *widget, GtkAllocation *alloc,
"clip_width", (double) alloc->width,
"clip_height", (double) alloc->height,
NULL);
+ switch (e_entry->justification) {
+ case GTK_JUSTIFY_RIGHT:
+ e_canvas_item_move_absolute(GNOME_CANVAS_ITEM(e_entry->item), alloc->width, 0);
+ break;
+ case GTK_JUSTIFY_CENTER:
+ e_canvas_item_move_absolute(GNOME_CANVAS_ITEM(e_entry->item), alloc->width / 2, 0);
+ break;
+ default:
+ break;
+ }
}
static void
@@ -146,6 +156,7 @@ e_entry_init (GtkObject *object)
"draw_borders", TRUE,
"draw_background", TRUE,
NULL));
+ e_entry->justification = GTK_JUSTIFY_LEFT;
gtk_table_attach_defaults(gtk_table, GTK_WIDGET(e_entry->canvas),
0, 1, 0, 1);
gtk_widget_show(GTK_WIDGET(e_entry->canvas));
@@ -161,12 +172,27 @@ e_entry_init (GtkObject *object)
}
+/**
+ * e_entry_construct
+ *
+ * Constructs the given EEntry.
+ *
+ * Returns: The EEntry
+ **/
EEntry *
e_entry_construct (EEntry *e_entry)
{
return e_entry;
}
+
+/**
+ * e_entry_new
+ *
+ * Creates a new EEntry.
+ *
+ * Returns: The new EEntry
+ **/
GtkWidget *
e_entry_new (void)
{
@@ -301,6 +327,8 @@ et_set_arg (GtkObject *o, GtkArg *arg, guint arg_id)
{
EEntry *ee = E_ENTRY (o);
GtkObject *item = GTK_OBJECT (ee->item);
+ GtkAnchorType anchor;
+ int width;
switch (arg_id){
case ARG_MODEL:
@@ -340,8 +368,27 @@ et_set_arg (GtkObject *o, GtkArg *arg, guint arg_id)
break;
case ARG_JUSTIFICATION:
+ ee->justification = GTK_VALUE_ENUM (*arg);
+ gtk_object_get(item,
+ "clip_width", &width,
+ NULL);
+ switch (ee->justification) {
+ case GTK_JUSTIFY_CENTER:
+ anchor = GTK_ANCHOR_N;
+ e_canvas_item_move_absolute(GNOME_CANVAS_ITEM(ee->item), width / 2, 0);
+ break;
+ case GTK_JUSTIFY_RIGHT:
+ anchor = GTK_ANCHOR_NE;
+ e_canvas_item_move_absolute(GNOME_CANVAS_ITEM(ee->item), width, 0);
+ break;
+ default:
+ anchor = GTK_ANCHOR_NW;
+ e_canvas_item_move_absolute(GNOME_CANVAS_ITEM(ee->item), 0, 0);
+ break;
+ }
gtk_object_set(item,
- "justification", GTK_VALUE_ENUM (*arg),
+ "justification", ee->justification,
+ "anchor", anchor,
NULL);
break;
diff --git a/widgets/text/e-entry.h b/widgets/text/e-entry.h
index ddb6ee8795..5abaf75e86 100644
--- a/widgets/text/e-entry.h
+++ b/widgets/text/e-entry.h
@@ -20,6 +20,7 @@ typedef struct {
GnomeCanvas *canvas;
EText *item;
+ GtkJustification justification;
} EEntry;
typedef struct {