[FlexGrid] ツールチップ表示中にペーストすると、ツールチップの内容も一緒にペーストされる

文書番号 : 81924     文書種別 : Bug
登録日 : 2016/12/21     最終更新日 : 2017/04/11

対象製品

Wijmo 5

ステータス

修正済み

詳細

Ctrl+Vキーを押下し、セルへペーストを行う際、ツールチップが表示されていると、セルにペーストされるデータの後にツールチップの内容が続けてペーストされてしまいます。

【再現手順】
1. 6行2列目のセルを選択します。
2. Ctrl+Cを押下します。
3. Ctrl+Vを押下したまま、FlexGrid上をマウスで移動し、ツールチップを表示させます。
結果:ペースト処理が連続で呼ばれるが、たまにツールチップの内容が一緒にペーストされます。

サンプル


回避方法

この問題はバージョン5.20163.254で修正されました。
修正版の適用方法については、アップデートの方法を参照してください。

修正版を適用しない場合の回避方法は次の通りです。

下記コードのようにpastingイベントとpastedイベントでフラグを管理し、ペースト中はツールチップの内容を表示しないようにします。

◆サンプルコード(JavaScript)
----------------------------------
var flg = true;
flex.pasting.addHandler(function (s, e) {
  flg = false;
});

flex.pasted.addHandler(function (s, e) {
  flg = true;
});

flex.hostElement.addEventListener('mousemove', function (evt) {
  var ht = flex.hitTest(evt);
  if (flg && !ht.range.equals(rng)) {
    if (ht.cellType == wijmo.grid.CellType.Cell) {
      rng = ht.range;
      var cellElement = document.elementFromPoint(evt.clientX, evt.clientY),
        cellBounds = flex.getCellBoundingRect(ht.row, ht.col),
        data = wijmo.escapeHtml(flex.getCellData(rng.row, rng.col, true)),
        tipContent = 'cell (' + rng.row + ' ' + rng.col + ') contains "<b>' + data + '</b>"';

      if (cellElement.className.indexOf('wj-cell') > -1) {
        tip.show(flex.hostElement, tipContent, cellBounds);
      }
      else {
        tip.hide();
      }
    }
  }
});
----------------------------------