Return unique_ptr from ui_add_gadget_icon

This commit is contained in:
Kp 2014-12-20 04:36:09 +00:00
parent bcfd6a77f0
commit 8d487b4883
4 changed files with 11 additions and 15 deletions

View file

@ -391,7 +391,7 @@ int ui_get_file( char * filename, const char * Filespec );
void ui_draw_icon( UI_GADGET_ICON * icon );
window_event_result ui_icon_do( UI_DIALOG *dlg, UI_GADGET_ICON * icon, const d_event &event );
UI_GADGET_ICON * ui_add_gadget_icon( UI_DIALOG * dlg, const char * text, short x, short y, short w, short h, int k,int (*f)(void) );
std::unique_ptr<UI_GADGET_ICON> ui_add_gadget_icon(UI_DIALOG * dlg, const char * text, short x, short y, short w, short h, int k,int (*f)());
int DecodeKeyText( const char * text );
void GetKeyDescription( char * text, int keypress );

View file

@ -117,7 +117,7 @@ void ui_gadget_delete_all( UI_DIALOG * dlg )
delete static_cast<UI_GADGET_KEYTRAP *>(tmp);
break;
case UI_GADGET_ICON::s_kind:
delete static_cast<UI_GADGET_ICON *>(tmp);
/* Handled by returned unique_ptr */
break;
default:
throw std::runtime_error("unknown gadget kind");

View file

@ -83,9 +83,9 @@ void ui_draw_icon( UI_GADGET_ICON * icon )
}
UI_GADGET_ICON * ui_add_gadget_icon( UI_DIALOG * dlg, const char * text, short x, short y, short w, short h, int k,int (*f)(void) )
std::unique_ptr<UI_GADGET_ICON> ui_add_gadget_icon(UI_DIALOG * dlg, const char * text, short x, short y, short w, short h, int k,int (*f)())
{
auto icon = ui_gadget_add<UI_GADGET_ICON>( dlg, x, y, x+w-1, y+h-1 );
std::unique_ptr<UI_GADGET_ICON> icon{ui_gadget_add<UI_GADGET_ICON>(dlg, x, y, x+w-1, y+h-1)};
icon->width = w;
icon->height = h;
@ -97,7 +97,6 @@ UI_GADGET_ICON * ui_add_gadget_icon( UI_DIALOG * dlg, const char * text, short x
icon->position = 0;
icon->pressed = 0;
icon->canvas->cv_font = ui_small_font.get();
// Call twice to get original;
if (f)
{
@ -106,10 +105,7 @@ UI_GADGET_ICON * ui_add_gadget_icon( UI_DIALOG * dlg, const char * text, short x
} else {
icon->flag = 0;
}
return icon;
}
window_event_result ui_icon_do( UI_DIALOG *dlg, UI_GADGET_ICON * icon,const d_event &event )

View file

@ -138,13 +138,13 @@ UI_GADGET_USERBOX * FrontViewBox;
UI_GADGET_USERBOX * RightViewBox;
#endif
UI_GADGET_ICON * ViewIcon;
UI_GADGET_ICON * AllIcon;
UI_GADGET_ICON * AxesIcon;
UI_GADGET_ICON * ChaseIcon;
UI_GADGET_ICON * OutlineIcon;
UI_GADGET_ICON * LockIcon;
//-NOLIGHTICON- UI_GADGET_ICON * LightIcon;
static std::unique_ptr<UI_GADGET_ICON>
ViewIcon,
AllIcon,
AxesIcon,
ChaseIcon,
OutlineIcon,
LockIcon;
UI_EVENT * DemoBuffer = NULL;