コード例 #1
0
ファイル: wininput.c プロジェクト: B-Rich/mintty
static pos
translate_pos(int x, int y)
{
  return (pos){
    .x = floorf((x - PADDING) / (float)font_width ),
    .y = floorf((y - PADDING) / (float)font_height), 
  };
}

static pos
get_mouse_pos(LPARAM lp)
{
  return translate_pos(GET_X_LPARAM(lp), GET_Y_LPARAM(lp));  
}

static mouse_button clicked_button;
static pos last_pos;

void
win_mouse_click(mouse_button b, LPARAM lp)
{
  static mouse_button last_button;
  static uint last_time, count;
  static pos last_click_pos;

  win_show_mouse();
  mod_keys mods = get_mods();
  pos p = get_mouse_pos(lp);
  
  if (clicked_button) {
    term_mouse_release(b, mods, p);
    clicked_button = 0;
  }
  
  uint t = GetMessageTime();
  if (b != last_button ||
      p.x != last_click_pos.x || p.y != last_click_pos.y ||
      t - last_time > GetDoubleClickTime() || ++count > 3)
    count = 1;
  term_mouse_click(b, mods, p, count);
  last_pos = last_click_pos = p;
  last_time = t;
  clicked_button = last_button = b;
  if (alt_state > ALT_NONE)
    alt_state = ALT_CANCELLED;
}

void
win_mouse_release(mouse_button b, LPARAM lp)
{
  win_show_mouse();
  if (b == clicked_button) {
    term_mouse_release(b, get_mods(), get_mouse_pos(lp));
    clicked_button = 0;
    ReleaseCapture();
  }
}  
コード例 #2
0
ファイル: wininput.c プロジェクト: panos--/fatty
void
win_mouse_release(mouse_button b, LPARAM lp)
{
  if (tab_bar_click(lp)) return;
  term_mouse_release(win_active_terminal(), b, get_mods(), get_mouse_pos(lp));
  ReleaseCapture();
}
コード例 #3
0
ファイル: wininput.c プロジェクト: Jactry/mintty
void
win_mouse_release(mouse_button b, LPARAM lp)
{
  term_mouse_release(b, get_mods(), get_mouse_pos(lp));
  ReleaseCapture();
}