Added a gconf key to swap the meanings of the right and

middle buttons when the modifier key is held down.
        Closes #437910.  Thanks to Matt Kraai for looking over
        the patch.
	* src/core/display.c:
	* src/core/prefs.c:
	* src/include/prefs.h:
	* src/metacity.schemas.in.in:


svn path=/trunk/; revision=4091
This commit is contained in:
Thomas James Alexander Thurman 2009-01-27 21:05:42 +00:00
parent f5fa4a3866
commit 0a172cc053
5 changed files with 58 additions and 3 deletions

View File

@ -1,3 +1,15 @@
2009-01-27 Thomas Thurman <tthurman@gnome.org>
Added a gconf key to swap the meanings of the right and
middle buttons when the modifier key is held down.
Closes #437910. Thanks to Matt Kraai for looking over
the patch.
* src/core/display.c:
* src/core/prefs.c:
* src/include/prefs.h:
* src/metacity.schemas.in.in:
2009-01-27 Thomas Thurman <tthurman@gnome.org> 2009-01-27 Thomas Thurman <tthurman@gnome.org>
All the window properties are now handled using simple All the window properties are now handled using simple

View File

@ -1669,7 +1669,7 @@ event_callback (XEvent *event,
if (!unmodified) if (!unmodified)
begin_move = TRUE; begin_move = TRUE;
} }
else if (!unmodified && event->xbutton.button == 2) else if (!unmodified && event->xbutton.button == meta_prefs_get_mouse_button_resize())
{ {
if (window->has_resize_func) if (window->has_resize_func)
{ {
@ -1718,7 +1718,7 @@ event_callback (XEvent *event,
event->xbutton.y_root); event->xbutton.y_root);
} }
} }
else if (event->xbutton.button == 3) else if (event->xbutton.button == meta_prefs_get_mouse_button_menu())
{ {
if (meta_prefs_get_raise_on_click ()) if (meta_prefs_get_raise_on_click ())
meta_window_raise (window); meta_window_raise (window);

View File

@ -94,6 +94,7 @@ static gboolean gnome_animations = TRUE;
static char *cursor_theme = NULL; static char *cursor_theme = NULL;
static int cursor_size = 24; static int cursor_size = 24;
static gboolean compositing_manager = FALSE; static gboolean compositing_manager = FALSE;
static gboolean resize_with_right_button = FALSE;
static MetaVisualBellType visual_bell_type = META_VISUAL_BELL_FULLSCREEN_FLASH; static MetaVisualBellType visual_bell_type = META_VISUAL_BELL_FULLSCREEN_FLASH;
static MetaButtonLayout button_layout; static MetaButtonLayout button_layout;
@ -403,6 +404,11 @@ static MetaBoolPreference preferences_bool[] =
&compositing_manager, &compositing_manager,
FALSE, FALSE,
}, },
{ "/apps/metacity/general/resize_with_right_button",
META_PREF_RESIZE_WITH_RIGHT_BUTTON,
&resize_with_right_button,
FALSE,
},
{ NULL, 0, NULL, FALSE }, { NULL, 0, NULL, FALSE },
}; };
@ -1740,6 +1746,9 @@ meta_preference_to_string (MetaPreference pref)
case META_PREF_COMPOSITING_MANAGER: case META_PREF_COMPOSITING_MANAGER:
return "COMPOSITING_MANAGER"; return "COMPOSITING_MANAGER";
case META_PREF_RESIZE_WITH_RIGHT_BUTTON:
return "RESIZE_WITH_RIGHT_BUTTON";
} }
return "(unknown)"; return "(unknown)";
@ -2714,6 +2723,18 @@ meta_prefs_get_compositing_manager (void)
return compositing_manager; return compositing_manager;
} }
guint
meta_prefs_get_mouse_button_resize (void)
{
return resize_with_right_button ? 3: 2;
}
guint
meta_prefs_get_mouse_button_menu (void)
{
return resize_with_right_button ? 2: 3;
}
void void
meta_prefs_set_compositing_manager (gboolean whether) meta_prefs_set_compositing_manager (gboolean whether)
{ {

View File

@ -58,7 +58,8 @@ typedef enum
META_PREF_GNOME_ANIMATIONS, META_PREF_GNOME_ANIMATIONS,
META_PREF_CURSOR_THEME, META_PREF_CURSOR_THEME,
META_PREF_CURSOR_SIZE, META_PREF_CURSOR_SIZE,
META_PREF_COMPOSITING_MANAGER META_PREF_COMPOSITING_MANAGER,
META_PREF_RESIZE_WITH_RIGHT_BUTTON
} MetaPreference; } MetaPreference;
typedef void (* MetaPrefsChangedFunc) (MetaPreference pref, typedef void (* MetaPrefsChangedFunc) (MetaPreference pref,
@ -73,6 +74,8 @@ void meta_prefs_init (void);
const char* meta_preference_to_string (MetaPreference pref); const char* meta_preference_to_string (MetaPreference pref);
MetaVirtualModifier meta_prefs_get_mouse_button_mods (void); MetaVirtualModifier meta_prefs_get_mouse_button_mods (void);
guint meta_prefs_get_mouse_button_resize (void);
guint meta_prefs_get_mouse_button_menu (void);
MetaFocusMode meta_prefs_get_focus_mode (void); MetaFocusMode meta_prefs_get_focus_mode (void);
MetaFocusNewWindows meta_prefs_get_focus_new_windows (void); MetaFocusNewWindows meta_prefs_get_focus_new_windows (void);
gboolean meta_prefs_get_raise_on_click (void); gboolean meta_prefs_get_raise_on_click (void);

View File

@ -15,12 +15,31 @@
Clicking a window while holding down this modifier key Clicking a window while holding down this modifier key
will move the window (left click), resize the window will move the window (left click), resize the window
(middle click), or show the window menu (right click). (middle click), or show the window menu (right click).
The left and right operations may be swapped
using the "mouse_button_resize" key.
Modifier is expressed as "&lt;Alt&gt;" or "&lt;Super&gt;" Modifier is expressed as "&lt;Alt&gt;" or "&lt;Super&gt;"
for example. for example.
</long> </long>
</locale> </locale>
</schema> </schema>
<schema>
<key>/schemas/apps/metacity/general/resize_with_right_button</key>
<applyto>/apps/metacity/general/resize_with_right_button</applyto>
<owner>metacity</owner>
<type>bool</type>
<default>false</default>
<locale name="C">
<short>Whether to resize with the right button</short>
<long>
Set this to true to resize with the right button and show a menu
with the middle button while holding down the key given in
"mouse_button_modifier"; set it to false to make it work the
opposite way around.
</long>
</locale>
</schema>
<schema> <schema>
<key>/schemas/apps/metacity/general/button_layout</key> <key>/schemas/apps/metacity/general/button_layout</key>
<applyto>/apps/metacity/general/button_layout</applyto> <applyto>/apps/metacity/general/button_layout</applyto>