aboutsummaryrefslogtreecommitdiffstats
path: root/widgets/text/e-entry.c
diff options
context:
space:
mode:
Diffstat (limited to 'widgets/text/e-entry.c')
-rw-r--r--widgets/text/e-entry.c78
1 files changed, 29 insertions, 49 deletions
diff --git a/widgets/text/e-entry.c b/widgets/text/e-entry.c
index a297f1d26a..130b66f02d 100644
--- a/widgets/text/e-entry.c
+++ b/widgets/text/e-entry.c
@@ -42,15 +42,8 @@
#include "e-text.h"
#include "e-entry.h"
-#define MOVE_RIGHT_AND_UP 0
-
-#define EVIL_POINTER_WARPING_HACK
-
-#ifdef EVIL_POINTER_WARPING_HACK
-#include <gdk/gdkx.h>
-#endif
-
#define MIN_ENTRY_WIDTH 150
+#define INNER_BORDER 2
#define d(x)
@@ -166,6 +159,30 @@ canvas_size_allocate (GtkWidget *widget, GtkAllocation *alloc,
}
static void
+get_borders (EEntry *entry,
+ gint *xborder,
+ gint *yborder)
+{
+ GtkWidget *widget = GTK_WIDGET (entry);
+ gint focus_width;
+ gboolean interior_focus;
+
+ gtk_widget_style_get (widget,
+ "interior-focus", &interior_focus,
+ "focus-line-width", &focus_width,
+ NULL);
+
+ *xborder = widget->style->xthickness;
+ *yborder = widget->style->ythickness;
+
+ if (!interior_focus)
+ {
+ *xborder += focus_width;
+ *yborder += focus_width;
+ }
+}
+
+static void
canvas_size_request (GtkWidget *widget, GtkRequisition *requisition,
EEntry *entry)
{
@@ -177,10 +194,8 @@ canvas_size_request (GtkWidget *widget, GtkRequisition *requisition,
g_return_if_fail (GNOME_IS_CANVAS (widget));
g_return_if_fail (requisition != NULL);
-
if (entry->priv->draw_borders) {
- xthick = 2 * widget->style->xthickness;
- ythick = 2 * widget->style->ythickness;
+ get_borders (entry, &xthick, &ythick);
} else {
xthick = ythick = 0;
}
@@ -190,7 +205,7 @@ canvas_size_request (GtkWidget *widget, GtkRequisition *requisition,
g_object_get (entry->item,
"text_width", &width,
NULL);
- requisition->width = 2 + xthick + width;
+ requisition->width = 2 + 2 * xthick + width;
} else {
requisition->width = 2 + MIN_ENTRY_WIDTH + xthick;
}
@@ -207,7 +222,7 @@ canvas_size_request (GtkWidget *widget, GtkRequisition *requisition,
requisition->height = (2 +
PANGO_PIXELS (pango_font_metrics_get_ascent (metrics) +
pango_font_metrics_get_descent (metrics)) +
- ythick);
+ 2 * ythick);
pango_font_metrics_unref (metrics);
}
@@ -287,8 +302,6 @@ e_entry_init (GtkObject *object)
entry->priv->emulate_label_resize = FALSE;
- entry->priv->emulate_label_resize = FALSE;
-
entry->canvas = GNOME_CANVAS (e_canvas_new ());
g_signal_connect (entry->canvas,
@@ -500,43 +513,12 @@ e_entry_show_popup (EEntry *entry, gboolean visible)
x = xo + dim->x;
y = yo + dim->height + dim->y;
-#if MOVE_RIGHT_AND_UP
- /* Put our popup slightly to the right and up, to try to give a visual cue that this popup
- is tied to this entry. Otherwise one-row popups can sort of "blend" with an entry
- directly below. */
- fudge = MAX (dim->height/10, 3); /* just in case we are using a really big font, etc. */
- x += 2*fudge;
- y -= fudge;
-#else
fudge = 1;
y -= fudge;
-#endif
+
gtk_widget_set_uposition (pop, x, y);
e_completion_view_set_width (E_COMPLETION_VIEW (entry->priv->completion_view), dim->width);
-#ifdef EVIL_POINTER_WARPING_HACK
- /*
- I should have learned by now to listen to Havoc...
- http://developer.gnome.org/doc/GGAD/faqs.html
- */
-
- if (! entry->priv->popup_is_visible) {
- GdkWindow *gwin = GTK_WIDGET (entry)->window;
- gint xx, yy;
- gdk_window_get_pointer (gwin, &xx, &yy, NULL);
- xx += xo;
- yy += yo;
-
- /* If we are inside the "zone of death" where the popup will appear, warp the pointer to safety.
- This is a horrible thing to do. */
- if (y <= yy && yy < yy + dim->height && x <= xx && xx < xx + dim->width) {
- XWarpPointer (GDK_WINDOW_XDISPLAY (gwin), None, GDK_WINDOW_XWINDOW (gwin),
- 0, 0, 0, 0,
- xx - xo, (y-1) - yo);
- }
- }
-#endif
-
gtk_widget_show (pop);
@@ -584,8 +566,6 @@ e_entry_start_completion (EEntry *entry)
if (entry->priv->completion == NULL)
return;
- e_entry_cancel_delayed_completion (entry);
-
if (e_entry_is_empty (entry))
return;