summaryrefslogtreecommitdiff
path: root/gtk/gtkpasswordentry.c
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2020-10-22 14:27:19 -0400
committerMatthias Clasen <mclasen@redhat.com>2020-10-22 14:27:19 -0400
commite5722fe9d2b53c5790fe94cd2558dfc1195db59d (patch)
tree903069bad65f6c3b09e56ca5e3513138e4750c34 /gtk/gtkpasswordentry.c
parent700f957d9a9b26cdcacc99eb7fa89dfaca5e2cf1 (diff)
downloadgtk+-e5722fe9d2b53c5790fe94cd2558dfc1195db59d.tar.gz
passwordentry: Respect border spacing
We are not using a box layout here since we want to ignore the icons for measuring. But we still want the layout to respect border spacing that comes from the theme.
Diffstat (limited to 'gtk/gtkpasswordentry.c')
-rw-r--r--gtk/gtkpasswordentry.c20
1 files changed, 14 insertions, 6 deletions
diff --git a/gtk/gtkpasswordentry.c b/gtk/gtkpasswordentry.c
index 8ac1cd3ade..1babb6a2f7 100644
--- a/gtk/gtkpasswordentry.c
+++ b/gtk/gtkpasswordentry.c
@@ -34,6 +34,9 @@
#include "gtkpasswordentrybufferprivate.h"
#include "gtkprivate.h"
#include "gtkwidgetprivate.h"
+#include "gtkcsspositionvalueprivate.h"
+#include "gtkstylecontextprivate.h"
+
/**
* SECTION:gtkpasswordentry
@@ -350,7 +353,7 @@ gtk_password_entry_measure (GtkWidget *widget,
gtk_widget_measure (entry->icon, orientation, for_size,
&icon_min, &icon_nat,
NULL, NULL);
-
+
if (entry->peek_icon && gtk_widget_get_visible (entry->peek_icon))
gtk_widget_measure (entry->peek_icon, orientation, for_size,
&icon_min, &icon_nat,
@@ -364,21 +367,26 @@ gtk_password_entry_size_allocate (GtkWidget *widget,
int baseline)
{
GtkPasswordEntry *entry = GTK_PASSWORD_ENTRY (widget);
+ GtkCssStyle *style = gtk_css_node_get_style (gtk_widget_get_css_node (widget));
int icon_min = 0, icon_nat = 0;
int peek_min = 0, peek_nat = 0;
int text_width;
+ int spacing;
+
+ spacing = _gtk_css_position_value_get_x (style->size->border_spacing, 100);
if (entry->icon && gtk_widget_get_visible (entry->icon))
gtk_widget_measure (entry->icon, GTK_ORIENTATION_HORIZONTAL, -1,
&icon_min, &icon_nat,
NULL, NULL);
-
+
if (entry->peek_icon && gtk_widget_get_visible (entry->peek_icon))
gtk_widget_measure (entry->peek_icon, GTK_ORIENTATION_HORIZONTAL, -1,
&peek_min, &peek_nat,
NULL, NULL);
-
- text_width = width - icon_nat - peek_nat;
+
+ text_width = width - (icon_nat + (icon_nat > 0 ? spacing : 0))
+ - (peek_nat + (peek_nat > 0 ? spacing : 0));
gtk_widget_size_allocate (entry->entry,
&(GtkAllocation) { 0, 0, text_width, height },
@@ -386,12 +394,12 @@ gtk_password_entry_size_allocate (GtkWidget *widget,
if (entry->icon && gtk_widget_get_visible (entry->icon))
gtk_widget_size_allocate (entry->icon,
- &(GtkAllocation) { text_width, 0, icon_nat, height },
+ &(GtkAllocation) { text_width + spacing, 0, icon_nat, height },
baseline);
if (entry->peek_icon && gtk_widget_get_visible (entry->peek_icon))
gtk_widget_size_allocate (entry->peek_icon,
- &(GtkAllocation) { text_width + icon_nat, 0, peek_nat, height },
+ &(GtkAllocation) { text_width + spacing + icon_nat + (icon_nat > 0 ? spacing : 0), 0, peek_nat, height },
baseline);
}