diff options
-rw-r--r-- | NEWS | 4 | ||||
-rw-r--r-- | configure.ac | 18 | ||||
-rw-r--r-- | src/greeterbackground.c | 65 | ||||
-rw-r--r-- | src/greetermenubar.c | 154 | ||||
-rw-r--r-- | src/greetermenubar.h | 4 | ||||
-rw-r--r-- | src/lightdm-gtk-greeter.c | 316 | ||||
-rw-r--r-- | src/lightdm-gtk-greeter.glade | 191 |
7 files changed, 183 insertions, 569 deletions
@@ -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> |