fname = rxvt_temp_buf<wchar_t *> (len);
for (int i = 0; i < len; i++)
{
- rxvt_font *f = (*fs)[fs->find_font (chr[i])];
+ rxvt_font *f = (*fs)[fs->find_font_idx (chr[i])];
fname[i] = rxvt_utf8towcs (f->name);
max_it (width, wcswidth (fname[i], wcslen (fname[i])));
}
}
void
+rxvt_term::update_user_time (Time time)
+{
+ XChangeProperty (dpy, parent[0], xa[XA_NET_WM_USER_TIME], XA_CARDINAL,
+ 32, PropModeReplace, (unsigned char*)&time, 1);
+}
+
+void
rxvt_term::key_press (XKeyEvent &ev)
{
int ctrl, meta, shft, len;
ctrl = ev.state & ControlMask;
meta = ev.state & ModMetaMask;
- if (numlock_state || (ev.state & ModNumLockMask))
- {
- numlock_state = (ev.state & ModNumLockMask);
- set_privmode (PrivMode_aplKP, !numlock_state);
- }
-
kbuf[0] = 0;
#ifdef USE_XIM
# endif
return;
}
+ else if (keysym == XK_C)
+ {
+ selection_make (ev.time, true);
+# if ISO_14755
+ scr_overlay_off ();
+# endif
+ iso14755buf = 0;
+ return;
+ }
+ else if (keysym == XK_V)
+ {
+ selection_request (ev.time, Sel_Clipboard);
+# if ISO_14755
+ scr_overlay_off ();
+# endif
+ iso14755buf = 0;
+ return;
+ }
else if (keysym == XK_BackSpace)
{
iso14755buf = ((iso14755buf & ISO_14755_MASK) >> 4) | ISO_14755_51;
bool kp = priv_modes & PrivMode_aplKP ? !shft : shft;
unsigned int newlen = 1;
- switch (translate_keypad (keysym, kp))
+ if (ev.state & ModNumLockMask)
+ kp = false;
+
+ keysym = translate_keypad (keysym, kp);
+
+ switch (keysym)
{
#ifndef NO_BACKSPACE_KEY
case XK_BackSpace:
switch (ev.type)
{
case KeyPress:
+ update_user_time (ev.xkey.time);
key_press (ev.xkey);
break;
break;
case ButtonPress:
+ update_user_time (ev.xbutton.time);
button_press (ev.xbutton);
break;
{
int reportmode = 0, clickintime;
+ button_state[ev.button - Button1] = true;
+
bypass_keystate = ev.state & (ModMetaMask | ShiftMask);
if (!bypass_keystate)
{
int reportmode = 0;
+ if (button_state[ev.button - Button1] == false)
+ return; /* it wasn't pressed so why is it released? */
+
+ button_state[ev.button - Button1] = false;
+
csrO = 0; /* reset csr Offset */
if (!bypass_keystate)
reportmode = !! (priv_modes & PrivMode_mouse_report);
case Button2:
if (IN_RANGE_EXC (ev.x, 0, width) && IN_RANGE_EXC (ev.y, 0, height)) // inside window?
- selection_request (ev.time, ev.state & ModMetaMask ? Sel_Clipboard : Sel_Primary);
+ selection_request (ev.time, ev.state & ModMetaMask ? Sel_Clipboard : Sel_Primary);
break;
#ifdef MOUSE_WHEEL
case XTerm_Color_pointer_bg:
process_color_seq (op, Color_pointer_bg, str, resp);
break;
-#ifndef NO_BOLD_UNDERLINE_REVERSE
- case XTerm_Color_RV:
- process_color_seq (op, Color_RV, str, resp);
+#ifdef OPTION_HC
+ case XTerm_Color_HC:
+ process_color_seq (op, Color_HC, str, resp);
break;
- case Rxvt_Color_BD:
+ case XTerm_Color_HTC:
+ process_color_seq (op, Color_HTC, str, resp);
+ break;
+#endif
+#ifndef NO_BOLD_UNDERLINE_REVERSE
case URxvt_Color_BD:
process_color_seq (op, Color_BD, str, resp);
break;
- case Rxvt_Color_UL:
case URxvt_Color_UL:
process_color_seq (op, Color_UL, str, resp);
break;