さていよいよ選択範囲に ThinButtonを貼付ける。
完成コードはこんなかんじ。選択範囲の拡大縮小・移動に伴い ThinButtonも移動する。
ソース:RubberBand-15.zip
位置決め用にメソッドを追加する。指定された NSRect の右下 (-5, -5)にボタンの右下が来るように位置決めする。
-(void)setButtonBarWithFrame:(NSRect)frame
{
NSPoint p;
NSRect bounds = [_button_bar bounds];
p.x = frame.origin.x + frame.size.width - bounds.size.width - 5.0;
p.y = frame.origin.y + frame.size.height - bounds.size.height - 5.0;
[_button_bar setFrameOrigin:p];
}
その上で RubberBandが拡大縮小、移動を行なう個所でこのメソッドを呼出せば良い。
なお初期状態ではボタンを表示させたくないので初期化時に NSView#setHidden:NO を使い隠しておく。範囲選択が始まったところで今度は setHidden:YES を呼出して表示する。
- - - -
ThinButton が部品化されていたのであっけないほど簡単にできてしまった。
範囲サイズが小さい時にボタンが使いづらいのでここを少し調整するか。