[M1 Mac, MacOS Ventura 13.3.1, clang 14.0.3]
アプリに2つの機能を追加しました。
1.スレッド一覧にホバーした際、色が変わる。左クリックするとさらに色が変わる。マウスボタンを放すと元の色に戻る。
2.スレッドタイトルを右クリックするとdatファイルを削除する。
#include "MyButton.h"
MyButton::MyButton(int x, int y, int width, int height, const char *L) : Fl_Button(x, y, width, height, L)
{
}
int MyButton::handle(int event) {
switch (event) {
case FL_ENTER :{ // マウスオーバー
color(fl_rgb_color(160,216,239));
redraw();
return 1;
}
case FL_LEAVE :{ // マウスが離れる
color(FL_WHITE);
redraw();
return 1;
}
case FL_PUSH:{ // マウスボタンを押す
color(fl_rgb_color(0,255,255));
redraw();
break;
// return 1にするとセルが灰色になり元に戻らない
// breakはFl_Buttonを上書き?、return 1は追記?
}
case FL_RELEASE :{ // マウスボタンを放す
do_callback(FL_REASON_RELEASED);
color(fl_rgb_color(0,255,255));
redraw();
return 1;
}
default:
return Fl_Button::handle(event);
}
}
// 右ボタンクリックの場合はdatファイルを削除
int buttonType = Fl::event_button();
cout << "buttonType: " << buttonType << endl;
if (buttonType == 3){ // マウス左ボタン:1,中央:2,右:3
std::ifstream datFile(filename);
if (datFile.is_open()) {
if (std::remove(filename.c_str()) != 0) {
cout << "datファイルの削除に失敗しました。" << endl;
} else {
cout << "datファイルが正常に削除されました。" << endl;
}
return;
}
return;
}