Make modifier buttons truly abstract

This commit is contained in:
Berke Viktor 2012-10-21 03:03:38 +02:00
parent ef18ded827
commit 0c04cfed7f
7 changed files with 22 additions and 23 deletions

View File

@ -87,10 +87,6 @@ void key_action_tab_clean (void);
/* Remember that the *number* of actions is this *plus* 1 --AGL */ /* Remember that the *number* of actions is this *plus* 1 --AGL */
#define KEY_MAX_ACTIONS 14 #define KEY_MAX_ACTIONS 14
/* These are cp'ed from history.c --AGL */
#define STATE_SHIFT GDK_SHIFT_MASK
#define STATE_ALT GDK_MOD1_MASK
#define STATE_CTRL GDK_CONTROL_MASK
struct key_binding struct key_binding
{ {
@ -325,7 +321,7 @@ key_handle_key_press (GtkWidget *wid, GdkEventKey *evt, session *sess)
/* gtktextview has no 'activate' event, so we trap ENTER here */ /* gtktextview has no 'activate' event, so we trap ENTER here */
case GDK_Return: case GDK_Return:
case GDK_KP_Enter: case GDK_KP_Enter:
if (!(evt->state & GDK_CONTROL_MASK)) if (!(evt->state & STATE_CTRL))
{ {
g_signal_stop_emission_by_name (G_OBJECT (wid), "key_press_event"); g_signal_stop_emission_by_name (G_OBJECT (wid), "key_press_event");
mg_inputbox_cb (wid, sess->gui); mg_inputbox_cb (wid, sess->gui);
@ -1738,11 +1734,6 @@ key_action_put_history (GtkWidget * wid, GdkEventKey * ent, char *d1,
/* -------- */ /* -------- */
#define STATE_SHIFT GDK_SHIFT_MASK
#define STATE_ALT GDK_MOD1_MASK
#define STATE_CTRL GDK_CONTROL_MASK
static void static void
replace_handle (GtkWidget *t) replace_handle (GtkWidget *t)
{ {

View File

@ -1,3 +1,8 @@
/* These are cp'ed from history.c --AGL */
#define STATE_SHIFT GDK_SHIFT_MASK
#define STATE_ALT GDK_MOD1_MASK
#define STATE_CTRL GDK_CONTROL_MASK
void key_init (void); void key_init (void);
void key_dialog_show (void); void key_dialog_show (void);
int key_handle_key_press (GtkWidget * wid, GdkEventKey * evt, session *sess); int key_handle_key_press (GtkWidget * wid, GdkEventKey * evt, session *sess);

View File

@ -1652,7 +1652,7 @@ static gboolean
mg_tab_contextmenu_cb (chanview *cv, chan *ch, int tag, gpointer ud, GdkEventButton *event) mg_tab_contextmenu_cb (chanview *cv, chan *ch, int tag, gpointer ud, GdkEventButton *event)
{ {
/* shift-click to close a tab */ /* shift-click to close a tab */
if ((event->state & GDK_SHIFT_MASK) && event->type == GDK_BUTTON_PRESS) if ((event->state & STATE_SHIFT) && event->type == GDK_BUTTON_PRESS)
{ {
mg_xbutton_cb (cv, ch, tag, ud); mg_xbutton_cb (cv, ch, tag, ud);
return FALSE; return FALSE;

View File

@ -2097,8 +2097,8 @@ menu_create_main (void *accel_group, int bar, int away, int toplevel,
GtkWidget *menu_bar; GtkWidget *menu_bar;
GtkWidget *usermenu = 0; GtkWidget *usermenu = 0;
GtkWidget *submenu = 0; GtkWidget *submenu = 0;
int close_mask = GDK_CONTROL_MASK; int close_mask = STATE_CTRL;
int away_mask = GDK_MOD1_MASK; int away_mask = STATE_ALT;
char *key_theme = NULL; char *key_theme = NULL;
GtkSettings *settings; GtkSettings *settings;
GSList *group = NULL; GSList *group = NULL;
@ -2162,7 +2162,7 @@ menu_create_main (void *accel_group, int bar, int away, int toplevel,
{ {
if (!g_ascii_strcasecmp (key_theme, "Emacs")) if (!g_ascii_strcasecmp (key_theme, "Emacs"))
{ {
close_mask = GDK_SHIFT_MASK | GDK_CONTROL_MASK; close_mask = STATE_SHIFT | STATE_CTRL;
mymenu[SEARCH_OFFSET].key = 0; mymenu[SEARCH_OFFSET].key = 0;
} }
g_free (key_theme); g_free (key_theme);
@ -2174,7 +2174,7 @@ menu_create_main (void *accel_group, int bar, int away, int toplevel,
char *help = _("_Help"); char *help = _("_Help");
char *under = strchr (help, '_'); char *under = strchr (help, '_');
if (under && (under[1] == 'a' || under[1] == 'A')) if (under && (under[1] == 'a' || under[1] == 'A'))
away_mask = GDK_MOD1_MASK | GDK_CONTROL_MASK; away_mask = STATE_ALT | STATE_CTRL;
} }
if (!toplevel) if (!toplevel)
@ -2229,8 +2229,8 @@ normalitem:
mymenu[i].key == GDK_F1 ? 0 : mymenu[i].key == GDK_F1 ? 0 :
mymenu[i].key == GDK_w ? close_mask : mymenu[i].key == GDK_w ? close_mask :
(g_ascii_isupper (mymenu[i].key)) ? (g_ascii_isupper (mymenu[i].key)) ?
GDK_SHIFT_MASK | GDK_CONTROL_MASK : STATE_SHIFT | STATE_CTRL :
GDK_CONTROL_MASK, STATE_CTRL,
GTK_ACCEL_VISIBLE); GTK_ACCEL_VISIBLE);
if (mymenu[i].callback) if (mymenu[i].callback)
g_signal_connect (G_OBJECT (item), "activate", g_signal_connect (G_OBJECT (item), "activate",
@ -2252,7 +2252,7 @@ togitem:
if (mymenu[i].key != 0) if (mymenu[i].key != 0)
gtk_widget_add_accelerator (item, "activate", accel_group, gtk_widget_add_accelerator (item, "activate", accel_group,
mymenu[i].key, mymenu[i].id == MENU_ID_AWAY ? mymenu[i].key, mymenu[i].id == MENU_ID_AWAY ?
away_mask : GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE); away_mask : STATE_CTRL, GTK_ACCEL_VISIBLE);
if (mymenu[i].callback) if (mymenu[i].callback)
g_signal_connect (G_OBJECT (item), "toggled", g_signal_connect (G_OBJECT (item), "toggled",
G_CALLBACK (mymenu[i].callback), 0); G_CALLBACK (mymenu[i].callback), 0);

View File

@ -43,6 +43,7 @@
#include "gtkutil.h" #include "gtkutil.h"
#include "menu.h" #include "menu.h"
#include "pixmaps.h" #include "pixmaps.h"
#include "fkeys.h"
/* servlistgui.c globals */ /* servlistgui.c globals */
@ -366,7 +367,7 @@ servlist_net_keypress_cb (GtkWidget *wid, GdkEventKey *evt, gpointer tree)
if (!selected_net) if (!selected_net)
return FALSE; return FALSE;
if (evt->state & GDK_SHIFT_MASK) if (evt->state & STATE_SHIFT)
{ {
if (evt->keyval == GDK_Up) if (evt->keyval == GDK_Up)
{ {
@ -387,7 +388,7 @@ servlist_serv_keypress_cb (GtkWidget *wid, GdkEventKey *evt, gpointer userdata)
if (!selected_net || !selected_serv) if (!selected_net || !selected_serv)
return FALSE; return FALSE;
if (evt->state & GDK_SHIFT_MASK) if (evt->state & STATE_SHIFT)
{ {
if (evt->keyval == GDK_Up) if (evt->keyval == GDK_Up)
{ {

View File

@ -47,6 +47,7 @@
#include "menu.h" #include "menu.h"
#include "pixmaps.h" #include "pixmaps.h"
#include "userlistgui.h" #include "userlistgui.h"
#include "fkeys.h"
#ifdef USE_GTKSPELL #ifdef USE_GTKSPELL
#include <gtk/gtktextview.h> #include <gtk/gtktextview.h>
@ -518,7 +519,7 @@ userlist_click_cb (GtkWidget *widget, GdkEventButton *event, gpointer userdata)
if (!event) if (!event)
return FALSE; return FALSE;
if (!(event->state & GDK_CONTROL_MASK) && if (!(event->state & STATE_CTRL) &&
event->type == GDK_2BUTTON_PRESS && prefs.doubleclickuser[0]) event->type == GDK_2BUTTON_PRESS && prefs.doubleclickuser[0])
{ {
nicks = userlist_selection_list (widget, &i); nicks = userlist_selection_list (widget, &i);

View File

@ -71,6 +71,7 @@
#include "../common/xchatc.h" #include "../common/xchatc.h"
#include "fe-gtk.h" #include "fe-gtk.h"
#include "xtext.h" #include "xtext.h"
#include "fkeys.h"
#define charlen(str) g_utf8_skip[*(guchar *)(str)] #define charlen(str) g_utf8_skip[*(guchar *)(str)]
@ -2005,7 +2006,7 @@ gtk_xtext_check_mark_stamp (GtkXText *xtext, GdkModifierType mask)
{ {
gboolean redraw = FALSE; gboolean redraw = FALSE;
if (mask & GDK_SHIFT_MASK || prefs.autocopy_stamp) if (mask & STATE_SHIFT || prefs.autocopy_stamp)
{ {
if (!xtext->mark_stamp) if (!xtext->mark_stamp)
{ {
@ -2255,7 +2256,7 @@ gtk_xtext_button_release (GtkWidget * widget, GdkEventButton * event)
if (xtext->buffer->last_ent_start) if (xtext->buffer->last_ent_start)
{ {
xtext->color_paste = FALSE; xtext->color_paste = FALSE;
if (event->state & GDK_CONTROL_MASK || prefs.autocopy_color) if (event->state & STATE_CTRL || prefs.autocopy_color)
xtext->color_paste = TRUE; xtext->color_paste = TRUE;
if (prefs.autocopy_text) if (prefs.autocopy_text)
{ {