diff -ur mozilla/widget/src/gtk/nsGtkEventHandler.cpp mozilla-colin/widget/src/gtk/nsGtkEventHandler.cpp --- mozilla/widget/src/gtk/nsGtkEventHandler.cpp Thu Jan 31 23:45:58 2002 +++ mozilla-colin/widget/src/gtk/nsGtkEventHandler.cpp Fri Mar 29 08:24:54 2002 @@ -338,7 +338,8 @@ anEvent.isControl = (aGEK->state & GDK_CONTROL_MASK) ? PR_TRUE : PR_FALSE; anEvent.isAlt = (aGEK->state & GDK_MOD1_MASK) ? PR_TRUE : PR_FALSE; // XXX For meta key, state is 0, and so are keyval and string. Sigh! - anEvent.isMeta = PR_FALSE; //(aGEK->state & GDK_MOD2_MASK) ? PR_TRUE : PR_FALSE; + // MOD2 works great here + anEvent.isMeta = (aGEK->state & GDK_MOD2_MASK) ? PR_TRUE : PR_FALSE; anEvent.point.x = 0; anEvent.point.y = 0; } @@ -360,8 +361,7 @@ anEvent.isControl = (aGEK->state & GDK_CONTROL_MASK) ? PR_TRUE : PR_FALSE; anEvent.isAlt = (aGEK->state & GDK_MOD1_MASK) ? PR_TRUE : PR_FALSE; // XXX - anEvent.isMeta = PR_FALSE; //(aGEK->state & GDK_MOD2_MASK) ? PR_TRUE : PR_FALSE; - + anEvent.isMeta = (aGEK->state & GDK_MOD2_MASK) ? PR_TRUE : PR_FALSE; anEvent.charCode = nsConvertCharCodeToUnicode(aGEK); if (anEvent.charCode) { anEvent.keyCode = 0; diff -ur mozilla/widget/src/gtk/nsWidget.cpp mozilla-colin/widget/src/gtk/nsWidget.cpp --- mozilla/widget/src/gtk/nsWidget.cpp Thu Jan 31 23:45:59 2002 +++ mozilla-colin/widget/src/gtk/nsWidget.cpp Fri Mar 29 08:20:16 2002 @@ -1885,7 +1885,7 @@ scrollEvent.isShift = (aGdkButtonEvent->state & GDK_SHIFT_MASK) ? PR_TRUE : PR_FALSE; scrollEvent.isControl = (aGdkButtonEvent->state & GDK_CONTROL_MASK) ? PR_TRUE : PR_FALSE; scrollEvent.isAlt = (aGdkButtonEvent->state & GDK_MOD1_MASK) ? PR_TRUE : PR_FALSE; - scrollEvent.isMeta = PR_FALSE; // GTK+ doesn't support the meta key + scrollEvent.isMeta = (aGdkButtonEvent->state & GDK_MOD2_MASK) ? PR_TRUE : PR_FALSE; scrollEvent.time = aGdkButtonEvent->time; AddRef(); if (mEventCallback) @@ -2093,7 +2093,7 @@ anEvent.isShift = (aGdkButtonEvent->state & GDK_SHIFT_MASK) ? PR_TRUE : PR_FALSE; anEvent.isControl = (aGdkButtonEvent->state & GDK_CONTROL_MASK) ? PR_TRUE : PR_FALSE; anEvent.isAlt = (aGdkButtonEvent->state & GDK_MOD1_MASK) ? PR_TRUE : PR_FALSE; - anEvent.isMeta = PR_FALSE; // GTK+ doesn't support the meta key + anEvent.isMeta = (aGdkButtonEvent->state & GDK_MOD2_MASK) ? PR_TRUE : PR_FALSE; anEvent.time = aGdkButtonEvent->time; switch(aGdkButtonEvent->type) diff -ur mozilla/widget/src/gtk/nsWindow.cpp mozilla-colin/widget/src/gtk/nsWindow.cpp --- mozilla/widget/src/gtk/nsWindow.cpp Thu Jan 31 23:46:01 2002 +++ mozilla-colin/widget/src/gtk/nsWindow.cpp Fri Mar 29 08:19:19 2002 @@ -3253,7 +3253,7 @@ aEvent.isShift = (state & GDK_SHIFT_MASK) ? PR_TRUE : PR_FALSE; aEvent.isControl = (state & GDK_CONTROL_MASK) ? PR_TRUE : PR_FALSE; aEvent.isAlt = (state & GDK_MOD1_MASK) ? PR_TRUE : PR_FALSE; - aEvent.isMeta = PR_FALSE; // GTK+ doesn't support the meta key + aEvent.isMeta = (state & GDK_MOD2_MASK) ? PR_TRUE : PR_FALSE; } // This will update the drag action based on the information in the @@ -4126,7 +4126,7 @@ textEvent.isControl = (aEvent->state & GDK_CONTROL_MASK) ? PR_TRUE : PR_FALSE; textEvent.isAlt = (aEvent->state & GDK_MOD1_MASK) ? PR_TRUE : PR_FALSE; // XXX - textEvent.isMeta = PR_FALSE; //(aEvent->state & GDK_MOD2_MASK) ? PR_TRUE : PR_FALSE; + textEvent.isMeta = (aEvent->state & GDK_MOD2_MASK) ? PR_TRUE : PR_FALSE; textEvent.time = aEvent->time; } else { textEvent.time = 0; diff -ur mozilla/widget/src/gtk2/nsCommonWidget.cpp mozilla-colin/widget/src/gtk2/nsCommonWidget.cpp --- mozilla/widget/src/gtk2/nsCommonWidget.cpp Sat Jan 12 08:14:53 2002 +++ mozilla-colin/widget/src/gtk2/nsCommonWidget.cpp Fri Mar 29 08:18:56 2002 @@ -134,8 +134,8 @@ ? PR_TRUE : PR_FALSE; aEvent.isAlt = (aGdkEvent->state & GDK_MOD1_MASK) ? PR_TRUE : PR_FALSE; - aEvent.isMeta = PR_FALSE; // Gtk+ doesn't have meta - + aEvent.isMeta = (aGdkEvent->state & GDK_MOD2_MASK) + ? PR_TRUE : PR_FALSE; switch (aGdkEvent->type) { case GDK_2BUTTON_PRESS: aEvent.clickCount = 2; @@ -184,8 +184,8 @@ ? PR_TRUE : PR_FALSE; aEvent.isAlt = (aGdkEvent->state & GDK_MOD1_MASK) ? PR_TRUE : PR_FALSE; - aEvent.isMeta = PR_FALSE; // Gtk+ doesn't have meta - + aEvent.isMeta = (aGdkEvent->state & GDK_MOD2_MASK) + ? PR_TRUE : PR_FALSE; } void @@ -204,7 +204,8 @@ ? PR_TRUE : PR_FALSE; aEvent.isAlt = (aGdkEvent->state & GDK_MOD1_MASK) ? PR_TRUE : PR_FALSE; - aEvent.isMeta = PR_FALSE; // Gtk+ doesn't have meta + aEvent.isMeta = (aGdkEvent->state & GDK_MOD2_MASK) + ? PR_TRUE : PR_FALSE; } void diff -ur mozilla/widget/src/gtk2/nsWindow.cpp mozilla-colin/widget/src/gtk2/nsWindow.cpp --- mozilla/widget/src/gtk2/nsWindow.cpp Wed Jan 23 07:39:48 2002 +++ mozilla-colin/widget/src/gtk2/nsWindow.cpp Fri Mar 29 08:18:35 2002 @@ -856,6 +856,8 @@ ? PR_TRUE : PR_FALSE; event.isAlt = (xevent.xmotion.state & GDK_MOD1_MASK) ? PR_TRUE : PR_FALSE; + event.isMeta = (xevent.xmotion.state & GDK_MOD2_MASK) + ? PR_TRUE : PR_FALSE; } else { event.point.x = nscoord(aEvent->x); @@ -866,6 +868,8 @@ event.isControl = (aEvent->state & GDK_CONTROL_MASK) ? PR_TRUE : PR_FALSE; event.isAlt = (aEvent->state & GDK_MOD1_MASK) + ? PR_TRUE : PR_FALSE; + event.isMeta = (aEvent->state & GDK_MOD2_MASK) ? PR_TRUE : PR_FALSE; }