summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--NEWS4
-rw-r--r--configure.ac18
-rw-r--r--src/greeterbackground.c65
-rw-r--r--src/greetermenubar.c154
-rw-r--r--src/greetermenubar.h4
-rw-r--r--src/lightdm-gtk-greeter.c316
-rw-r--r--src/lightdm-gtk-greeter.glade191
7 files changed, 183 insertions, 569 deletions
diff --git a/NEWS b/NEWS
index a96a75e..f102915 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,7 @@
+Overview of changes in lightdm-gtk-greeter 1.9.0
+
+ * Drop Gtk2 support
+
Overview of changes in lightdm-gtk-greeter 1.8.6
* New features:
diff --git a/configure.ac b/configure.ac
index a42e746..74165a0 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,6 +1,6 @@
dnl Process this file with autoconf to produce a configure script.
-AC_INIT(lightdm-gtk-greeter, 1.8.6)
+AC_INIT(lightdm-gtk-greeter, 1.9.0)
AC_CONFIG_MACRO_DIR(m4)
AC_CONFIG_HEADER(config.h)
AM_INIT_AUTOMAKE
@@ -23,12 +23,7 @@ dnl ###########################################################################
dnl Dependencies
dnl ###########################################################################
-AC_ARG_WITH([gtk2], AS_HELP_STRING([--with-gtk2], [Use gtk+-2.0 instead of gtk+-3.0]))
-
-AS_IF([test "x$with_gtk2" = "xyes"],
- [PKG_CHECK_MODULES([GTK], [gtk+-2.0], [have_gtk2=yes])],
- [PKG_CHECK_MODULES([GTK], [gtk+-3.0])])
-
+PKG_CHECK_MODULES([GTK], [gtk+-3.0])
PKG_CHECK_MODULES([GMODULE], [gmodule-export-2.0])
PKG_CHECK_MODULES([LIGHTDMGOBJECT], [liblightdm-gobject-1 >= 1.3.5])
PKG_CHECK_MODULES([LIBX11], [x11])
@@ -38,13 +33,8 @@ dnl Optional dependencies
dnl ###########################################################################
INDICATOR_REQUIRED_VERSION=0.3.92
-
-AS_IF([test "x$have_gtk2" = "xyes"],
- [INDICATOR_PKG=indicator-0.4],
- [
- INDICATOR_PKG=indicator3-0.4
- IDO_PKG=libido3-0.1
- ])
+INDICATOR_PKG=indicator3-0.4
+IDO_PKG=libido3-0.1
AC_ARG_ENABLE([libindicator],
AC_HELP_STRING([--enable-libindicator], [Enable libindicator support])
diff --git a/src/greeterbackground.c b/src/greeterbackground.c
index 913c659..145d0fc 100644
--- a/src/greeterbackground.c
+++ b/src/greeterbackground.c
@@ -41,11 +41,7 @@ typedef struct
BackgroundType type;
union
{
- #if GTK_CHECK_VERSION (3, 0, 0)
GdkRGBA color;
- #else
- GdkColor color;
- #endif
struct
{
gchar *path;
@@ -70,11 +66,7 @@ typedef struct
union
{
GdkPixbuf* image;
- #if GTK_CHECK_VERSION (3, 0, 0)
GdkRGBA color;
- #else
- GdkColor color;
- #endif
} options;
} Background;
@@ -163,11 +155,7 @@ static const MonitorConfig DEFAULT_MONITOR_CONFIG =
.type = BACKGROUND_TYPE_COLOR,
.options =
{
- #if GTK_CHECK_VERSION (3, 0, 0)
.color = {.red = 0.0, .green = 0.0, .blue = 0.0, .alpha = 1.0}
- #else
- .color = {.pixel = 0, .red = 0, .green = 0, .blue = 0}
- #endif
}
},
.user_bg = TRUE,
@@ -248,18 +236,12 @@ static void monitor_set_background (Monitor* monitor,
const Background* background);
static void monitor_draw_background (const Monitor* monitor,
cairo_t* cr);
-#if GTK_CHECK_VERSION(3, 0, 0)
static gboolean monitor_window_draw_cb (GtkWidget* widget,
cairo_t* cr,
const Monitor* monitor);
static gboolean monitor_subwindow_draw_cb (GtkWidget* widget,
cairo_t* cr,
GreeterBackground* background);
-#else
-static gboolean monitor_window_expose_cb (GtkWidget* widget,
- GdkEventExpose *event,
- const Monitor* monitor);
-#endif
static gboolean monitor_window_enter_notify_cb (GtkWidget* widget,
GdkEventCrossing* event,
const Monitor* monitor);
@@ -502,15 +484,9 @@ greeter_background_connect(GreeterBackground* background,
gtk_widget_set_size_request(GTK_WIDGET(monitor->window), monitor->geometry.width, monitor->geometry.height);
gtk_window_move(monitor->window, monitor->geometry.x, monitor->geometry.y);
gtk_widget_show(GTK_WIDGET(monitor->window));
- #if GTK_CHECK_VERSION(3, 0, 0)
monitor->window_draw_handler_id = g_signal_connect(G_OBJECT(monitor->window), "draw",
G_CALLBACK(monitor_window_draw_cb),
monitor);
- #else
- monitor->window_draw_handler_id = g_signal_connect(G_OBJECT(monitor->window), "expose-event",
- G_CALLBACK(monitor_window_expose_cb),
- monitor);
- #endif
if(priv->follow_cursor)
g_signal_connect(G_OBJECT(monitor->window), "enter-notify-event",
G_CALLBACK(monitor_window_enter_notify_cb), monitor);
@@ -697,13 +673,9 @@ greeter_background_get_cursor_position(GreeterBackground* background,
GreeterBackgroundPrivate* priv = background->priv;
GdkDisplay* display = gdk_screen_get_display(priv->screen);
- #if GTK_CHECK_VERSION(3, 0, 0)
GdkDeviceManager* device_manager = gdk_display_get_device_manager(display);
GdkDevice* device = gdk_device_manager_get_client_pointer(device_manager);
gdk_device_get_position(device, NULL, x, y);
- #else
- gdk_display_get_pointer(display, NULL, x, y, NULL);
- #endif
}
static void
@@ -713,12 +685,8 @@ greeter_background_set_cursor_position(GreeterBackground* background,
GreeterBackgroundPrivate* priv = background->priv;
GdkDisplay* display = gdk_screen_get_display(priv->screen);
- #if GTK_CHECK_VERSION(3, 0, 0)
GdkDeviceManager* device_manager = gdk_display_get_device_manager(display);
gdk_device_warp(gdk_device_manager_get_client_pointer(device_manager), priv->screen, x, y);
- #else
- gdk_display_warp_pointer(display, priv->screen, x, y);
- #endif
}
static void
@@ -831,9 +799,7 @@ void greeter_background_add_subwindow(GreeterBackground* background,
if(!g_slist_find(priv->greeter_windows, window))
{
priv->greeter_windows = g_slist_prepend(priv->greeter_windows, window);
- #if GTK_CHECK_VERSION (3, 0, 0)
g_signal_connect(G_OBJECT(window), "draw", G_CALLBACK(monitor_subwindow_draw_cb), background);
- #endif
}
if(priv->screen)
@@ -851,11 +817,9 @@ void greeter_background_remove_subwindow(GreeterBackground* background,
GSList* item = g_slist_find(priv->greeter_windows, window);
if(item)
{
- #if GTK_CHECK_VERSION (3, 0, 0)
g_object_disconnect(G_OBJECT(window),
"any-signal", G_CALLBACK(monitor_subwindow_draw_cb), background,
NULL);
- #endif
priv->greeter_windows = g_slist_delete_link(priv->greeter_windows, item);
}
}
@@ -944,11 +908,7 @@ background_config_initialize(BackgroundConfig* config,
return FALSE;
if(g_strcmp0(value, BACKGROUND_TYPE_SKIP_VALUE) == 0)
config->type = BACKGROUND_TYPE_SKIP;
- #if GTK_CHECK_VERSION (3, 0, 0)
else if(gdk_rgba_parse(&config->options.color, value))
- #else
- else if(gdk_color_parse(value, &config->options.color))
- #endif
config->type = BACKGROUND_TYPE_COLOR;
else
{
@@ -1078,41 +1038,21 @@ monitor_draw_background(const Monitor* monitor,
else if(monitor->background->type == BACKGROUND_TYPE_COLOR)
{
cairo_rectangle(cr, 0, 0, monitor->geometry.width, monitor->geometry.height);
- #if GTK_CHECK_VERSION (3, 0, 0)
gdk_cairo_set_source_rgba(cr, &monitor->background->options.color);
- #else
- gdk_cairo_set_source_color(cr, &monitor->background->options.color);
- #endif
cairo_fill(cr);
}
}
-#if GTK_CHECK_VERSION (3, 0, 0)
static gboolean
monitor_window_draw_cb(GtkWidget* widget,
cairo_t* cr,
const Monitor* monitor)
-#else
-static gboolean
-monitor_window_expose_cb(GtkWidget* widget,
- GdkEventExpose *event,
- const Monitor* monitor)
-#endif
{
if(monitor->background)
- {
- #if GTK_CHECK_VERSION (3, 0, 0)
- monitor_draw_background(monitor, cr);
- #else
- cairo_t *cr = gdk_cairo_create(gtk_widget_get_window(widget));
monitor_draw_background(monitor, cr);
- cairo_destroy(cr);
- #endif
- }
return FALSE;
}
-#if GTK_CHECK_VERSION (3, 0, 0)
static gboolean
monitor_subwindow_draw_cb(GtkWidget* widget,
cairo_t* cr,
@@ -1132,7 +1072,6 @@ monitor_subwindow_draw_cb(GtkWidget* widget,
}
return FALSE;
}
-#endif
static gboolean
monitor_window_enter_notify_cb(GtkWidget* widget,
@@ -1306,11 +1245,7 @@ set_root_pixmap_id(GdkScreen* screen,
}
XSync (display, False);
-#if GTK_CHECK_VERSION (3, 0, 0)
gdk_error_trap_pop_ignored ();
-#else
- gdk_error_trap_pop ();
-#endif
}
}
}
diff --git a/src/greetermenubar.c b/src/greetermenubar.c
index dd383e5..61fc7c9 100644
--- a/src/greetermenubar.c
+++ b/src/greetermenubar.c
@@ -1,7 +1,6 @@
#include <gtk/gtk.h>
#include "greetermenubar.h"
-
static void greeter_menu_bar_size_allocate(GtkWidget* widget, GtkAllocation* allocation);
G_DEFINE_TYPE(GreeterMenuBar, greeter_menu_bar, GTK_TYPE_MENU_BAR);
@@ -25,7 +24,6 @@ greeter_menu_bar_new()
return GTK_WIDGET(g_object_new(greeter_menu_bar_get_type(), NULL));
}
-#if GTK_CHECK_VERSION (3, 0, 0)
static gint
sort_minimal_size(gconstpointer a, gconstpointer b, GtkRequestedSize* sizes)
{
@@ -188,155 +186,3 @@ greeter_menu_bar_size_allocate(GtkWidget* widget, GtkAllocation* allocation)
}
g_list_free(shell_children);
}
-#else
-static gboolean
-widget_get_expand (GtkWidget* widget)
-{
- return g_object_get_data(G_OBJECT(widget),
- GREETER_MENU_BAR_EXPAND_PROP) != NULL;
-}
-
-struct RequestedSize
-{
- GtkWidget* child;
- GtkRequisition size;
-};
-
-static gint
-sort_minimal_size(gconstpointer a, gconstpointer b, struct RequestedSize* sizes)
-{
- gint a_size = sizes[GPOINTER_TO_INT(a)].size.width;
- gint b_size = sizes[GPOINTER_TO_INT(b)].size.width;
- return a_size == b_size ? 0 : a_size > b_size ? -1 : +1;
-}
-
-static void
-greeter_menu_bar_size_allocate(GtkWidget* widget, GtkAllocation* allocation)
-{
- GList* item;
- GList* shell_children;
- GList* expand_nums = NULL;
- guint visible_count = 0, expand_count = 0;
-
- g_return_if_fail (GTK_IS_MENU_BAR (widget));
- g_return_if_fail (allocation != NULL);
-
- GtkPackDirection pack_direction = gtk_menu_bar_get_pack_direction(GTK_MENU_BAR(widget));
- g_return_if_fail(pack_direction == GTK_PACK_DIRECTION_LTR || pack_direction == GTK_PACK_DIRECTION_RTL);
-
- shell_children = GTK_MENU_SHELL (widget)->children;
-
- for(item = shell_children; item; item = g_list_next(item))
- if(gtk_widget_get_visible(item->data))
- {
- if(widget_get_expand(item->data))
- {
- expand_nums = g_list_prepend(expand_nums, GINT_TO_POINTER(visible_count));
- expand_count++;
- }
- visible_count++;
- }
-
- widget->allocation = *allocation;
- if (gtk_widget_get_realized (widget))
- gdk_window_move_resize (widget->window,
- allocation->x, allocation->y,
- allocation->width, allocation->height);
-
- if (visible_count)
- {
- gint toggle_size, ipadding;
- GtkTextDirection direction = gtk_widget_get_direction (widget);
- GtkShadowType shadow_type = GTK_SHADOW_OUT;
- GtkAllocation remaining_space;
-
- gtk_widget_style_get (widget, "shadow-type", &shadow_type, NULL);
- gtk_widget_style_get (widget, "internal-padding", &ipadding, NULL);
-
- remaining_space.x = (GTK_CONTAINER (widget)->border_width + ipadding);
- remaining_space.y = (GTK_CONTAINER (widget)->border_width);
- remaining_space.width = allocation->width - 2 * remaining_space.x;
- remaining_space.height = allocation->height - 2 * remaining_space.y;
-
- if (shadow_type != GTK_SHADOW_NONE)
- {
- remaining_space.x += widget->style->xthickness;
- remaining_space.y += widget->style->ythickness;
- remaining_space.width -= 2 * widget->style->xthickness;
- remaining_space.height -= 2 * widget->style->ythickness;
- }
-
- struct RequestedSize* requested_sizes = g_newa(struct RequestedSize, visible_count);
- struct RequestedSize* request = requested_sizes;
- int size = remaining_space.width;
-
- for(item = shell_children; item; item = g_list_next(item))
- {
- if (!gtk_widget_get_visible (item->data))
- continue;
- request->child = item->data;
- gtk_menu_item_toggle_size_request (GTK_MENU_ITEM (request->child), &toggle_size);
- gtk_menu_item_toggle_size_allocate (GTK_MENU_ITEM (request->child), toggle_size);
- gtk_widget_get_child_requisition (request->child, &request->size);
- request->size.width += toggle_size;
- request->size.height += toggle_size;
- size -= request->size.width;
- ++request;
- }
-
- if(size > 0 && expand_nums)
- {
- expand_nums = g_list_sort_with_data(expand_nums, (GCompareDataFunc)sort_minimal_size,
- requested_sizes);
- GList* first_item = expand_nums;
- gint needed_size = -1;
- gint max_size = requested_sizes[GPOINTER_TO_INT(first_item->data)].size.width;
- gint total_needed_size = 0;
-
- for(item = g_list_next(expand_nums); item; item = g_list_next(item))
- total_needed_size += max_size - requested_sizes[GPOINTER_TO_INT(item->data)].size.width;
-
- while(first_item)
- {
- if(size >= total_needed_size)
- {
- needed_size = max_size + (size - total_needed_size)/expand_count;
- break;
- }
- total_needed_size -= max_size - requested_sizes[GPOINTER_TO_INT(item->data)].size.width;
- first_item = g_list_next(first_item);
- if(first_item)
- max_size = requested_sizes[GPOINTER_TO_INT(first_item->data)].size.width;
- }
-
- for(item = first_item; item; item = g_list_next(item))
- {
- request = &requested_sizes[GPOINTER_TO_INT(item->data)];
- gint dsize = needed_size - request->size.width;
- if(size < dsize)
- dsize = size;
- size -= dsize;
- request->size.width += dsize;
- }
- }
-
- gboolean ltr = (direction == GTK_TEXT_DIR_LTR) == (pack_direction == GTK_PACK_DIRECTION_LTR);
- GtkAllocation child_allocation;
- gint i;
- for(i = 0; i < visible_count; i++)
- {
- child_allocation = remaining_space;
- request = &requested_sizes[i];
-
- child_allocation.width = request->size.width;
- remaining_space.width -= request->size.width;
- if (ltr)
- remaining_space.x += request->size.width;
- else
- child_allocation.x += remaining_space.width;
- gtk_widget_size_allocate(request->child, &child_allocation);
- }
- g_list_free(expand_nums);
- }
-}
-#endif
diff --git a/src/greetermenubar.h b/src/greetermenubar.h
index 7d356cd..853fe77 100644
--- a/src/greetermenubar.h
+++ b/src/greetermenubar.h
@@ -4,10 +4,6 @@
#include <glib-object.h>
#include <gtk/gtk.h>
-#if !GTK_CHECK_VERSION (3, 0, 0)
-#define GREETER_MENU_BAR_EXPAND_PROP "gtk2-fallback-expand"
-#endif
-
G_BEGIN_DECLS
#define GREETER_MENU_BAR_TYPE (greeter_menu_bar_get_type())
diff --git a/src/lightdm-gtk-greeter.c b/src/lightdm-gtk-greeter.c
index b80084b..45c2ad1 100644
--- a/src/lightdm-gtk-greeter.c
+++ b/src/lightdm-gtk-greeter.c
@@ -26,11 +26,7 @@
#include <sys/mman.h>
#include <sys/wait.h>
#include <glib.h>
-#if GTK_CHECK_VERSION (3, 0, 0)
#include <gtk/gtkx.h>
-#else
-#include <gdk/gdkkeysyms.h>
-#endif
#include <glib/gslist.h>
#ifdef HAVE_LIBINDICATOR
@@ -54,31 +50,16 @@
#include "src/greetermenubar.h"
#include "src/greeterbackground.h"
#include "src/lightdm-gtk-greeter-ui.h"
-
-#if GTK_CHECK_VERSION (3, 0, 0)
-#include <src/lightdm-gtk-greeter-css-fallback.h>
-#include <src/lightdm-gtk-greeter-css-application.h>
-#endif
+#include "src/lightdm-gtk-greeter-css-fallback.h"
+#include "src/lightdm-gtk-greeter-css-application.h"
static LightDMGreeter *greeter;
+/* State file */
static GKeyFile *state;
static gchar *state_filename;
static void save_state_file (void);
-/* Defaults */
-static gchar *default_font_name, *default_theme_name, *default_icon_theme_name;
-
-/* Panel Widgets */
-static GtkWindow *panel_window;
-static GtkWidget *menubar;
-static GtkWidget *power_menuitem, *session_menuitem, *language_menuitem, *a11y_menuitem,
- *layout_menuitem, *session_badge;
-static GtkWidget *suspend_menuitem, *hibernate_menuitem, *restart_menuitem, *shutdown_menuitem;
-static GtkWidget *clock_menuitem, *clock_label, *host_menuitem;
-static GtkWidget *contrast_menuitem, *font_menuitem, *keyboard_menuitem, *reader_menuitem;
-static GtkMenu *session_menu, *language_menu, *layout_menu;
-
/* Login Window Widgets */
static GtkWindow *login_window;
static GtkImage *user_image;
@@ -88,7 +69,15 @@ static GtkLabel *message_label;
static GtkInfoBar *info_bar;
static GtkButton *cancel_button, *login_button;
-static gchar *clock_format;
+/* Panel Widgets */
+static GtkWindow *panel_window;
+static GtkWidget *menubar;
+static GtkWidget *power_menuitem, *session_menuitem, *language_menuitem, *a11y_menuitem,
+ *layout_menuitem, *clock_menuitem, *host_menuitem;
+static GtkWidget *suspend_menuitem, *hibernate_menuitem, *restart_menuitem, *shutdown_menuitem;
+static GtkWidget *contrast_menuitem, *font_menuitem, *keyboard_menuitem, *reader_menuitem;
+static GtkWidget *clock_label, *session_badge;
+static GtkMenu *session_menu, *language_menu, *layout_menu;
typedef struct
{
@@ -115,6 +104,11 @@ static const WindowPosition ONBOARD_WINDOW_SIZE = {.x = {610, 0, FALSE, 0}, .y
static WindowPosition main_window_pos;
static WindowPosition panel_window_pos;
+static gchar *default_font_name, *default_theme_name, *default_icon_theme_name;
+static gchar *clock_format;
+static GdkPixbuf *default_user_pixbuf = NULL;
+static gchar *default_user_icon = "avatar-default";
+
typedef struct
{
gchar **argv;
@@ -146,30 +140,24 @@ static gchar *current_session;
static gchar *current_language;
/* Screensaver values */
-int timeout, interval, prefer_blanking, allow_exposures;
+static int timeout, interval, prefer_blanking, allow_exposures;
static GreeterBackground *greeter_background;
static gboolean cancelling = FALSE, prompted = FALSE;
static gboolean prompt_active = FALSE, password_prompted = FALSE;
-#if GTK_CHECK_VERSION (3, 0, 0)
-#else
-static GdkRegion *window_region = NULL;
-#endif
typedef struct
{
- gboolean is_prompt;
- union {
- LightDMMessageType message;
- LightDMPromptType prompt;
- } type;
- gchar *text;
+ gboolean is_prompt;
+ union
+ {
+ LightDMMessageType message;
+ LightDMPromptType prompt;
+ } type;
+ gchar *text;
} PAMConversationMessage;
-static GdkPixbuf* default_user_pixbuf = NULL;
-static gchar* default_user_icon = "avatar-default";
-
static const gchar *LANGUAGE_DATA_CODE = "language-code";
static const gchar *SESSION_DATA_KEY = "session-key";
static const gchar *LAYOUT_DATA_LABEL = "layout-label";
@@ -191,10 +179,8 @@ typedef enum
PANEL_ITEM_TEXT
} GreeterPanelItemType;
-#if GTK_CHECK_VERSION (3, 0, 0)
static const gchar *PANEL_ITEM_STYLE = "panel-item";
static const gchar *PANEL_ITEM_STYLE_HOVERED = "panel-item-hovered";
-
static const gchar *PANEL_ITEM_STYLES[] =
{
"panel-item-indicator",
@@ -202,7 +188,6 @@ static const gchar *PANEL_ITEM_STYLES[] =
"panel-item-separator",
"panel-item-text"
};
-#endif
static const gchar *PANEL_ITEM_DATA_INDEX = "panel-item-data-index";
@@ -427,7 +412,6 @@ pam_message_finalize (PAMConversationMessage *message)
g_free (message);
}
-#if GTK_CHECK_VERSION (3, 0, 0)
static gboolean
panel_item_enter_notify_cb (GtkWidget *widget, GdkEvent *event, gpointer enter)
{
@@ -438,7 +422,6 @@ panel_item_enter_notify_cb (GtkWidget *widget, GdkEvent *event, gpointer enter)
gtk_style_context_remove_class (context, PANEL_ITEM_STYLE_HOVERED);
return FALSE;
}
-#endif
static void
panel_add_item (GtkWidget *widget, gint index, GreeterPanelItemType item_type)
@@ -454,7 +437,6 @@ panel_add_item (GtkWidget *widget, gint index, GreeterPanelItemType item_type)
}
g_list_free (items);
- #if GTK_CHECK_VERSION (3, 0, 0)
gtk_style_context_add_class (gtk_widget_get_style_context (widget), PANEL_ITEM_STYLE);
gtk_style_context_add_class (gtk_widget_get_style_context (widget), PANEL_ITEM_STYLES[item_type]);
if (item_type == PANEL_ITEM_INDICATOR)
@@ -464,7 +446,6 @@ panel_add_item (GtkWidget *widget, gint index, GreeterPanelItemType item_type)
g_signal_connect (G_OBJECT (widget), "leave-notify-event",
G_CALLBACK (panel_item_enter_notify_cb), GINT_TO_POINTER(FALSE));
}
- #endif
gtk_widget_show (widget);
gtk_menu_shell_insert (GTK_MENU_SHELL (menubar), widget, insert_pos);
@@ -511,12 +492,7 @@ indicator_entry_create_menuitem (IndicatorObject *io, IndicatorObjectEntry *entr
{
GtkWidget *box, *menuitem;
gint index = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (io), PANEL_ITEM_DATA_INDEX));
-
-#if GTK_CHECK_VERSION (3, 0, 0)
box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 3);
-#else
- box = gtk_hbox_new (FALSE, 0);
-#endif
menuitem = gtk_menu_item_new ();
gtk_widget_add_events(GTK_WIDGET(menuitem), GDK_SCROLL_MASK);
@@ -739,11 +715,7 @@ init_indicators (GKeyFile* config)
g_hash_table_remove (builtin_items, (gconstpointer)names[i]);
else if (g_strcmp0 (names[i], "~separator") == 0)
{
- #if GTK_CHECK_VERSION (3, 0, 0)
GtkWidget *separator = gtk_separator_new (GTK_ORIENTATION_VERTICAL);
- #else
- GtkWidget *separator = gtk_vseparator_new ();
- #endif
item_type = PANEL_ITEM_SEPARATOR;
iter_value = gtk_separator_menu_item_new ();
gtk_widget_show (separator);
@@ -754,11 +726,7 @@ init_indicators (GKeyFile* config)
item_type = PANEL_ITEM_SPACER;
iter_value = gtk_separator_menu_item_new ();
gtk_menu_item_set_label (iter_value, "");
- #if GTK_CHECK_VERSION (3, 0, 0)
gtk_widget_set_hexpand (iter_value, TRUE);
- #else
- g_object_set_data(G_OBJECT(iter_value), GREETER_MENU_BAR_EXPAND_PROP, "1");
- #endif
}
else if (names[i][1] == '~')
{
@@ -918,7 +886,6 @@ set_session (const gchar *session)
for (menu_iter = menu_items; menu_iter != NULL; menu_iter = g_list_next(menu_iter))
if (g_strcmp0 (session, g_object_get_data (G_OBJECT (menu_iter->data), SESSION_DATA_KEY)) == 0)
{
-#if GTK_CHECK_VERSION (3, 0, 0)
/* Set menuitem-image to session-badge */
GtkIconTheme *icon_theme = gtk_icon_theme_get_default();
gchar* session_name = g_ascii_strdown (session, -1);
@@ -929,7 +896,6 @@ set_session (const gchar *session)
else
gtk_image_set_from_icon_name (GTK_IMAGE(session_badge), "document-properties-symbolic", GTK_ICON_SIZE_MENU);
g_free (icon_name);
-#endif
break;
}
}
@@ -1062,7 +1028,7 @@ set_user_background (const gchar *username)
if (user)
path = lightdm_user_get_background (user);
}
- greeter_background_set_custom_background(greeter_background, path);
+ greeter_background_set_custom_background (greeter_background, path);
}
static void
@@ -1157,76 +1123,6 @@ active_monitor_changed_cb (GreeterBackground *background, gpointer user_data)
}
}
-#if !GTK_CHECK_VERSION (3, 0, 0)
-static GdkRegion *
-cairo_region_from_rectangle (gint width, gint height, gint radius)
-{
- GdkRegion *region;
-
- gint x = radius, y = 0;
- gint xChange = 1 - (radius << 1);
- gint yChange = 0;
- gint radiusError = 0;
-
- GdkRectangle rect;
-
- rect.x = radius;
- rect.y = radius;
- rect.width = width - radius * 2;
- rect.height = height - radius * 2;
-
- region = gdk_region_rectangle (&rect);
-
- while (x >= y)
- {
-
- rect.x = -x + radius;
- rect.y = -y + radius;
- rect.width = x - radius + width - rect.x;
- rect.height = y - radius + height - rect.y;
-
- gdk_region_union_with_rect(region, &rect);
-
- rect.x = -y + radius;
- rect.y = -x + radius;
- rect.width = y - radius + width - rect.x;
- rect.height = x - radius + height - rect.y;
-
- gdk_region_union_with_rect (region, &rect);
-
- y++;
- radiusError += yChange;
- yChange += 2;
- if (((radiusError << 1) + xChange) > 0)
- {
- x--;
- radiusError += xChange;
- xChange += 2;
- }
- }
-
- return region;
-}
-
-static gboolean
-login_window_size_allocate (GtkWidget *widget, GdkRectangle *allocation, gpointer user_data)
-{
- gint radius = 10;
-
- GdkWindow *window = gtk_widget_get_window (widget);
- if (window_region)
- gdk_region_destroy (window_region);
- window_region = cairo_region_from_rectangle (allocation->width, allocation->height, radius);
- if (window)
- {
- gdk_window_shape_combine_region(window, window_region, 0, 0);
- gdk_window_input_shape_combine_region(window, window_region, 0, 0);
- }
-
- return TRUE;
-}
-#endif
-
static void
start_authentication (const gchar *username)
{
@@ -1337,6 +1233,8 @@ start_session (void)
g_key_file_set_value (state, "greeter", "last-session", session);
save_state_file ();
+ greeter_background_save_xroot (greeter_background);
+
if (!lightdm_greeter_start_session_sync (greeter, session, NULL))
{
set_message_label (LIGHTDM_MESSAGE_TYPE_ERROR, _("Failed to start session"));
@@ -1402,17 +1300,7 @@ password_key_press_cb (GtkWidget *widget, GdkEventKey *event, gpointer user_data
return FALSE;
if (event->keyval == GDK_KEY_Up)
- {
- #if GTK_CHECK_VERSION (3, 0, 0)
available = gtk_tree_model_iter_previous (model, &iter);
- #else
- GtkTreePath *path = gtk_tree_model_get_path (model, &iter);
- available = gtk_tree_path_prev (path);
- if (available)
- available = gtk_tree_model_get_iter (model, &iter, path);
- gtk_tree_path_free (path);
- #endif
- }
else
available = gtk_tree_model_iter_next (model, &iter);
@@ -1840,7 +1728,7 @@ show_power_prompt (const gchar* action, const gchar* message, const gchar* icon,
GTK_MESSAGE_OTHER,
GTK_BUTTONS_NONE,
"%s", action);
- gtk_message_dialog_format_secondary_markup(GTK_MESSAGE_DIALOG(dialog), "%s", message);
+ gtk_message_dialog_format_secondary_markup (GTK_MESSAGE_DIALOG (dialog), "%s", message);
button = gtk_dialog_add_button(GTK_DIALOG (dialog), _("Cancel"), GTK_RESPONSE_CANCEL);
gtk_widget_set_name(button, "cancel_button");
button = gtk_dialog_add_button(GTK_DIALOG (dialog), action, GTK_RESPONSE_OK);
@@ -1851,15 +1739,11 @@ show_power_prompt (const gchar* action, const gchar* message, const gchar* icon,
gtk_message_dialog_set_image(GTK_MESSAGE_DIALOG(dialog), image);
/* Make the dialog themeable and attractive */
-#if GTK_CHECK_VERSION (3, 0, 0)
- gtk_style_context_add_class(GTK_STYLE_CONTEXT(gtk_widget_get_style_context(GTK_WIDGET(dialog))), "lightdm-gtk-greeter");
-#endif
- gtk_widget_set_name(dialog, dialog_name);
- gtk_container_set_border_width(GTK_CONTAINER (dialog), 18);
-#if !GTK_CHECK_VERSION (3, 0, 0)
- g_signal_connect (G_OBJECT (dialog), "size-allocate", G_CALLBACK (login_window_size_allocate), NULL);
-#endif
- greeter_background_add_subwindow(greeter_background, GTK_WINDOW (dialog));
+ gtk_style_context_add_class (GTK_STYLE_CONTEXT (gtk_widget_get_style_context (GTK_WIDGET (dialog))), "lightdm-gtk-greeter");
+ gtk_widget_set_name (dialog, dialog_name);
+ gtk_container_set_border_width (GTK_CONTAINER (dialog), 18);
+
+ greeter_background_add_subwindow (greeter_background, GTK_WINDOW (dialog));
/* Hide the login window and show the dialog */
gtk_widget_hide (GTK_WIDGET (login_window));
@@ -1882,12 +1766,7 @@ void
restart_cb (GtkWidget *widget, LightDMGreeter *greeter)
{
if (show_power_prompt(_("Restart"), _("Are you sure you want to close all programs and restart the computer?"),
- #if GTK_CHECK_VERSION (3, 0, 0)
- "view-refresh-symbolic",
- #else
- "view-refresh",
- #endif
- "restart_dialog", "restart_button"))
+ "view-refresh-symbolic", "restart_dialog", "restart_button"))
lightdm_restart (NULL);
}
@@ -1897,12 +1776,7 @@ void
shutdown_cb (GtkWidget *widget, LightDMGreeter *greeter)
{
if (show_power_prompt(_("Shut Down"), _("Are you sure you want to close all programs and shut down the computer?"),
- #if GTK_CHECK_VERSION (3, 0, 0)
- "system-shutdown-symbolic",
- #else
- "system-shutdown",
- #endif
- "shutdown_dialog", "shutdown_button"))
+ "system-shutdown-symbolic", "shutdown_dialog", "shutdown_button"))
lightdm_shutdown (NULL);
}
@@ -2209,11 +2083,7 @@ focus_upon_map (GdkXEvent *gxevent, GdkEvent *event, gpointer data)
/* Check to see if this window is our onboard window, since we don't want to focus it. */
if (keyboard_win)
-#if GTK_CHECK_VERSION (3, 0, 0)
- keyboard_xid = gdk_x11_window_get_xid (keyboard_win);
-#else
- keyboard_xid = gdk_x11_drawable_get_xid (keyboard_win);
-#endif
+ keyboard_xid = gdk_x11_window_get_xid (keyboard_win);
if (xwin != keyboard_xid
&& win_type != GDK_WINDOW_TYPE_HINT_TOOLTIP
@@ -2422,16 +2292,12 @@ main (int argc, char **argv)
GKeyFile *config;
GtkBuilder *builder;
const GList *items, *item;
- GtkCellRenderer *renderer;
- GtkWidget *image, *infobar_compat, *content_area;
+ GtkWidget *image;
gchar *value, **values, *state_dir;
-#if GTK_CHECK_VERSION (3, 0, 0)
GtkIconTheme *icon_theme;
GtkCssProvider *css_provider;
-#endif
GError *error = NULL;
-
- Display* display;
+ Display *display;
#ifdef START_INDICATOR_SERVICES
GPid indicator_pid = 0, spi_pid = 0;
@@ -2454,12 +2320,6 @@ main (int argc, char **argv)
g_unix_signal_add(SIGTERM, (GSourceFunc)gtk_main_quit, NULL);
-#if GTK_CHECK_VERSION (3, 0, 0)
-#else
- /* init threads */
- gdk_threads_init();
-#endif
-
/* init gtk */
gtk_init (&argc, &argv);
@@ -2504,10 +2364,11 @@ main (int argc, char **argv)
g_free (value);
display = gdk_x11_display_get_xdisplay(gdk_display_get_default ());
- if (lightdm_greeter_get_lock_hint (greeter)) {
- XGetScreenSaver(display, &timeout, &interval, &prefer_blanking, &allow_exposures);
- XForceScreenSaver(display, ScreenSaverActive);
- XSetScreenSaver(display, screensaver_timeout, 0, ScreenSaverActive, DefaultExposures);
+ if (lightdm_greeter_get_lock_hint (greeter))
+ {
+ XGetScreenSaver (display, &timeout, &interval, &prefer_blanking, &allow_exposures);
+ XForceScreenSaver (display, ScreenSaverActive);
+ XSetScreenSaver (display, screensaver_timeout, 0, ScreenSaverActive, DefaultExposures);
}
/* Set GTK+ settings */
@@ -2569,65 +2430,24 @@ main (int argc, char **argv)
}
g_clear_error (&error);
- /* Panel */
- panel_window = GTK_WINDOW (gtk_builder_get_object (builder, "panel_window"));
-#if GTK_CHECK_VERSION (3, 0, 0)
- gtk_style_context_add_class(GTK_STYLE_CONTEXT(gtk_widget_get_style_context(GTK_WIDGET(panel_window))), "lightdm-gtk-greeter");
- gtk_style_context_add_class(GTK_STYLE_CONTEXT(gtk_widget_get_style_context(GTK_WIDGET(panel_window))), GTK_STYLE_CLASS_MENUBAR);
-#endif
- menubar = GTK_WIDGET (gtk_builder_get_object (builder, "menubar"));
-
/* Login window */
login_window = GTK_WINDOW (gtk_builder_get_object (builder, "login_window"));
user_image = GTK_IMAGE (gtk_builder_get_object (builder, "user_image"));
user_combo = GTK_COMBO_BOX (gtk_builder_get_object (builder, "user_combobox"));
username_entry = GTK_ENTRY (gtk_builder_get_object (builder, "username_entry"));
password_entry = GTK_ENTRY (gtk_builder_get_object (builder, "password_entry"));
-
-#if !GTK_CHECK_VERSION (3, 0, 0)
- g_signal_connect (G_OBJECT (login_window), "size-allocate", G_CALLBACK (login_window_size_allocate), NULL);
-#endif
-
- /* Add InfoBar via code for GTK+2 compatability */
- infobar_compat = GTK_WIDGET(gtk_builder_get_object(builder, "infobar_compat"));
- info_bar = GTK_INFO_BAR (gtk_info_bar_new());
- gtk_widget_set_name(GTK_WIDGET(info_bar), "greeter_infobar");
- content_area = gtk_info_bar_get_content_area(info_bar);
-
+ info_bar = GTK_INFO_BAR (gtk_builder_get_object (builder, "greeter_infobar"));
message_label = GTK_LABEL (gtk_builder_get_object (builder, "message_label"));
- g_object_ref(message_label);
- gtk_container_remove(GTK_CONTAINER(infobar_compat), GTK_WIDGET(message_label));
- gtk_container_add(GTK_CONTAINER(content_area), GTK_WIDGET(message_label));
- g_object_unref(message_label);
-
- gtk_container_add(GTK_CONTAINER(infobar_compat), GTK_WIDGET(info_bar));
-
cancel_button = GTK_BUTTON (gtk_builder_get_object (builder, "cancel_button"));
login_button = GTK_BUTTON (gtk_builder_get_object (builder, "login_button"));
- /* To maintain compatability with GTK+2, set special properties here */
-#if GTK_CHECK_VERSION (3, 0, 0)
- gtk_style_context_add_class(GTK_STYLE_CONTEXT(gtk_widget_get_style_context(GTK_WIDGET(login_window))), "lightdm-gtk-greeter");
- gtk_box_set_child_packing(GTK_BOX(content_area), GTK_WIDGET(message_label), TRUE, TRUE, 0, GTK_PACK_START);
- gtk_window_set_has_resize_grip(GTK_WINDOW(panel_window), FALSE);
- gtk_widget_set_margin_top(GTK_WIDGET(user_combo), 12);
- gtk_widget_set_margin_bottom(GTK_WIDGET(password_entry), 12);
- gtk_entry_set_placeholder_text(password_entry, _("Enter your password"));
- gtk_entry_set_placeholder_text(username_entry, _("Enter your username"));
- icon_theme = gtk_icon_theme_get_default();
-#else
- gtk_container_set_border_width (GTK_CONTAINER(gtk_builder_get_object (builder, "vbox2")), 18);
- gtk_container_set_border_width (GTK_CONTAINER(gtk_builder_get_object (builder, "content_frame")), 14);
- gtk_container_set_border_width (GTK_CONTAINER(gtk_builder_get_object (builder, "buttonbox_frame")), 14);
- gtk_widget_set_tooltip_text(GTK_WIDGET(password_entry), _("Enter your password"));
- gtk_widget_set_tooltip_text(GTK_WIDGET(username_entry), _("Enter your username"));
-#endif
-
- /* Indicators */
+ /* Panel */
+ panel_window = GTK_WINDOW (gtk_builder_get_object (builder, "panel_window"));
+ menubar = GTK_WIDGET (gtk_builder_get_object (builder, "menubar"));
session_menuitem = GTK_WIDGET (gtk_builder_get_object (builder, "session_menuitem"));
- session_menu = GTK_MENU(gtk_builder_get_object (builder, "session_menu"));
+ session_menu = GTK_MENU (gtk_builder_get_object (builder, "session_menu"));
language_menuitem = GTK_WIDGET (gtk_builder_get_object (builder, "language_menuitem"));
- language_menu = GTK_MENU(gtk_builder_get_object (builder, "language_menu"));
+ language_menu = GTK_MENU (gtk_builder_get_object (builder, "language_menu"));
a11y_menuitem = GTK_WIDGET (gtk_builder_get_object (builder, "a11y_menuitem"));
contrast_menuitem = GTK_WIDGET (gtk_builder_get_object (builder, "high_contrast_menuitem"));
font_menuitem = GTK_WIDGET (gtk_builder_get_object (builder, "large_font_menuitem"));
@@ -2656,8 +2476,6 @@ main (int argc, char **argv)
gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (builder, "user_image_border")));
gtk_widget_hide (GTK_WIDGET (user_image)); /* Hide to mark image is disabled */
gtk_widget_set_size_request (GTK_WIDGET (user_combo), 250, -1);
- /* Deprecated, but table must be replaced with GtkGrid after dropping gtk2 support */
- gtk_table_set_col_spacings (GTK_TABLE (gtk_builder_get_object (builder, "table1")), 0);
}
else
{
@@ -2679,17 +2497,15 @@ main (int argc, char **argv)
}
}
+ icon_theme = gtk_icon_theme_get_default ();
+
/* Session menu */
if (gtk_widget_get_visible (session_menuitem))
{
-#if GTK_CHECK_VERSION (3, 0, 0)
- if (gtk_icon_theme_has_icon(icon_theme, "document-properties-symbolic"))
+ if (gtk_icon_theme_has_icon (icon_theme, "document-properties-symbolic"))
session_badge = gtk_image_new_from_icon_name ("document-properties-symbolic", GTK_ICON_SIZE_MENU);
else
session_badge = gtk_image_new_from_icon_name ("document-properties", GTK_ICON_SIZE_MENU);
-#else
- session_badge = gtk_image_new_from_icon_name ("document-properties", GTK_ICON_SIZE_MENU);
-#endif
gtk_widget_show (session_badge);
gtk_container_add (GTK_CONTAINER (session_menuitem), session_badge);
@@ -2750,14 +2566,10 @@ main (int argc, char **argv)
/* a11y menu */
if (gtk_widget_get_visible (a11y_menuitem))
{
- #if GTK_CHECK_VERSION (3, 0, 0)
if (gtk_icon_theme_has_icon(icon_theme, "preferences-desktop-accessibility-symbolic"))
image = gtk_image_new_from_icon_name ("preferences-desktop-accessibility-symbolic", GTK_ICON_SIZE_MENU);
else
image = gtk_image_new_from_icon_name ("preferences-desktop-accessibility", GTK_ICON_SIZE_MENU);
- #else
- image = gtk_image_new_from_icon_name ("preferences-desktop-accessibility", GTK_ICON_SIZE_MENU);
- #endif
gtk_widget_show (image);
gtk_container_add (GTK_CONTAINER (a11y_menuitem), image);
}
@@ -2779,14 +2591,10 @@ main (int argc, char **argv)
/* Power menu */
if (gtk_widget_get_visible (power_menuitem))
{
-#if GTK_CHECK_VERSION (3, 0, 0)
if (gtk_icon_theme_has_icon(icon_theme, "system-shutdown-symbolic"))
image = gtk_image_new_from_icon_name ("system-shutdown-symbolic", GTK_ICON_SIZE_MENU);
else
image = gtk_image_new_from_icon_name ("system-shutdown", GTK_ICON_SIZE_MENU);
-#else
- image = gtk_image_new_from_icon_name ("system-shutdown", GTK_ICON_SIZE_MENU);
-#endif
gtk_widget_show (image);
gtk_container_add (GTK_CONTAINER (power_menuitem), image);
@@ -2844,7 +2652,6 @@ main (int argc, char **argv)
gdk_threads_add_timeout (1000, (GSourceFunc) clock_timeout_thread, NULL);
}
- #if GTK_CHECK_VERSION (3, 0, 0)
/* A bit of CSS */
GdkRGBA lightdm_gtk_greeter_override_defaults;
css_provider = gtk_css_provider_new ();
@@ -2860,7 +2667,6 @@ main (int argc, char **argv)
gtk_css_provider_load_from_data (css_provider, lightdm_gtk_greeter_css_fallback, lightdm_gtk_greeter_css_fallback_length, NULL);
gtk_style_context_add_provider_for_screen(gdk_screen_get_default (), GTK_STYLE_PROVIDER (css_provider),
fallback_css_priority);
- #endif
/* Background */
greeter_background = greeter_background_new ();
@@ -2902,17 +2708,11 @@ main (int argc, char **argv)
}
g_strfreev (config_groups);
- g_signal_connect (G_OBJECT (greeter_background), "active-monitor-changed", G_CALLBACK(active_monitor_changed_cb), NULL);
+ g_signal_connect (G_OBJECT (greeter_background), "active-monitor-changed", G_CALLBACK (active_monitor_changed_cb), NULL);
greeter_background_add_subwindow (greeter_background, login_window);
greeter_background_add_subwindow (greeter_background, panel_window);
greeter_background_connect (greeter_background, gdk_screen_get_default ());
- /* Users combobox */
- renderer = gtk_cell_renderer_text_new();
- gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (user_combo), renderer, TRUE);
- gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (user_combo), renderer, "text", 1);
- gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (user_combo), renderer, "weight", 2);
-
if (lightdm_greeter_get_hide_users_hint (greeter))
{
set_user_image (NULL);
@@ -2999,15 +2799,7 @@ main (int argc, char **argv)
gdk_window_set_events (root_window, gdk_window_get_events (root_window) | GDK_SUBSTRUCTURE_MASK);
gdk_window_add_filter (root_window, focus_upon_map, NULL);
-#if GTK_CHECK_VERSION (3, 0, 0)
-#else
- gdk_threads_enter();
-#endif
gtk_main ();
-#if GTK_CHECK_VERSION (3, 0, 0)
-#else
- gdk_threads_leave();
-#endif
#ifdef START_INDICATOR_SERVICES
if (indicator_pid)
diff --git a/src/lightdm-gtk-greeter.glade b/src/lightdm-gtk-greeter.glade
index 2c174d8..55a70c1 100644
--- a/src/lightdm-gtk-greeter.glade
+++ b/src/lightdm-gtk-greeter.glade
@@ -1,6 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.16.1 -->
<interface>
+ <requires lib="gtk+" version="3.4"/>
+ <!-- interface-requires greeter_menu_bar 1.0 -->
<object class="GtkAccelGroup" id="a11y_accelgroup"/>
<object class="GtkAccelGroup" id="power_accelgroup"/>
<object class="GtkWindow" id="panel_window">
@@ -16,7 +18,6 @@
<property name="name">menubar</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="halign">fill</property>
<property name="pack_direction">rtl</property>
<signal name="key-press-event" handler="menubar_key_press_cb" swapped="no"/>
<child>
@@ -167,21 +168,21 @@
<child>
<object class="GtkSeparatorMenuItem" id="clock_menuitem">
<property name="name">clock_menuitem</property>
- <property name="visible">False</property>
<property name="can_focus">False</property>
- <property name="label">[clock]</property>
</object>
</child>
<child>
<object class="GtkSeparatorMenuItem" id="host_menuitem">
<property name="name">host_menuitem</property>
- <property name="visible">False</property>
<property name="can_focus">False</property>
- <property name="label">[host]</property>
</object>
</child>
</object>
</child>
+ <style>
+ <class name="lightdm-gtk-greeter"/>
+ <class name="menubar"/>
+ </style>
</object>
<object class="GtkListStore" id="user_liststore">
<columns>
@@ -204,9 +205,10 @@
</accel-groups>
<signal name="key-press-event" handler="login_window_key_press_cb" swapped="no"/>
<child>
- <object class="GtkVBox" id="vbox2">
+ <object class="GtkBox" id="box1">
<property name="visible">True</property>
<property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
<child>
<object class="GtkFrame" id="content_frame">
<property name="name">content_frame</property>
@@ -215,50 +217,64 @@
<property name="label_xalign">0</property>
<property name="shadow_type">none</property>
<child>
- <object class="GtkTable" id="table1">
+ <object class="GtkGrid" id="grid1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">24</property>
<property name="margin_right">24</property>
<property name="margin_top">24</property>
- <property name="n_rows">3</property>
- <property name="n_columns">2</property>
- <property name="column_spacing">18</property>
<property name="row_spacing">6</property>
+ <property name="column_spacing">18</property>
<child>
- <object class="GtkComboBox" id="user_combobox">
- <property name="name">user_combobox</property>
- <property name="width_request">200</property>
+ <object class="GtkFrame" id="user_image_border">
+ <property name="name">user_image_border</property>
+ <property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="model">user_liststore</property>
- <signal name="changed" handler="user_combobox_active_changed_cb" swapped="no"/>
- <signal name="key-press-event" handler="user_combo_key_press_cb" swapped="no"/>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkImage" id="user_image">
+ <property name="name">user_image</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="pixel_size">80</property>
+ <property name="icon_name">avatar-default</property>
+ </object>
+ </child>
</object>
<packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="y_options"/>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ <property name="width">1</property>
+ <property name="height">3</property>
</packing>
</child>
<child>
- <object class="GtkEntry" id="password_entry">
- <property name="name">prompt_entry</property>
+ <object class="GtkComboBox" id="user_combobox">
+ <property name="name">user_combobox</property>
<property name="width_request">200</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="visibility">False</property>
- <property name="invisible_char">•</property>
- <property name="primary_icon_activatable">False</property>
- <property name="secondary_icon_activatable">False</property>
- <signal name="activate" handler="login_cb" swapped="no"/>
- <signal name="key-press-event" handler="password_key_press_cb" swapped="no"/>
+ <property name="can_focus">False</property>
+ <property name="valign">center</property>
+ <property name="margin_top">12</property>
+ <property name="hexpand">True</property>
+ <property name="model">user_liststore</property>
+ <signal name="changed" handler="user_combobox_active_changed_cb" swapped="no"/>
+ <signal name="key-press-event" handler="user_combo_key_press_cb" swapped="no"/>
+ <child>
+ <object class="GtkCellRendererText" id="cellrenderertext1"/>
+ <attributes>
+ <attribute name="text">1</attribute>
+ <attribute name="weight">2</attribute>
+ </attributes>
+ </child>
</object>
<packing>
<property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
- <property name="y_options"/>
+ <property name="top_attach">0</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
</packing>
</child>
<child>
@@ -266,38 +282,40 @@
<property name="name">prompt_entry</property>
<property name="can_focus">True</property>
<property name="no_show_all">True</property>
+ <property name="hexpand">True</property>
<property name="invisible_char">•</property>
+ <property name="placeholder_text" translatable="yes">Enter your username</property>
<signal name="focus-out-event" handler="username_focus_out_cb" swapped="no"/>
<signal name="key-press-event" handler="username_key_press_cb" swapped="no"/>
</object>
<packing>
<property name="left_attach">1</property>
- <property name="right_attach">2</property>
<property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
</packing>
</child>
<child>
- <object class="GtkFrame" id="user_image_border">
- <property name="name">user_image_border</property>
+ <object class="GtkEntry" id="password_entry">
+ <property name="name">prompt_entry</property>
+ <property name="width_request">200</property>
<property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label_xalign">0</property>
- <property name="shadow_type">none</property>
- <child>
- <object class="GtkImage" id="user_image">
- <property name="name">user_image</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="pixel_size">80</property>
- <property name="icon_name">avatar-default</property>
- </object>
- </child>
+ <property name="can_focus">True</property>
+ <property name="margin_bottom">12</property>
+ <property name="hexpand">True</property>
+ <property name="visibility">False</property>
+ <property name="invisible_char">•</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>
+ <signal name="activate" handler="login_cb" swapped="no"/>
+ <signal name="key-press-event" handler="password_key_press_cb" swapped="no"/>
</object>
<packing>
- <property name="bottom_attach">3</property>
- <property name="x_options"/>
- <property name="y_options"/>
+ <property name="left_attach">1</property>
+ <property name="top_attach">2</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
</packing>
</child>
</object>
@@ -313,19 +331,49 @@
</packing>
</child>
<child>
- <object class="GtkAlignment" id="infobar_compat">
- <property name="visible">True</property>
+ <object class="GtkInfoBar" id="greeter_infobar">
+ <property name="name">greeter_infobar</property>
+ <property name="app_paintable">True</property>
<property name="can_focus">False</property>
- <child>
- <object class="GtkLabel" id="message_label">
- <property name="visible">True</property>
+ <child internal-child="action_area">
+ <object class="GtkButtonBox" id="infobar-action_area1">
<property name="can_focus">False</property>
- <property name="label" comments="This is a placeholder string and will be replaced with a message from PAM">[message]</property>
+ <property name="layout_style">end</property>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child internal-child="content_area">
+ <object class="GtkBox" id="infobar-content_area1">
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkLabel" id="message_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" comments="This is a placeholder string and will be replaced with a message from PAM">[message]</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
</object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
</child>
</object>
<packing>
- <property name="expand">True</property>
+ <property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
@@ -338,40 +386,40 @@
<property name="label_xalign">0</property>
<property name="shadow_type">none</property>
<child>
- <object class="GtkHBox" id="hbox2">
+ <object class="GtkBox" id="box2">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">24</property>
<property name="margin_right">24</property>
<property name="margin_bottom">24</property>
<child>
- <object class="GtkButton" id="login_button">
- <property name="label" translatable="yes">Log In</property>
- <property name="name">login_button</property>
+ <object class="GtkButton" id="cancel_button">
+ <property name="label" translatable="yes">Cancel</property>
+ <property name="name">cancel_button</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
- <signal name="clicked" handler="login_cb" swapped="no"/>
+ <signal name="clicked" handler="cancel_cb" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
- <property name="pack_type">end</property>
<property name="position">0</property>
</packing>
</child>
<child>
- <object class="GtkButton" id="cancel_button">
- <property name="label" translatable="yes">Cancel</property>
- <property name="name">cancel_button</property>
+ <object class="GtkButton" id="login_button">
+ <property name="label" translatable="yes">Log In</property>
+ <property name="name">login_button</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
- <signal name="clicked" handler="cancel_cb" swapped="no"/>
+ <signal name="clicked" handler="login_cb" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
+ <property name="pack_type">end</property>
<property name="position">1</property>
</packing>
</child>
@@ -382,12 +430,15 @@
</child>
</object>
<packing>
- <property name="expand">True</property>
+ <property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
</child>
+ <style>
+ <class name="lightdm-gtk-greeter"/>
+ </style>
</object>
</interface>