Handle mouse properties.
This commit is contained in:
parent
48afecfd9c
commit
f666939831
5 changed files with 79 additions and 6 deletions
3
gnome-settings-daemon/.cvsignore
Normal file
3
gnome-settings-daemon/.cvsignore
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
Makefile
|
||||||
|
Makefile.in
|
||||||
|
gnome-settings-daemon
|
|
@ -69,6 +69,15 @@ gnome_settings_daemon_register_callback (const char *dir,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GtkWidget *
|
||||||
|
gnome_settings_daemon_get_invisible (void)
|
||||||
|
{
|
||||||
|
static GtkWidget *invisible = NULL;
|
||||||
|
if (invisible == NULL)
|
||||||
|
invisible = gtk_invisible_new ();
|
||||||
|
return invisible;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
config_notify (GConfEngine *client,
|
config_notify (GConfEngine *client,
|
||||||
guint cnxn_id,
|
guint cnxn_id,
|
||||||
|
|
|
@ -25,10 +25,13 @@
|
||||||
#define GNOME_SETTINGS_XSETTINGS_H
|
#define GNOME_SETTINGS_XSETTINGS_H
|
||||||
|
|
||||||
#include <gconf/gconf.h>
|
#include <gconf/gconf.h>
|
||||||
|
#include <gtk/gtk.h>
|
||||||
|
|
||||||
|
|
||||||
typedef void (* KeyCallbackFunc) (GConfEntry *entry);
|
typedef void (* KeyCallbackFunc) (GConfEntry *entry);
|
||||||
|
|
||||||
void gnome_settings_daemon_register_callback (const char *dir,
|
void gnome_settings_daemon_register_callback (const char *dir,
|
||||||
KeyCallbackFunc func);
|
KeyCallbackFunc func);
|
||||||
|
GtkWidget *gnome_settings_daemon_get_invisible (void);
|
||||||
|
|
||||||
#endif /* GNOME_SETTINGS_XSETTINGS_H */
|
#endif /* GNOME_SETTINGS_XSETTINGS_H */
|
||||||
|
|
|
@ -1,10 +1,58 @@
|
||||||
#include <X11/Xlib.h>
|
#include <gdk/gdk.h>
|
||||||
#include <gdk/gdkx.h>
|
#include <gdk/gdkx.h>
|
||||||
#include <gconf/gconf.h>
|
#include <gconf/gconf.h>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
|
||||||
#define MAX_BUTTONS 10
|
#define MAX_BUTTONS 10
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
GdkWindow *window = NULL;
|
||||||
|
|
||||||
|
static gint
|
||||||
|
locate_pointer_expose (GtkWidget *widget,
|
||||||
|
GdkExposeEvent *event,
|
||||||
|
gpointer data)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void
|
||||||
|
create_window (void)
|
||||||
|
{
|
||||||
|
GdkWindowAttr attributes;
|
||||||
|
attributes.window_type = GDK_WINDOW_CHILD;
|
||||||
|
attributes.wclass = GDK_INPUT_OUTPUT;
|
||||||
|
attributes.visual = gtk_widget_get_visual (GTK_WIDGET (tree_view));
|
||||||
|
attributes.colormap = gtk_widget_get_colormap (GTK_WIDGET (tree_view));
|
||||||
|
attributes.event_mask = GDK_VISIBILITY_NOTIFY_MASK | GDK_EXPOSURE_MASK | GDK_POINTER_MOTION_MASK;
|
||||||
|
window = gdk_window_new (gdk_get_default_root_window (),
|
||||||
|
&attributes,
|
||||||
|
GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP);
|
||||||
|
gdk_window_set_user_data (tree_view->priv->drag_highlight_window, gnome_settings_daemon_get_invisible ());
|
||||||
|
g_signal_connect (G_OBJECT (gnome_settings_daemon_get_invisible ()),
|
||||||
|
"expose_event",
|
||||||
|
locate_pointer_expose,
|
||||||
|
NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
locate_pointer (void)
|
||||||
|
{
|
||||||
|
GtkWidget *window;
|
||||||
|
gint cursor_x, cursor_y;
|
||||||
|
|
||||||
|
window = gtk_window_new (GTK_WINDOW_POPUP);
|
||||||
|
gdk_window_get_pointer (NULL, &cursor_x, &cursor_y, NULL);
|
||||||
|
|
||||||
|
if (window == NULL)
|
||||||
|
create_window ();
|
||||||
|
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
set_left_handed (gboolean left_handed)
|
set_left_handed (gboolean left_handed)
|
||||||
{
|
{
|
||||||
|
@ -12,6 +60,7 @@ set_left_handed (gboolean left_handed)
|
||||||
gint n_buttons, i;
|
gint n_buttons, i;
|
||||||
gint idx_1 = 0, idx_3 = 1;
|
gint idx_1 = 0, idx_3 = 1;
|
||||||
|
|
||||||
|
g_print ("daemon: set_left_handed %d\n", left_handed);
|
||||||
n_buttons = XGetPointerMapping (GDK_DISPLAY (), buttons, MAX_BUTTONS);
|
n_buttons = XGetPointerMapping (GDK_DISPLAY (), buttons, MAX_BUTTONS);
|
||||||
|
|
||||||
for (i = 0; i < n_buttons; i++)
|
for (i = 0; i < n_buttons; i++)
|
||||||
|
@ -95,10 +144,13 @@ set_drag_threshold (gint drag_threshold)
|
||||||
static void
|
static void
|
||||||
mouse_callback (GConfEntry *entry)
|
mouse_callback (GConfEntry *entry)
|
||||||
{
|
{
|
||||||
|
g_print ("daemon: gconf callback %s\n", entry->key);
|
||||||
if (! strcmp (entry->key, "/desktop/gnome/peripherals/mouse/left_handed"))
|
if (! strcmp (entry->key, "/desktop/gnome/peripherals/mouse/left_handed"))
|
||||||
{
|
{
|
||||||
if (entry->value->type == GCONF_VALUE_BOOL)
|
if (entry->value->type == GCONF_VALUE_BOOL)
|
||||||
set_left_handed (gconf_value_get_bool (entry->value));
|
set_left_handed (gconf_value_get_bool (entry->value));
|
||||||
|
else
|
||||||
|
g_warning ("wrong type!\n");
|
||||||
}
|
}
|
||||||
else if (! strcmp (entry->key, "/desktop/gnome/peripherals/mouse/motion_acceleration"))
|
else if (! strcmp (entry->key, "/desktop/gnome/peripherals/mouse/motion_acceleration"))
|
||||||
{
|
{
|
||||||
|
@ -122,5 +174,4 @@ gnome_settings_mouse_init (GConfEngine *engine)
|
||||||
void
|
void
|
||||||
gnome_settings_mouse_load (GConfEngine *engine)
|
gnome_settings_mouse_load (GConfEngine *engine)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,6 +26,9 @@ translate_int_int (TranslationEntry *trans,
|
||||||
{
|
{
|
||||||
g_assert (value->type == trans->gconf_type);
|
g_assert (value->type == trans->gconf_type);
|
||||||
|
|
||||||
|
g_print ("setting %s %d\n",
|
||||||
|
trans->xsetting_name,
|
||||||
|
gconf_value_get_int (value));
|
||||||
xsettings_manager_set_int (manager, trans->xsetting_name,
|
xsettings_manager_set_int (manager, trans->xsetting_name,
|
||||||
gconf_value_get_int (value));
|
gconf_value_get_int (value));
|
||||||
}
|
}
|
||||||
|
@ -36,13 +39,16 @@ translate_string_string (TranslationEntry *trans,
|
||||||
{
|
{
|
||||||
g_assert (value->type == trans->gconf_type);
|
g_assert (value->type == trans->gconf_type);
|
||||||
|
|
||||||
|
g_print ("setting %s %s\n",
|
||||||
|
trans->xsetting_name,
|
||||||
|
gconf_value_get_string (value));
|
||||||
xsettings_manager_set_string (manager,
|
xsettings_manager_set_string (manager,
|
||||||
trans->xsetting_name,
|
trans->xsetting_name,
|
||||||
gconf_value_get_string (value));
|
gconf_value_get_string (value));
|
||||||
}
|
}
|
||||||
|
|
||||||
static TranslationEntry translations [] = {
|
static TranslationEntry translations [] = {
|
||||||
{ "/desktop/gnome/double-click-time", "Net/DoubleClickTime", GCONF_VALUE_INT,
|
{ "/desktop/gnome/peripherals/mouse/double_click", "Net/DoubleClickTime", GCONF_VALUE_INT,
|
||||||
translate_int_int },
|
translate_int_int },
|
||||||
{ "/desktop/gnome/gtk-color-palette", "Gtk/ColorPalette", GCONF_VALUE_STRING,
|
{ "/desktop/gnome/gtk-color-palette", "Gtk/ColorPalette", GCONF_VALUE_STRING,
|
||||||
translate_string_string },
|
translate_string_string },
|
||||||
|
@ -135,6 +141,7 @@ xsettings_callback (GConfEntry *entry)
|
||||||
TranslationEntry *trans;
|
TranslationEntry *trans;
|
||||||
trans = find_translation_entry (entry->key);
|
trans = find_translation_entry (entry->key);
|
||||||
|
|
||||||
|
g_print ("daemon: notified on %s\n", entry->key);
|
||||||
if (trans == NULL)
|
if (trans == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -146,7 +153,7 @@ xsettings_callback (GConfEntry *entry)
|
||||||
void
|
void
|
||||||
gnome_settings_xsettings_init (GConfEngine *engine)
|
gnome_settings_xsettings_init (GConfEngine *engine)
|
||||||
{
|
{
|
||||||
gnome_settings_daemon_register_callback ("/desktop/standard", xsettings_callback);
|
gnome_settings_daemon_register_callback ("/desktop/gnome/peripherals/mouse", xsettings_callback);
|
||||||
gnome_settings_daemon_register_callback ("/desktop/gtk", xsettings_callback);
|
gnome_settings_daemon_register_callback ("/desktop/gtk", xsettings_callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue