[Xfce4-commits] [apps/xfce4-screensaver] 368/425: Restore the panel
noreply at xfce.org
noreply at xfce.org
Mon Oct 15 01:53:35 CEST 2018
This is an automated email from the git hooks/post-receive script.
b l u e s a b r e p u s h e d a c o m m i t t o b r a n c h m a s t e r
in repository apps/xfce4-screensaver.
commit a1500bd3b993005ad696bfbda2fc7af8b69598f0
Author: Sean Davis <smd.seandavis at gmail.com>
Date: Sun Oct 7 13:31:08 2018 -0400
Restore the panel
---
data/lock-dialog-default.ui | 347 +++++++++++++++++++++++------------------
src/Makefile.am | 2 +
src/gs-lock-plug.c | 140 +++++++++++------
src/gs-window-x11.c | 5 +-
src/xfce-bg.c | 39 ++++-
src/xfce-bg.h | 6 +
src/xfce4-screensaver-dialog.c | 44 ++++--
7 files changed, 357 insertions(+), 226 deletions(-)
diff --git a/data/lock-dialog-default.ui b/data/lock-dialog-default.ui
index 5cff1fe..58300fe 100644
--- a/data/lock-dialog-default.ui
+++ b/data/lock-dialog-default.ui
@@ -14,183 +14,176 @@
<property name="orientation">vertical</property>
<property name="spacing">6</property>
<child>
- <object class="GtkBox" id="vbox4">
- <property name="name">content_frame</property>
+ <object class="GtkBox" id="content-area">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">18</property>
<property name="margin_right">18</property>
- <property name="margin_top">12</property>
- <property name="spacing">6</property>
- <property name="homogeneous">True</property>
- <child>
- <object class="GtkLabel" id="auth-date-label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label">%s</property>
- <property name="use_markup">True</property>
- <property name="xalign">0</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="auth-time-label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label">%s</property>
- <property name="use_markup">True</property>
- <property name="xalign">1</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkImage" id="auth-face-image">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="valign">end</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkBox" id="vbox3">
- <property name="name">content_frame</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="margin_top">18</property>
<property name="orientation">vertical</property>
<child>
- <object class="GtkLabel" id="auth-realname-label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label"><span size="x-large">%R</span></property>
- <property name="use_markup">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="auth-username-label">
+ <object class="GtkBox" id="user-box">
+ <property name="name">content_frame</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="label"><span size="small">%U on %h</span></property>
- <property name="use_markup">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="status-message-label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="wrap">True</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">3</property>
- </packing>
- </child>
- <child>
- <object class="GtkBox" id="auth-prompt-box">
- <property name="name">content_frame</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="orientation">vertical</property>
- <child>
- <object class="GtkLabel" id="auth-prompt-label">
- <property name="can_focus">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
+ <property name="spacing">12</property>
+ <child>
+ <object class="GtkImage" id="auth-face-image">
+ <property name="name">user_image</property>
+ <property name="width_request">80</property>
+ <property name="height_request">80</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="valign">center</property>
+ <property name="pixel_size">80</property>
+ <property name="icon_name">avatar-default</property>
+ <property name="icon_size">6</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="valign">center</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkLabel" id="auth-realname-label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="tooltip_text" translatable="yes">%U</property>
+ <property name="label"><span size="x-large">%R</span></property>
+ <property name="use_markup">True</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="hbox1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkEntry" id="auth-prompt-entry">
+ <property name="can_focus">True</property>
+ <property name="visibility">False</property>
+ <property name="activates_default">True</property>
+ <property name="primary_icon_activatable">False</property>
+ <property name="secondary_icon_activatable">False</property>
+ <property name="placeholder_text" translatable="yes">Enter your password</property>
+ <property name="input_purpose">password</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="auth-prompt-kbd-layout-indicator">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
</object>
<packing>
<property name="expand">False</property>
- <property name="fill">False</property>
+ <property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
- <object class="GtkBox" id="hbox1">
+ <object class="GtkBox" id="auth-prompt-box">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="spacing">6</property>
+ <property name="orientation">vertical</property>
<child>
- <object class="GtkEntry" id="auth-prompt-entry">
- <property name="can_focus">True</property>
- <property name="margin_left">18</property>
- <property name="margin_right">18</property>
- <property name="visibility">False</property>
- <property name="activates_default">True</property>
- <property name="primary_icon_activatable">False</property>
- <property name="secondary_icon_activatable">False</property>
- <property name="placeholder_text" translatable="yes">Enter your password</property>
- <property name="input_purpose">password</property>
+ <object class="GtkLabel" id="status-message-label">
+ <property name="can_focus">False</property>
+ <property name="no_show_all">True</property>
+ <property name="label" translatable="yes">1</property>
+ <property name="wrap">True</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="auth-prompt-label">
+ <property name="can_focus">False</property>
+ <property name="no_show_all">True</property>
+ <property name="label" translatable="yes">2</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
<property name="position">1</property>
</packing>
</child>
<child>
- <object class="GtkBox" id="auth-prompt-kbd-layout-indicator">
- <property name="visible">True</property>
+ <object class="GtkLabel" id="auth-capslock-label">
<property name="can_focus">False</property>
- <child>
- <placeholder/>
- </child>
+ <property name="no_show_all">True</property>
+ <property name="label" translatable="yes">You have the Caps Lock key on.</property>
</object>
<packing>
<property name="expand">False</property>
- <property name="fill">True</property>
+ <property name="fill">False</property>
<property name="position">2</property>
</packing>
</child>
+ <child>
+ <object class="GtkLabel" id="auth-status-label">
+ <property name="can_focus">False</property>
+ <property name="no_show_all">True</property>
+ <property name="label" translatable="yes">3</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="auth-capslock-label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
<property name="position">2</property>
</packing>
</child>
@@ -198,22 +191,11 @@
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
- <property name="position">4</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="auth-status-label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">5</property>
+ <property name="position">0</property>
</packing>
</child>
<child>
- <object class="GtkBox">
+ <object class="GtkBox" id="action-buttons">
<property name="name">buttonbox_frame</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
@@ -224,8 +206,7 @@
<property name="can_focus">False</property>
<property name="margin_left">12</property>
<property name="margin_right">12</property>
- <property name="margin_top">6</property>
- <property name="margin_bottom">24</property>
+ <property name="margin_bottom">12</property>
<property name="spacing">6</property>
<property name="layout_style">end</property>
<child>
@@ -317,4 +298,60 @@
<class name="lightdm-gtk-greeter"/>
</style>
</object>
+ <object class="GtkOverlay" id="lock-overlay">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkImage" id="lock-image">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="stock">gtk-missing-image</property>
+ </object>
+ <packing>
+ <property name="index">-1</property>
+ </packing>
+ </child>
+ </object>
+ <object class="GtkBox" id="lock-panel">
+ <property name="name">panel_window</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkLabel" id="auth-hostname-label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_left">6</property>
+ <property name="label" translatable="yes">%h</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <object class="GtkLabel" id="auth-date-time-label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_right">6</property>
+ <property name="label" translatable="yes">%s</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack_type">end</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <style>
+ <class name="background"/>
+ </style>
+ </object>
</interface>
diff --git a/src/Makefile.am b/src/Makefile.am
index a23ed54..939d6f8 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -154,6 +154,8 @@ xfce4_screensaver_dialog_SOURCES = \
xfcekbd-desktop-config.h \
xfcekbd-keyboard-config.c \
xfcekbd-keyboard-config.h \
+ xfce-bg.c \
+ xfce-bg.h \
desktop-entries.c \
desktop-entries.h \
menu-layout.c \
diff --git a/src/gs-lock-plug.c b/src/gs-lock-plug.c
index 40627ed..5f6fb82 100644
--- a/src/gs-lock-plug.c
+++ b/src/gs-lock-plug.c
@@ -49,6 +49,7 @@
#include "gs-lock-plug.h"
#include "gs-debug.h"
+#include "xfce-bg.h"
#define GSETTINGS_SCHEMA "org.xfce.screensaver"
@@ -78,8 +79,7 @@ struct GSLockPlugPrivate
GtkWidget *auth_action_area;
GtkWidget *auth_face_image;
- GtkWidget *auth_time_label;
- GtkWidget *auth_date_label;
+ GtkWidget *auth_datetime_label;
GtkWidget *auth_realname_label;
GtkWidget *auth_username_label;
GtkWidget *auth_prompt_label;
@@ -271,6 +271,11 @@ set_status_text (GSLockPlug *plug,
if (plug->priv->auth_message_label != NULL)
{
gtk_label_set_text (GTK_LABEL (plug->priv->auth_message_label), text);
+ if (g_utf8_strlen (text, 1) == 0) {
+ gtk_widget_hide (GTK_WIDGET (plug->priv->auth_message_label));
+ } else {
+ gtk_widget_show (GTK_WIDGET (plug->priv->auth_message_label));
+ }
}
}
@@ -278,27 +283,18 @@ static void
date_time_update (GSLockPlug *plug)
{
GDateTime *datetime;
- gchar *time;
+ gchar *datetime_format;
gchar *date;
gchar *str;
datetime = g_date_time_new_now_local ();
- time = g_date_time_format (datetime, "%X");
- /* Translators: Date format, see https://developer.gnome.org/glib/stable/glib-GDateTime.html#g-date-time-format */
- date = g_date_time_format (datetime, _("%A, %B %e"));
-
- str = g_strdup_printf ("<span size=\"xx-large\" weight=\"ultrabold\">%s</span>", time);
- gtk_label_set_text (GTK_LABEL (plug->priv->auth_time_label), str);
- gtk_label_set_use_markup (GTK_LABEL (plug->priv->auth_time_label), TRUE);
- g_free (str);
+ datetime_format = g_date_time_format (datetime, _("%A, %B %e %X"));
- str = g_strdup_printf ("<span size=\"large\">%s</span>", date);
- gtk_label_set_markup (GTK_LABEL (plug->priv->auth_date_label), str);
- gtk_label_set_use_markup (GTK_LABEL (plug->priv->auth_date_label), TRUE);
+ str = g_strdup_printf ("%s", datetime_format);
+ gtk_label_set_text (GTK_LABEL (plug->priv->auth_datetime_label), str);
g_free (str);
- g_free (time);
- g_free (date);
+ g_free (datetime_format);
g_date_time_unref (datetime);
}
@@ -417,13 +413,11 @@ capslock_update (GSLockPlug *plug,
if (is_on)
{
- gtk_label_set_text (GTK_LABEL (plug->priv->auth_capslock_label),
- _("You have the Caps Lock key on."));
+ gtk_widget_show (GTK_WIDGET (plug->priv->auth_capslock_label));
}
else
{
- gtk_label_set_text (GTK_LABEL (plug->priv->auth_capslock_label),
- "");
+ gtk_widget_hide (GTK_WIDGET (plug->priv->auth_capslock_label));
}
}
@@ -1413,8 +1407,14 @@ gs_lock_plug_enable_prompt (GSLockPlug *plug,
gtk_widget_set_sensitive (plug->priv->auth_unlock_button, TRUE);
gtk_widget_show (plug->priv->auth_unlock_button);
gtk_widget_grab_default (plug->priv->auth_unlock_button);
- gtk_label_set_text (GTK_LABEL (plug->priv->auth_prompt_label), message);
- gtk_widget_show (plug->priv->auth_prompt_label);
+
+ gtk_label_set_text(GTK_LABEL(plug->priv->auth_prompt_label), message);
+ if (g_utf8_strlen(message, -1) == 0) {
+ gtk_widget_hide (GTK_WIDGET (plug->priv->auth_prompt_label));
+ } else {
+ gtk_widget_show (GTK_WIDGET (plug->priv->auth_prompt_label));
+ }
+
gtk_entry_set_visibility (GTK_ENTRY (plug->priv->auth_prompt_entry), visible);
gtk_widget_set_sensitive (plug->priv->auth_prompt_entry, TRUE);
gtk_widget_show (plug->priv->auth_prompt_entry);
@@ -1754,22 +1754,6 @@ create_page_one (GSLockPlug *plug)
vbox2 = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
gtk_box_pack_start (GTK_BOX (vbox), vbox2, FALSE, FALSE, 0);
- str = g_strdup ("<span size=\"xx-large\" weight=\"ultrabold\">%s</span>");
- plug->priv->auth_time_label = gtk_label_new (str);
- g_free (str);
- gtk_label_set_xalign (GTK_LABEL (plug->priv->auth_time_label), 0.5);
- gtk_label_set_yalign (GTK_LABEL (plug->priv->auth_time_label), 0.5);
- gtk_label_set_use_markup (GTK_LABEL (plug->priv->auth_time_label), TRUE);
- gtk_box_pack_start (GTK_BOX (vbox2), plug->priv->auth_time_label, FALSE, FALSE, 0);
-
- str = g_strdup ("<span size=\"large\">%s</span>");
- plug->priv->auth_date_label = gtk_label_new (str);
- g_free (str);
- gtk_label_set_xalign (GTK_LABEL (plug->priv->auth_date_label), 0.5);
- gtk_label_set_yalign (GTK_LABEL (plug->priv->auth_date_label), 0.5);
- gtk_label_set_use_markup (GTK_LABEL (plug->priv->auth_date_label), TRUE);
- gtk_box_pack_start (GTK_BOX (vbox2), plug->priv->auth_date_label, FALSE, FALSE, 0);
-
plug->priv->auth_face_image = gtk_image_new ();
gtk_box_pack_start (GTK_BOX (vbox), plug->priv->auth_face_image, TRUE, TRUE, 0);
gtk_widget_set_halign (plug->priv->auth_face_image, GTK_ALIGN_CENTER);
@@ -1803,7 +1787,7 @@ create_page_one (GSLockPlug *plug)
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0);
- plug->priv->auth_prompt_label = gtk_label_new_with_mnemonic (_("_Password:"));
+ plug->priv->auth_prompt_label = gtk_label_new (_("Please enter your password."));
gtk_box_pack_start (GTK_BOX (hbox), plug->priv->auth_prompt_label, FALSE, FALSE, 0);
plug->priv->auth_prompt_entry = gtk_entry_new ();
@@ -1812,11 +1796,6 @@ create_page_one (GSLockPlug *plug)
gtk_label_set_mnemonic_widget (GTK_LABEL (plug->priv->auth_prompt_label),
plug->priv->auth_prompt_entry);
- plug->priv->auth_capslock_label = gtk_label_new ("");
- gtk_label_set_xalign (GTK_LABEL (plug->priv->auth_capslock_label), 0.5);
- gtk_label_set_yalign (GTK_LABEL (plug->priv->auth_capslock_label), 0.5);
- gtk_box_pack_start (GTK_BOX (vbox2), plug->priv->auth_capslock_label, FALSE, FALSE, 0);
-
/* Status text */
plug->priv->auth_message_label = gtk_label_new (NULL);
@@ -1881,6 +1860,44 @@ get_dialog_theme_name (GSLockPlug *plug)
return name;
}
+static void
+get_draw_dimensions(GSLockPlug *plug,
+ XfceBG *bg,
+ gint *screen_width,
+ gint *screen_height,
+ gint *monitor_width,
+ gint *monitor_height)
+{
+ GdkWindow *window;
+ GdkDisplay *display;
+ GdkScreen *screen;
+ GdkMonitor *monitor;
+ GdkRectangle geometry;
+ gint scale;
+
+ window = gtk_widget_get_window (GTK_WIDGET(plug));
+ if (window != NULL) {
+ display = gdk_window_get_display(window);
+ } else {
+ display = gdk_display_get_default();
+ }
+ screen = gdk_display_get_default_screen(display);
+ scale = gdk_window_get_scale_factor(gdk_screen_get_root_window(screen));
+ if (window != NULL) {
+ monitor = gdk_display_get_monitor_at_window(display, window);
+ } else {
+ monitor = gdk_display_get_primary_monitor (display);
+ }
+
+ xfce_bg_load_from_preferences(bg, monitor);
+
+ gdk_monitor_get_geometry(monitor, &geometry);
+ *monitor_width = geometry.width / scale;
+ *monitor_height = geometry.height / scale;
+ *screen_width = WidthOfScreen(gdk_x11_screen_get_xscreen(screen)) / scale;
+ *screen_height = HeightOfScreen(gdk_x11_screen_get_xscreen(screen)) / scale;
+}
+
static gboolean
load_theme (GSLockPlug *plug)
{
@@ -1889,9 +1906,16 @@ load_theme (GSLockPlug *plug)
char *gtkbuilder;
char *css;
GtkBuilder *builder;
+ GtkWidget *lock_overlay;
+ GtkWidget *lock_panel;
GtkWidget *lock_dialog;
+ GtkWidget *bg_image;
GError *error=NULL;
+ XfceBG *bg;
+ GdkPixbuf *pixbuf;
+ gint screen_width, screen_height, monitor_width, monitor_height;
+
theme = get_dialog_theme_name (plug);
if (theme == NULL)
{
@@ -1930,17 +1954,34 @@ load_theme (GSLockPlug *plug)
}
g_free (gtkbuilder);
- lock_dialog = GTK_WIDGET (gtk_builder_get_object(builder, "lock-dialog"));
- gtk_container_add (GTK_CONTAINER (plug), lock_dialog);
+ bg_image = GTK_WIDGET (gtk_builder_get_object(builder, "lock-image"));
+
+ bg = xfce_bg_new();
+ get_draw_dimensions(plug, bg, &screen_width, &screen_height, &monitor_width, &monitor_height);
+ pixbuf = xfce_bg_get_pixbuf(bg, screen_width, screen_height, monitor_width, monitor_height);
+ gtk_image_set_from_pixbuf (GTK_IMAGE(bg_image), pixbuf);
+
+ lock_overlay = GTK_WIDGET(gtk_builder_get_object(builder, "lock-overlay"));
+ lock_panel = GTK_WIDGET(gtk_builder_get_object(builder, "lock-panel"));
+ lock_dialog = GTK_WIDGET(gtk_builder_get_object(builder, "lock-dialog"));
+
+ gtk_widget_set_halign(GTK_WIDGET(lock_panel), GTK_ALIGN_FILL);
+ gtk_widget_set_valign(GTK_WIDGET(lock_panel), GTK_ALIGN_START);
+ gtk_overlay_add_overlay(GTK_OVERLAY(lock_overlay), GTK_WIDGET(lock_panel));
+
+ gtk_widget_set_halign(GTK_WIDGET(lock_dialog), GTK_ALIGN_CENTER);
+ gtk_widget_set_valign(GTK_WIDGET(lock_dialog), GTK_ALIGN_CENTER);
+ gtk_overlay_add_overlay(GTK_OVERLAY(lock_overlay), GTK_WIDGET(lock_dialog));
+
+ gtk_container_add(GTK_CONTAINER(plug), lock_overlay);
plug->priv->vbox = NULL;
plug->priv->auth_face_image = GTK_WIDGET (gtk_builder_get_object(builder, "auth-face-image"));
plug->priv->auth_action_area = GTK_WIDGET (gtk_builder_get_object(builder, "auth-action-area"));
- plug->priv->auth_time_label = GTK_WIDGET (gtk_builder_get_object(builder, "auth-time-label"));
- plug->priv->auth_date_label = GTK_WIDGET (gtk_builder_get_object(builder, "auth-date-label"));
+ plug->priv->auth_datetime_label = GTK_WIDGET (gtk_builder_get_object(builder, "auth-date-time-label"));
plug->priv->auth_realname_label = GTK_WIDGET (gtk_builder_get_object(builder, "auth-realname-label"));
- plug->priv->auth_username_label = GTK_WIDGET (gtk_builder_get_object(builder, "auth-username-label"));
+ plug->priv->auth_username_label = GTK_WIDGET (gtk_builder_get_object(builder, "auth-hostname-label"));
plug->priv->auth_prompt_label = GTK_WIDGET (gtk_builder_get_object(builder, "auth-prompt-label"));
plug->priv->auth_prompt_entry = GTK_WIDGET (gtk_builder_get_object(builder, "auth-prompt-entry"));
plug->priv->auth_prompt_box = GTK_WIDGET (gtk_builder_get_object(builder, "auth-prompt-box"));
@@ -2096,6 +2137,7 @@ gs_lock_plug_init (GSLockPlug *plug)
{
gtk_label_set_text (GTK_LABEL (plug->priv->status_message_label),
plug->priv->status_message);
+ gtk_widget_show (plug->priv->status_message_label);
}
else
{
diff --git a/src/gs-window-x11.c b/src/gs-window-x11.c
index 46731e2..bc9c333 100644
--- a/src/gs-window-x11.c
+++ b/src/gs-window-x11.c
@@ -1695,7 +1695,10 @@ popup_dialog (GSWindow *window)
command = g_string_new (tmp);
g_free (tmp);
- if (is_logout_enabled (window))
+ g_string_append_printf(command, " --height='%i'", window->priv->geometry.height);
+ g_string_append_printf(command, " --width='%i'", window->priv->geometry.width);
+
+ if (is_logout_enabled(window))
{
command = g_string_append (command, " --enable-logout");
g_string_append_printf (command, " --logout-command='%s'", window->priv->logout_command);
diff --git a/src/xfce-bg.c b/src/xfce-bg.c
index 77ce925..e34ebff 100644
--- a/src/xfce-bg.c
+++ b/src/xfce-bg.c
@@ -909,8 +909,7 @@ draw_once (XfceBG *bg,
static void
xfce_bg_draw (XfceBG *bg,
- GdkPixbuf *dest,
- GdkScreen *screen)
+ GdkPixbuf *dest)
{
if (!bg)
return;
@@ -981,6 +980,36 @@ xfce_bg_create_surface (XfceBG *bg,
1);
}
+GdkPixbuf *
+xfce_bg_get_pixbuf(XfceBG *bg,
+ int screen_width,
+ int screen_height,
+ int monitor_width,
+ int monitor_height)
+{
+ GdkPixbuf *pixbuf;
+ gint width;
+ gint height;
+
+ if (bg->placement == XFCE_BG_PLACEMENT_SPANNED)
+ {
+ width = screen_width;
+ height = screen_height;
+ }
+ else
+ {
+ width = monitor_width;
+ height = monitor_height;
+ }
+
+ pixbuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB, FALSE, 8,
+ width, height);
+
+ xfce_bg_draw(bg, pixbuf);
+
+ return pixbuf;
+}
+
/**
* xfce_bg_create_surface:
* @bg: XfceBG
@@ -1038,11 +1067,7 @@ xfce_bg_create_surface_scale (XfceBG *bg,
}
else
{
- GdkPixbuf *pixbuf;
-
- pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB, FALSE, 8,
- width, height);
- xfce_bg_draw (bg, pixbuf, gdk_window_get_screen (window));
+ GdkPixbuf *pixbuf = xfce_bg_get_pixbuf(bg, screen_width, screen_height, monitor_width, monitor_height);
gdk_cairo_set_source_pixbuf (cr, pixbuf, 0, 0);
g_object_unref (pixbuf);
}
diff --git a/src/xfce-bg.h b/src/xfce-bg.h
index 435e122..c8321d6 100644
--- a/src/xfce-bg.h
+++ b/src/xfce-bg.h
@@ -89,6 +89,12 @@ cairo_surface_t *xfce_bg_create_surface (XfceBG *bg,
int monitor_width,
int monitor_height);
+GdkPixbuf *xfce_bg_get_pixbuf(XfceBG *bg,
+ int screen_width,
+ int screen_height,
+ int monitor_width,
+ int monitor_height);
+
G_END_DECLS
#endif
diff --git a/src/xfce4-screensaver-dialog.c b/src/xfce4-screensaver-dialog.c
index 686ea62..f464628 100644
--- a/src/xfce4-screensaver-dialog.c
+++ b/src/xfce4-screensaver-dialog.c
@@ -43,12 +43,16 @@
#include "gs-debug.h"
+#include <xfconf/xfconf.h>
+
#define MAX_FAILURES 5
static gboolean verbose = FALSE;
static gboolean show_version = FALSE;
static gboolean enable_logout = FALSE;
static gboolean enable_switch = FALSE;
+static gint dialog_height = 0;
+static gint dialog_width = 0;
static char* logout_command = NULL;
static char* status_message = NULL;
static char* away_message = NULL;
@@ -61,6 +65,8 @@ static GOptionEntry entries[] = {
{"enable-switch", 0, 0, G_OPTION_ARG_NONE, &enable_switch, N_("Show the switch user button"), NULL},
{"status-message", 0, 0, G_OPTION_ARG_STRING, &status_message, N_("Message to show in the dialog"), N_("MESSAGE")},
{"away-message", 0, 0, G_OPTION_ARG_STRING, &away_message, N_("Not used"), N_("MESSAGE")},
+ {"height", 0, 0, G_OPTION_ARG_INT, &dialog_height, N_("Monitor height"), NULL},
+ {"width", 0, 0, G_OPTION_ARG_INT, &dialog_width, N_("Monitor width"), NULL},
{NULL}
};
@@ -162,25 +168,25 @@ static const char* maybe_translate_message(const char* msg)
some of these messages to be more sane. */
hash = g_hash_table_new (g_str_hash, g_str_equal);
/* login: is whacked always translate to Username: */
- g_hash_table_insert(hash, "login:", _("Username:"));
- g_hash_table_insert(hash, "Username:", _("Username:"));
- g_hash_table_insert(hash, "username:", _("Username:"));
- g_hash_table_insert(hash, "Password:", _("Password:"));
- g_hash_table_insert(hash, "password:", _("Password:"));
+ g_hash_table_insert(hash, "login:", _("Please enter your username."));
+ g_hash_table_insert(hash, "Username:", _("Please enter your username."));
+ g_hash_table_insert(hash, "username:", _("Please enter your username."));
+ g_hash_table_insert(hash, "Password:", "");
+ g_hash_table_insert(hash, "password:", "");
g_hash_table_insert(hash, "You are required to change your password immediately (password aged)", _("You are required to change your password immediately (password aged)"));
g_hash_table_insert(hash, "You are required to change your password immediately (root enforced)", _("You are required to change your password immediately (root enforced)"));
g_hash_table_insert(hash, "Your account has expired; please contact your system administrator", _("Your account has expired; please contact your system administrator"));
- g_hash_table_insert(hash, "No password supplied", _("No password supplied"));
- g_hash_table_insert(hash, "Password unchanged", _("Password unchanged"));
- g_hash_table_insert(hash, "Can not get username", _("Can not get username"));
- g_hash_table_insert(hash, "Retype new UNIX password:", _("Retype new UNIX password:"));
- g_hash_table_insert(hash, "Enter new UNIX password:", _("Enter new UNIX password:"));
- g_hash_table_insert(hash, "(current) UNIX password:", _("(current) UNIX password:"));
+ g_hash_table_insert(hash, "No password supplied", _("No password supplied."));
+ g_hash_table_insert(hash, "Password unchanged", _("Password unchanged."));
+ g_hash_table_insert(hash, "Can not get username", _("Can not get username."));
+ g_hash_table_insert(hash, "Retype new UNIX password:", _("Retype your new password."));
+ g_hash_table_insert(hash, "Enter new UNIX password:", _("Enter your new password."));
+ g_hash_table_insert(hash, "(current) UNIX password:", _("Enter your current password:"));
g_hash_table_insert(hash, "Error while changing NIS password.", _("Error while changing NIS password."));
- g_hash_table_insert(hash, "You must choose a longer password", _("You must choose a longer password"));
+ g_hash_table_insert(hash, "You must choose a longer password", _("You must choose a longer password."));
g_hash_table_insert(hash, "Password has been already used. Choose another.", _("Password has been already used. Choose another."));
- g_hash_table_insert(hash, "You must wait longer to change your password", _("You must wait longer to change your password"));
- g_hash_table_insert(hash, "Sorry, passwords do not match", _("Sorry, passwords do not match"));
+ g_hash_table_insert(hash, "You must wait longer to change your password", _("You must wait longer to change your password."));
+ g_hash_table_insert(hash, "Sorry, passwords do not match", _("Sorry, passwords do not match."));
/* FIXME: what about messages which have some variables in them, perhaps try to do those as well */
}
@@ -404,6 +410,8 @@ static gboolean popup_dialog_idle(void)
g_object_set(widget, "status-message", status_message, NULL);
}
+ gtk_widget_set_size_request(widget, dialog_width, dialog_height);
+
g_signal_connect(GS_LOCK_PLUG(widget), "response", G_CALLBACK(response_cb), NULL);
g_signal_connect(widget, "show", G_CALLBACK(show_cb), NULL);
@@ -575,6 +583,14 @@ int main(int argc, char** argv)
exit(1);
}
+ if (!xfconf_init(&error))
+ {
+ g_error("Failed to connect to xfconf daemon: %s.", error->message);
+ g_error_free(error);
+
+ exit(1);
+ }
+
if (show_version)
{
g_print("%s %s\n", argv[0], VERSION);
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the Xfce4-commits
mailing list