File:  [Isaki's NoNo m68k/m88k emulator] / nono / wx / wxfitframe.cpp
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Wed Apr 29 17:04:53 2026 UTC (3 months ago) by root
Branches: MAIN, Isaki
CVS tags: v010, HEAD
nono 0.1.6

//
// nono
// Copyright (C) 2021 nono project
// Licensed under nono-license.txt
//

// クライアントサイズを正しく扱える wxFrame ラッパークラス。
// wxFrame の代わりに必ずこれを使うこと。
//
// Ubuntu など、ウィンドウマネージャによっては(?)、
// まだ実画面を持っていないコンストラクタ時点でのクライアントサイズの指定は
// ウィンドウサイズを設定してしまうようだ。そのため、実際にウィンドウが表示
// されると、ウィンドウマネージャのフレーム分だけ小さいクライアント領域を
// もったウィンドウが出来てしまう。
// とりあえず、実際にウィンドウを描画した後に Fit() を行えば解決するのと、
// これに副作用もなさそうなので、OnPaint イベントを一回呼び出して Fit() だけ
// 行い、イベントも取り外す。

#include "wxfitframe.h"

// コンストラクタ
WXFitFrame::WXFitFrame(wxWindow *parent, wxWindowID id, const wxString& title,
	long style)
	: inherited(parent, id, title, wxDefaultPosition, wxDefaultSize, style)
{
	Connect(wxEVT_PAINT, wxPaintEventHandler(WXFitFrame::OnPaint));
}

// 描画イベント
// (確実にウィンドウが表示された後で呼ばれるイベントという意味で)
void
WXFitFrame::OnPaint(wxPaintEvent& event)
{
	assert(IsShownOnScreen() == true);

	// ここで Fit する
	Fit();
	// もう不要なので取り外す
	Disconnect(wxEVT_PAINT, wxPaintEventHandler(WXFitFrame::OnPaint));
}

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.