#include <windows.h>
#include <imm.h>
#include <commctrl.h>
+#include <mmsystem.h>
#ifndef AUTO_WINSOCK
#ifdef WINSOCK_TWO
#include <winsock2.h>
* have one.)
*/
void sys_cursor(int x, int y) {
- SetCaretPos(x * font_width, y * font_height);
+ if (has_focus)
+ SetCaretPos(x * font_width, y * font_height);
}
/*
*/
void beep(int mode) {
if (mode == BELL_DEFAULT) {
+ /*
+ * For MessageBeep style bells, we want to be careful of
+ * timing, because they don't have the nice property of
+ * PlaySound bells that each one cancels the previous
+ * active one. So we limit the rate to one per 50ms or so.
+ */
+ static long lastbeep = 0;
+ long now, beepdiff;
+
+ now = GetTickCount();
+ beepdiff = now - lastbeep;
+ if (beepdiff >= 0 && beepdiff < 50)
+ return;
MessageBeep(MB_OK);
+ lastbeep = now;
} else if (mode == BELL_WAVEFILE) {
if (!PlaySound(cfg.bell_wavefile, NULL, SND_ASYNC | SND_FILENAME)) {
char buf[sizeof(cfg.bell_wavefile)+80];