Add code to configure what happens when the titlebar is right or middle
2007-04-24 Linus Torvalds <torvalds@woody.linux-foundation.org> * src/prefs.[ch] (init_action_meta_prefs, meta_prefs_init, action_change_titlebar, change_notify, update_action_titlebar, meta_preference_to_string): Add code to configure what happens when the titlebar is right or middle clicked as well as double clicked. svn path=/trunk/; revision=3214
This commit is contained in:
parent
a50b3c7a2b
commit
1724fa36f1
3 changed files with 73 additions and 27 deletions
|
@ -1,3 +1,11 @@
|
|||
2007-04-24 Linus Torvalds <torvalds@woody.linux-foundation.org>
|
||||
|
||||
* src/prefs.[ch] (init_action_meta_prefs, meta_prefs_init,
|
||||
action_change_titlebar, change_notify, update_action_titlebar,
|
||||
meta_preference_to_string): Add code to configure what happens
|
||||
when the titlebar is right or middle clicked as well as
|
||||
double clicked.
|
||||
|
||||
2007-04-23 Elijah Newren <newren gmail com>
|
||||
|
||||
* configure.in: post-release bump to 2.19.8.
|
||||
|
|
90
src/prefs.c
90
src/prefs.c
|
@ -144,7 +144,7 @@ static gboolean update_visual_bell_type (const char *value);
|
|||
static gboolean update_num_workspaces (int value);
|
||||
static gboolean update_application_based (gboolean value);
|
||||
static gboolean update_disable_workarounds (gboolean value);
|
||||
static gboolean update_action_double_click_titlebar (const char *value);
|
||||
static gboolean update_action_titlebar (const char *key, const char *value, MetaActionTitlebar *action);
|
||||
static gboolean update_auto_raise (gboolean value);
|
||||
static gboolean update_auto_raise_delay (int value);
|
||||
static gboolean update_button_layout (const char *value);
|
||||
|
@ -353,6 +353,20 @@ get_bool (const char *key, gboolean *val)
|
|||
|
||||
return filled_in;
|
||||
}
|
||||
|
||||
static void
|
||||
init_action_meta_prefs(const char *key, MetaActionTitlebar *action)
|
||||
{
|
||||
GError *err = NULL;
|
||||
char *str_val;
|
||||
|
||||
str_val = gconf_client_get_string (default_client,
|
||||
key,
|
||||
&err);
|
||||
cleanup_error (&err);
|
||||
update_action_titlebar (key, str_val, action);
|
||||
g_free (str_val);
|
||||
}
|
||||
#endif /* HAVE_GCONF */
|
||||
|
||||
void
|
||||
|
@ -413,12 +427,9 @@ meta_prefs_init (void)
|
|||
if (get_bool (KEY_RAISE_ON_CLICK, &bool_val))
|
||||
update_raise_on_click (bool_val);
|
||||
|
||||
str_val = gconf_client_get_string (default_client,
|
||||
KEY_ACTION_DOUBLE_CLICK_TITLEBAR,
|
||||
&err);
|
||||
cleanup_error (&err);
|
||||
update_action_double_click_titlebar (str_val);
|
||||
g_free (str_val);
|
||||
init_action_meta_prefs (KEY_ACTION_DOUBLE_CLICK_TITLEBAR, &action_double_click_titlebar);
|
||||
init_action_meta_prefs (KEY_ACTION_MIDDLE_CLICK_TITLEBAR, &action_middle_click_titlebar);
|
||||
init_action_meta_prefs (KEY_ACTION_RIGHT_CLICK_TITLEBAR, &action_right_click_titlebar);
|
||||
|
||||
if (get_bool (KEY_AUTO_RAISE, &bool_val))
|
||||
update_auto_raise (bool_val);
|
||||
|
@ -558,6 +569,23 @@ meta_prefs_init (void)
|
|||
|
||||
#ifdef HAVE_GCONF
|
||||
|
||||
static gboolean
|
||||
action_change_titlebar (const char *key, GConfValue *value, MetaActionTitlebar *action)
|
||||
{
|
||||
const char *str;
|
||||
|
||||
if (value && value->type != GCONF_VALUE_STRING)
|
||||
{
|
||||
meta_warning (_("GConf key \"%s\" is set to an invalid type\n"),
|
||||
key);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
str = value ? gconf_value_get_string (value) : NULL;
|
||||
|
||||
return update_action_titlebar (key, str, action);
|
||||
}
|
||||
|
||||
static void
|
||||
change_notify (GConfClient *client,
|
||||
guint cnxn_id,
|
||||
|
@ -806,19 +834,21 @@ change_notify (GConfClient *client,
|
|||
}
|
||||
else if (strcmp (key, KEY_ACTION_DOUBLE_CLICK_TITLEBAR) == 0)
|
||||
{
|
||||
const char *str;
|
||||
|
||||
if (value && value->type != GCONF_VALUE_STRING)
|
||||
{
|
||||
meta_warning (_("GConf key \"%s\" is set to an invalid type\n"),
|
||||
key);
|
||||
goto out;
|
||||
}
|
||||
|
||||
str = value ? gconf_value_get_string (value) : NULL;
|
||||
|
||||
if (update_action_double_click_titlebar (str))
|
||||
if (action_change_titlebar(KEY_ACTION_DOUBLE_CLICK_TITLEBAR, value, &action_double_click_titlebar))
|
||||
queue_changed (META_PREF_ACTION_DOUBLE_CLICK_TITLEBAR);
|
||||
return;
|
||||
}
|
||||
else if (strcmp (key, KEY_ACTION_MIDDLE_CLICK_TITLEBAR) == 0)
|
||||
{
|
||||
if (action_change_titlebar(KEY_ACTION_MIDDLE_CLICK_TITLEBAR, value, &action_middle_click_titlebar))
|
||||
queue_changed (META_PREF_ACTION_MIDDLE_CLICK_TITLEBAR);
|
||||
return;
|
||||
}
|
||||
else if (strcmp (key, KEY_ACTION_RIGHT_CLICK_TITLEBAR) == 0)
|
||||
{
|
||||
if (action_change_titlebar(KEY_ACTION_RIGHT_CLICK_TITLEBAR, value, &action_right_click_titlebar))
|
||||
queue_changed (META_PREF_ACTION_RIGHT_CLICK_TITLEBAR);
|
||||
return;
|
||||
}
|
||||
else if (strcmp (key, KEY_AUTO_RAISE) == 0)
|
||||
{
|
||||
|
@ -1653,23 +1683,23 @@ action_titlebar_from_string (const char *str)
|
|||
}
|
||||
|
||||
static gboolean
|
||||
update_action_double_click_titlebar (const char *value)
|
||||
update_action_titlebar (const char *key, const char *value, MetaActionTitlebar *action)
|
||||
{
|
||||
MetaActionTitlebar old_action = action_double_click_titlebar;
|
||||
MetaActionTitlebar old_action = *action, new_action = old_action;
|
||||
|
||||
if (value != NULL)
|
||||
{
|
||||
action_double_click_titlebar = action_titlebar_from_string (value);
|
||||
new_action = action_titlebar_from_string (value);
|
||||
|
||||
if (action_double_click_titlebar == META_ACTION_TITLEBAR_LAST)
|
||||
if (new_action == META_ACTION_TITLEBAR_LAST)
|
||||
{
|
||||
action_double_click_titlebar = old_action;
|
||||
meta_warning (_("GConf key '%s' is set to an invalid value\n"),
|
||||
KEY_ACTION_DOUBLE_CLICK_TITLEBAR);
|
||||
new_action = old_action;
|
||||
meta_warning (_("GConf key '%s' is set to an invalid value\n"), key);
|
||||
}
|
||||
*action = new_action;
|
||||
}
|
||||
|
||||
return (old_action != action_double_click_titlebar);
|
||||
return (old_action != new_action);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
|
@ -1765,6 +1795,12 @@ meta_preference_to_string (MetaPreference pref)
|
|||
case META_PREF_ACTION_DOUBLE_CLICK_TITLEBAR:
|
||||
return "ACTION_DOUBLE_CLICK_TITLEBAR";
|
||||
|
||||
case META_PREF_ACTION_MIDDLE_CLICK_TITLEBAR:
|
||||
return "ACTION_MIDDLE_CLICK_TITLEBAR";
|
||||
|
||||
case META_PREF_ACTION_RIGHT_CLICK_TITLEBAR:
|
||||
return "ACTION_RIGHT_CLICK_TITLEBAR";
|
||||
|
||||
case META_PREF_AUTO_RAISE:
|
||||
return "AUTO_RAISE";
|
||||
|
||||
|
|
|
@ -36,6 +36,8 @@ typedef enum
|
|||
META_PREF_FOCUS_NEW_WINDOWS,
|
||||
META_PREF_RAISE_ON_CLICK,
|
||||
META_PREF_ACTION_DOUBLE_CLICK_TITLEBAR,
|
||||
META_PREF_ACTION_MIDDLE_CLICK_TITLEBAR,
|
||||
META_PREF_ACTION_RIGHT_CLICK_TITLEBAR,
|
||||
META_PREF_AUTO_RAISE,
|
||||
META_PREF_AUTO_RAISE_DELAY,
|
||||
META_PREF_THEME,
|
||||
|
|
Loading…
Reference in a new issue