rpms/gdm/devel gdm-keyboard-chooser.patch, NONE, 1.1 gdm.spec, 1.385, 1.386
Matthias Clasen (mclasen)
fedora-extras-commits at redhat.com
Mon May 5 15:34:53 UTC 2008
- Previous message (by thread): rpms/PackageKit/devel PackageKit-bz445086-update-detail-unbound.patch, NONE, 1.1 PackageKit.spec, 1.27, 1.28
- Next message (by thread): rpms/blender/EL-4 blender-2.44-bid.patch, NONE, 1.1 blender-2.44-scons.patch, NONE, 1.1 blender-2.45-cve-2008-1102.patch, NONE, 1.1 blender-2.45-gcc43.patch, NONE, 1.1 blender-2.45-sc.patch, NONE, 1.1 blender-2.45-yafray.patch, NONE, 1.1 blender.desktop, 1.2, 1.3 blender.spec, 1.7, 1.8
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Author: mclasen
Update of /cvs/extras/rpms/gdm/devel
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv1278
Modified Files:
gdm.spec
Added Files:
gdm-keyboard-chooser.patch
Log Message:
add keyboard chooser
gdm-keyboard-chooser.patch:
--- NEW FILE gdm-keyboard-chooser.patch ---
diff -up gdm-2.22.0/configure.ac.keyboard-chooser gdm-2.22.0/configure.ac
--- gdm-2.22.0/configure.ac.keyboard-chooser 2008-05-05 11:29:30.000000000 -0400
+++ gdm-2.22.0/configure.ac 2008-05-05 11:30:14.000000000 -0400
@@ -48,6 +48,7 @@ SCROLLKEEPER_REQUIRED_VERSION=0.1.4
GCONF_REQUIRED_VERSION=2.6.1
POLICYKIT_REQUIRED_VERSION=0.7
GNOME_PANEL_REQUIRED_VERSION=2.0.0
+LIBXKLAVIER_REQUIRED_VERSION=3.5
EXTRA_COMPILE_WARNINGS(yes)
@@ -98,6 +99,7 @@ PKG_CHECK_MODULES(SIMPLE_GREETER,
gtk+-2.0 >= $GTK_REQUIRED_VERSION
libglade-2.0 >= $LIBGLADE_REQUIRED_VERSION
gconf-2.0 >= $GCONF_REQUIRED_VERSION
+ libxklavier >= $LIBXKLAVIER_REQUIRED_VERSION
)
AC_SUBST(SIMPLE_GREETER_CFLAGS)
AC_SUBST(SIMPLE_GREETER_LIBS)
diff -up gdm-2.22.0/daemon/gdm-factory-slave.c.keyboard-chooser gdm-2.22.0/daemon/gdm-factory-slave.c
--- gdm-2.22.0/daemon/gdm-factory-slave.c.keyboard-chooser 2008-04-17 23:29:28.000000000 -0400
+++ gdm-2.22.0/daemon/gdm-factory-slave.c 2008-05-05 11:28:39.000000000 -0400
@@ -416,6 +416,14 @@ on_greeter_language_selected (GdmGreeter
}
static void
+on_greeter_layout_selected (GdmGreeterServer *greeter_server,
+ const char *text,
+ GdmFactorySlave *slave)
+{
+ gdm_session_select_layout (GDM_SESSION (slave->priv->session), text);
+}
+
+static void
on_greeter_user_selected (GdmGreeterServer *greeter_server,
const char *text,
GdmFactorySlave *slave)
@@ -505,6 +513,10 @@ run_greeter (GdmFactorySlave *slave)
G_CALLBACK (on_greeter_language_selected),
slave);
g_signal_connect (slave->priv->greeter_server,
+ "layout-selected",
+ G_CALLBACK (on_greeter_layout_selected),
+ slave);
+ g_signal_connect (slave->priv->greeter_server,
"user-selected",
G_CALLBACK (on_greeter_user_selected),
slave);
diff -up gdm-2.22.0/daemon/gdm-greeter-server.c.keyboard-chooser gdm-2.22.0/daemon/gdm-greeter-server.c
--- gdm-2.22.0/daemon/gdm-greeter-server.c.keyboard-chooser 2008-04-17 23:29:28.000000000 -0400
+++ gdm-2.22.0/daemon/gdm-greeter-server.c 2008-05-05 11:28:39.000000000 -0400
@@ -76,6 +76,7 @@ enum {
SESSION_SELECTED,
HOSTNAME_SELECTED,
LANGUAGE_SELECTED,
+ LAYOUT_SELECTED,
USER_SELECTED,
CANCELLED,
CONNECTED,
@@ -266,6 +267,13 @@ gdm_greeter_server_default_language_name
}
void
+gdm_greeter_server_default_layout_name_changed (GdmGreeterServer *greeter_server,
+ const char *layout_name)
+{
+ send_dbus_string_signal (greeter_server, "DefaultLayoutNameChanged", layout_name);
+}
+
+void
gdm_greeter_server_default_session_name_changed (GdmGreeterServer *greeter_server,
const char *session_name)
{
@@ -496,6 +504,33 @@ handle_select_language (GdmGreeterServer
}
static DBusHandlerResult
+handle_select_layout (GdmGreeterServer *greeter_server,
+ DBusConnection *connection,
+ DBusMessage *message)
+{
+ DBusMessage *reply;
+ DBusError error;
+ const char *text;
+
+ dbus_error_init (&error);
+ if (! dbus_message_get_args (message, &error,
+ DBUS_TYPE_STRING, &text,
+ DBUS_TYPE_INVALID)) {
+ g_warning ("ERROR: %s", error.message);
+ }
+
+ g_debug ("GreeterServer: SelectLayout: %s", text);
+
+ reply = dbus_message_new_method_return (message);
+ dbus_connection_send (connection, reply, NULL);
+ dbus_message_unref (reply);
+
+ g_signal_emit (greeter_server, signals [LAYOUT_SELECTED], 0, text);
+
+ return DBUS_HANDLER_RESULT_HANDLED;
+}
+
+static DBusHandlerResult
handle_select_user (GdmGreeterServer *greeter_server,
DBusConnection *connection,
DBusMessage *message)
@@ -624,6 +659,8 @@ greeter_handle_child_message (DBusConnec
return handle_select_hostname (greeter_server, connection, message);
} else if (dbus_message_is_method_call (message, GDM_GREETER_SERVER_DBUS_INTERFACE, "SelectLanguage")) {
return handle_select_language (greeter_server, connection, message);
+ } else if (dbus_message_is_method_call (message, GDM_GREETER_SERVER_DBUS_INTERFACE, "SelectLayout")) {
+ return handle_select_layout (greeter_server, connection, message);
} else if (dbus_message_is_method_call (message, GDM_GREETER_SERVER_DBUS_INTERFACE, "SelectUser")) {
return handle_select_user (greeter_server, connection, message);
} else if (dbus_message_is_method_call (message, GDM_GREETER_SERVER_DBUS_INTERFACE, "Cancel")) {
@@ -711,6 +748,10 @@ do_introspect (DBusConnection *connectio
" <signal name=\"DefaultLanguageNameChanged\">\n"
" <arg name=\"language_name\" type=\"s\"/>\n"
" </signal>\n"
+ " <signal name=\"DefaultLayoutNameChanged\">\n"
+ " <arg name=\"layout_name\" type=\"s\"/>\n"
+ " </signal>\n"
+ " <signal name=\"DefaultSessionNameChanged\">\n"
" <signal name=\"DefaultSessionNameChanged\">\n"
" <arg name=\"session_name\" type=\"s\"/>\n"
" </signal>\n"
@@ -1157,6 +1198,17 @@ gdm_greeter_server_class_init (GdmGreete
G_TYPE_NONE,
1,
G_TYPE_STRING);
+ signals [LAYOUT_SELECTED] =
+ g_signal_new ("layout-selected",
+ G_OBJECT_CLASS_TYPE (object_class),
+ G_SIGNAL_RUN_FIRST,
+ G_STRUCT_OFFSET (GdmGreeterServerClass, layout_selected),
+ NULL,
+ NULL,
+ g_cclosure_marshal_VOID__STRING,
+ G_TYPE_NONE,
+ 1,
+ G_TYPE_STRING);
signals [USER_SELECTED] =
g_signal_new ("user-selected",
G_OBJECT_CLASS_TYPE (object_class),
diff -up gdm-2.22.0/daemon/gdm-greeter-server.h.keyboard-chooser gdm-2.22.0/daemon/gdm-greeter-server.h
--- gdm-2.22.0/daemon/gdm-greeter-server.h.keyboard-chooser 2008-04-17 23:29:28.000000000 -0400
+++ gdm-2.22.0/daemon/gdm-greeter-server.h 2008-05-05 11:28:39.000000000 -0400
@@ -57,6 +57,8 @@ typedef struct
const char *hostname);
void (* language_selected) (GdmGreeterServer *greeter_server,
const char *name);
+ void (* layout_selected) (GdmGreeterServer *greeter_server,
+ const char *name);
void (* user_selected) (GdmGreeterServer *greeter_server,
const char *name);
void (* cancelled) (GdmGreeterServer *greeter_server);
@@ -88,6 +90,8 @@ void gdm_greeter_server_s
const char *text);
void gdm_greeter_server_default_language_name_changed (GdmGreeterServer *greeter_server,
const char *text);
+void gdm_greeter_server_default_layout_name_changed (GdmGreeterServer *greeter_server,
+ const char *text);
void gdm_greeter_server_default_session_name_changed (GdmGreeterServer *greeter_server,
const char *text);
diff -up gdm-2.22.0/daemon/gdm-product-slave.c.keyboard-chooser gdm-2.22.0/daemon/gdm-product-slave.c
--- gdm-2.22.0/daemon/gdm-product-slave.c.keyboard-chooser 2008-04-17 23:29:28.000000000 -0400
+++ gdm-2.22.0/daemon/gdm-product-slave.c 2008-05-05 11:28:39.000000000 -0400
@@ -755,6 +755,28 @@ on_relay_language_selected (GdmProductSl
}
static void
+on_relay_layout_selected (GdmProductSlave *slave,
+ DBusMessage *message)
+{
+ DBusError error;
+ const char *text;
+ dbus_bool_t res;
+
+ dbus_error_init (&error);
+ res = dbus_message_get_args (message,
+ &error,
+ DBUS_TYPE_STRING, &text,
+ DBUS_TYPE_INVALID);
+ if (res) {
+ g_debug ("GdmProductSlave: Layout selected %s", text);
+ gdm_session_select_layout (GDM_SESSION (slave->priv->session), text);
+ } else {
+ g_warning ("Unable to get arguments: %s", error.message);
+ dbus_error_free (&error);
+ }
+}
+
+static void
on_relay_user_selected (GdmProductSlave *slave,
DBusMessage *message)
{
@@ -963,6 +985,8 @@ relay_dbus_handle_message (DBusConnectio
[...1943 lines suppressed...]
+ }
+ else
+ result = layout;
+
+ return result;
+}
+
+typedef struct {
+ GSList *list;
+ char *layout;
+} LayoutData;
+
+static void
+add_variant (XklConfigRegistry *config,
+ const XklConfigItem *item,
+ gpointer data)
+{
+ LayoutData *ldata = data;
+
+ ldata->list = g_slist_prepend (ldata->list, g_strdup_printf ("%s\t%s", ldata->layout, item->name));
+}
+
+static void
+add_layout (XklConfigRegistry *config,
+ const XklConfigItem *item,
+ gpointer data)
+{
+ LayoutData *ldata = data;
+
+ ldata->layout = item->name;
+ ldata->list = g_slist_prepend (ldata->list, g_strdup (item->name));
+ xkl_config_registry_foreach_layout_variant (config, item->name, add_variant, data);
+ ldata->layout = NULL;
+}
+
+char **
+gdm_get_all_layout_names (void)
+{
+ GSList *l;
+ int len, i;
+ char **layouts;
+ LayoutData data;
+
+ init_xkl ();
+
+ data.list = NULL;
+ data.layout = NULL;
+
+ xkl_config_registry_foreach_layout (config_registry, add_layout, &data);
+
+ len = g_slist_length (data.list);
+
+ layouts = g_new (char *, len + 1);
+ layouts[len] = NULL;
+
+ for (i = 0, l = data.list; i < len; i++, l = l->next)
+ layouts[len - i - 1] = l->data;
+
+ g_slist_free (data.list);
+
+ return layouts;
+}
+
+void
+gdm_layout_activate (const char *layout)
+{
+ XklConfigRec *config;
+ char *p;
+
+ init_xkl ();
+
+ config = xkl_config_rec_new ();
+ config->model = g_strdup (initial_config->model);
+
+ if (layout == NULL) {
+ config->layouts = g_strdupv (initial_config->layouts);
+ config->variants = g_strdupv (initial_config->variants);
+ config->options = g_strdupv (initial_config->options);
+ }
+ else {
+ config->layouts = g_new0 (gchar *, 2);
+ config->layouts[0] = g_strdup (layout);
+
+ p = strchr (config->layouts[0], '\t');
+ if (p) {
+
+ config->variants = g_new0 (gchar *, 2);
+ config->layouts[0][p - config->layouts[0]] = 0;
+ config->variants[0] = g_strdup (p + 1);
+ }
+ }
+
+ xkl_config_rec_activate (config, engine);
+
+ g_object_unref (config);
+}
+
diff -up /dev/null gdm-2.22.0/gui/simple-greeter/gdm-layouts.h
--- /dev/null 2008-05-05 08:19:33.312003896 -0400
+++ gdm-2.22.0/gui/simple-greeter/gdm-layouts.h 2008-05-05 11:28:39.000000000 -0400
@@ -0,0 +1,33 @@
+/* -*- Modex: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright 2008 Red Hat, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Written by: Matthias Clasen
+ */
+
+#ifndef __GDM_LAYOUTS_H
+#define __GDM_LAYOUTS_H
+
+G_BEGIN_DECLS
+
+char * gdm_get_layout_from_name (const char *name);
+char ** gdm_get_all_layout_names (void);
+void gdm_layout_activate (const char *layout);
+
+G_END_DECLS
+
+#endif /* __GDM_LAYOUT_CHOOSER_WIDGET_H */
diff -up gdm-2.22.0/gui/simple-greeter/gdm-simple-greeter.schemas.in.keyboard-chooser gdm-2.22.0/gui/simple-greeter/gdm-simple-greeter.schemas.in
--- gdm-2.22.0/gui/simple-greeter/gdm-simple-greeter.schemas.in.keyboard-chooser 2008-05-01 18:35:35.000000000 -0400
+++ gdm-2.22.0/gui/simple-greeter/gdm-simple-greeter.schemas.in 2008-05-05 11:28:39.000000000 -0400
@@ -226,5 +226,29 @@
</locale>
</schema>
+ <schema>
+ <key>/schemas/apps/gdm/simple-greeter/settings-manager-plugins/keyboard/active</key>
+ <applyto>/apps/gdm/simple-greeter/settings-manager-plugins/keyboard/active</applyto>
+ <owner>gdm-simple-greeter</owner>
+ <type>bool</type>
+ <default>TRUE</default>
+ <locale name="C">
+ <short>True if the keyboard settings manager plugin is enabled.</short>
+ <long>Set to True to enable the keyboard settings manager plugin.</long>
+ </locale>
+ </schema>
+
+ <schema>
+ <key>/schemas/apps/gdm/simple-greeter/settings-manager-plugins/keyboard/priority</key>
+ <applyto>/apps/gdm/simple-greeter/settings-manager-plugins/keyboard/priority</applyto>
+ <owner>gdm-simple-greeter</owner>
+ <type>int</type>
+ <default>6</default>
+ <locale name="C">
+ <short>True if the keyboard settings manager plugin is enabled.</short>
+ <long>Set to True to enable the keyboard settings manager plugin.</long>
+ </locale>
+ </schema>
+
</schemalist>
</gconfschemafile>
diff -up gdm-2.22.0/gui/simple-greeter/Makefile.am.keyboard-chooser gdm-2.22.0/gui/simple-greeter/Makefile.am
--- gdm-2.22.0/gui/simple-greeter/Makefile.am.keyboard-chooser 2008-04-17 23:29:26.000000000 -0400
+++ gdm-2.22.0/gui/simple-greeter/Makefile.am 2008-05-05 11:29:03.000000000 -0400
@@ -123,6 +123,14 @@ test_greeter_panel_SOURCES = \
gdm-language-chooser-dialog.c \
gdm-language-option-widget.h \
gdm-language-option-widget.c \
+ gdm-layout-chooser-widget.h \
+ gdm-layout-chooser-widget.c \
+ gdm-layout-chooser-dialog.h \
+ gdm-layout-chooser-dialog.c \
+ gdm-layout-option-widget.h \
+ gdm-layout-option-widget.c \
+ gdm-layouts.h \
+ gdm-layouts.c \
gdm-sessions.h \
gdm-sessions.c \
gdm-session-option-widget.h \
@@ -276,6 +284,14 @@ gdm_simple_greeter_SOURCES = \
gdm-languages.c \
gdm-language-chooser-widget.h \
gdm-language-chooser-widget.c \
+ gdm-layout-chooser-widget.h \
+ gdm-layout-chooser-widget.c \
+ gdm-layout-chooser-dialog.h \
+ gdm-layout-chooser-dialog.c \
+ gdm-layout-option-widget.h \
+ gdm-layout-option-widget.c \
+ gdm-layouts.h \
+ gdm-layouts.c \
locarchive.h \
gdm-language-chooser-dialog.h \
gdm-language-chooser-dialog.c \
Index: gdm.spec
===================================================================
RCS file: /cvs/extras/rpms/gdm/devel/gdm.spec,v
retrieving revision 1.385
retrieving revision 1.386
diff -u -r1.385 -r1.386
--- gdm.spec 5 May 2008 01:16:05 -0000 1.385
+++ gdm.spec 5 May 2008 15:33:43 -0000 1.386
@@ -16,12 +16,12 @@
Summary: The GNOME Display Manager
Name: gdm
Version: 2.22.0
-Release: 3%{?dist}
+Release: 4%{?dist}
Epoch: 1
License: GPLv2+
Group: User Interface/X
URL: http://download.gnome.org/sources/gdm
-Source: http://download.gnome.org/sources/gdm/2.22/gdm-%{version}.tar.bz2
+Source: http://download.gnome.org/sources/gdm/2.22/gdm-%{version}.tar.gz
Source1: gdm-pam
Source2: gdm-autologin-pam
Source3: gdmsetup-pam
@@ -76,6 +76,9 @@
Requires: audit-libs >= %{libauditver}
Patch1: xkb-groups.patch
+# from upstream svn
+Patch2: gdm-keyboard-chooser.patch
+# Fedora-specific
Patch99: gdm-2.21.8-fedora-logo.patch
%package user-switch-applet
@@ -96,6 +99,7 @@
%prep
%setup -q
%patch1 -p1 -b .xkb-groups
+%patch2 -p1 -b .keyboard-chooser
%patch99 -p1 -b .fedora-logo
%build
@@ -293,6 +297,9 @@
%{_datadir}/gnome-2.0/ui/GNOME_FastUserSwitchApplet.xml
%changelog
+* Mon May 5 2008 Matthias Clasen <mclasen at redhat.com> - 1:2.22.0-4
+- Add a keyboard chooser to the greeter
+
* Sun May 4 2008 Matthias Clasen <mclasen at redhat.com> - 1:2.22.0-3
- Fix source url
- Previous message (by thread): rpms/PackageKit/devel PackageKit-bz445086-update-detail-unbound.patch, NONE, 1.1 PackageKit.spec, 1.27, 1.28
- Next message (by thread): rpms/blender/EL-4 blender-2.44-bid.patch, NONE, 1.1 blender-2.44-scons.patch, NONE, 1.1 blender-2.45-cve-2008-1102.patch, NONE, 1.1 blender-2.45-gcc43.patch, NONE, 1.1 blender-2.45-sc.patch, NONE, 1.1 blender-2.45-yafray.patch, NONE, 1.1 blender.desktop, 1.2, 1.3 blender.spec, 1.7, 1.8
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the fedora-extras-commits
mailing list