2016-06-16 11 views
0

を処理し、私はこのようなコードの部分を持っている例外をスロークリップボードのテキストが解放されていないように見えます(私はもはやクリップボードにコピーできません)。FLTK内部の私はFLTK 1.3.3使用してい

私は成功せず、可能な回避策を試してみました:

class MyWidget: public Fl_Widget 
{ 
private: 
    std::string textBuffer; 

private: 
    static void MyCallBack(Fl_Widget *,void *); 
    virtual int handle(int) override; 
    void ParseClipboardText(const std::string &); 

public: 
    MyWidget(); 
}; 

MyWidget::MyWidget() 
{ 
callback(&MyCallBack); 
when(FL_WHEN_CHANGED); 
// ... 
} 

int MyWidget::handle(int event) 
{ 
if (event==FL_PASTE) 
    { 
    textBuffer= Fl::event_text(); 
    set_changed(); 
    return 1; 
    } 
return Fl_Widget::handle(event); 
} 

void MyWidget::MyCallBack(Fl_Widget *pw,void *) 
{ 
    MyWidget *pmw= static_cast<MyWidget *>(pw); 

    pmw->ParseClipboardText(pmw->textBuffer); 
} 

はすぐhandle復帰後に呼び出されるコールバック関数をスケジューリングする方法はありますか?

+0

投げているセクションの周りにtry-catchを配置してみてください。 – cup

+0

@cup私はできないのではないかと恐れている。私は、例外をキャッチし、適切なウィジェットを表示し、関連するイベントを処理したい。 – metalfox

答えて

0

最も簡単な解決策はhandleredraw(またはdamageより良い)を呼び出し伴い、その後handleが完了した後、draw方法で潜在的に投げる関数を呼び出しているようです。

クリップボードの内容を解放しないという問題は、Windowsでは発生しますが、Linuxでは発生しません。

関連する問題