wxSize SashHtmlWindow::DoGetBestSize() const { wxHtmlContainerCell *cell = GetInternalRepresentation(); wxSize size = GetSize(); if (cell) { cell->Layout(size.GetWidth()); return wxSize(cell->GetWidth(), cell->GetHeight()); } return wxHtmlWindow::GetBestSize(); }
/** * スレッドのHtmlWindowで右クリックした場合の処理 */ void ThreadContentWindow::OnRightClickHtmlWindow(wxMouseEvent& event) { wxMenu* copy = new wxMenu(); copy->Append(ID_CopyFromHtmlWindow, wxT("コピー")); copy->Append(ID_CopyURLFromHtmlWindow, wxT("リンクをコピー")); copy->Enable(ID_CopyURLFromHtmlWindow, false); // デフォルトでは使用不能 copy->Append(ID_SelectAllTextHtmlWindow, wxT("全て選択")); copy->Append(ID_ShowRawHtmlFromHtmlWindow, wxT("ソースを表示する")); #ifdef DEBUG // デバッグ用メニュー copy->Append(ID_HtmlSourceDebug, wxT("HTMLソース表示")); #endif // イベント発生後にあったデータをクリアする m_selectedText.Clear(); m_selectedText = this->SelectionToText(); if (m_selectedText != wxEmptyString) { // テキストを選択している場合は追加で選択肢を表示する copy->AppendSeparator(); // 検索用のアイテムを設定する wxMenuItem* itemYahoo = new wxMenuItem(copy, ID_SearchSelectWordByYahoo, wxT("選択範囲をYahooで検索")); wxMenuItem* itemGoogle = new wxMenuItem(copy, ID_SearchSelectWordByGoogle, wxT("選択範囲をGoogleで検索")); wxMenuItem* itemAmazon = new wxMenuItem(copy, ID_SearchSelectWordByAmazon, wxT("選択範囲をamazonで検索")); wxBitmap bitmap; bitmap.LoadFile(yahooIconImg, wxBITMAP_TYPE_PNG); itemYahoo->SetBitmap(bitmap); bitmap.LoadFile(googleIconImg, wxBITMAP_TYPE_PNG); itemGoogle->SetBitmap(bitmap); bitmap.LoadFile(amazonIconImg, wxBITMAP_TYPE_PNG); itemAmazon->SetBitmap(bitmap); copy->Append(itemYahoo); copy->Append(itemGoogle); copy->Append(itemAmazon); copy->Append(ID_SearchThreadBySelectWord, wxT("選択範囲でスレッドタイトル検索")); copy->AppendSeparator(); copy->Append(wxID_ANY, wxT("抽出ポップアップ")); copy->Append(wxID_ANY, wxT("この文にレス")); copy->Append(wxID_ANY, wxT("メモ欄に追加")); copy->Append(wxID_ANY, wxT("この文にメモ欄でレス")); copy->Append(wxID_ANY, wxT("選択単語でレス抽出")); wxMenu *ng = new wxMenu; ng->Append(wxID_ANY, wxT("NGWordに追加")); ng->Append(wxID_ANY, wxT("NGNameに追加")); ng->AppendSeparator(); ng->Append(wxID_ANY, wxT("選択単語であぼ~ん")); ng->Append(wxID_ANY, wxT("選択単語で透明あぼ~ん")); copy->AppendSubMenu(ng, wxT("NG処理")); copy->AppendSeparator(); } int x, y; CalcUnscrolledPosition(event.m_x, event.m_y, &x, &y); wxHtmlCell *cell = GetInternalRepresentation()->FindCellByPos(x, y); m_linkInfo = NULL; if(cell) m_linkInfo = cell->GetLink(); if (m_linkInfo) { if (m_linkInfo->GetHref() != wxEmptyString) { // リンク上で右クリックしたのでなければ使用不能に copy->Enable(ID_CopyURLFromHtmlWindow, true); } } // ポップアップメニューを表示させる PopupMenu(copy); }