[C++] 339 BBS閲覧アプリの製作 その25 ホバー色設定 / 右クリックでdatファイル削除 FLTK

[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;
    }