Update the Windows Resource compiler (windres) to support the OWNERDRAW and BITMAP menuitem flags.
binutils* rclex.c: Add OWNERDRAW keyword. * rcparse.y: Add OWNERDRAW token. (menuitem_flag) Add BITMAP and OWNERDRAW entries. * resrc.c (write_rc_menuitems): Add support for OWNERDRAW and BITMAP flags. * windres.c (extended_menuitems): Likewise. * testsuite/binutils-all/windres/menuitem_flags.rc: New test.
This commit is contained in:
parent
e3fdc001d3
commit
d90171dec1
@ -1,3 +1,13 @@
|
||||
2020-07-09 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
* rclex.c: Add OWNERDRAW keyword.
|
||||
* rcparse.y: Add OWNERDRAW token.
|
||||
(menuitem_flag) Add BITMAP and OWNERDRAW entries.
|
||||
* resrc.c (write_rc_menuitems): Add support for OWNERDRAW and
|
||||
BITMAP flags.
|
||||
* windres.c (extended_menuitems): Likewise.
|
||||
* testsuite/binutils-all/windres/menuitem_flags.rc: New test.
|
||||
|
||||
2020-07-09 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* readelf (slurp_hppa_unwind_table): Set table_len before use
|
||||
|
@ -94,7 +94,7 @@ static const struct rclex_keywords keywds[] =
|
||||
K(LANGUAGE), K(LISTBOX), K(LOADONCALL), K(LTEXT),
|
||||
K(MANIFEST), K(MENU), K(MENUBARBREAK), K(MENUBREAK),
|
||||
K(MENUEX), K(MENUITEM), K(MESSAGETABLE), K(MOVEABLE),
|
||||
K(NOINVERT), K(NOT),
|
||||
K(NOINVERT), K(NOT), K(OWNERDRAW),
|
||||
K(PLUGPLAY), K(POPUP), K(PRELOAD), K(PRODUCTVERSION),
|
||||
K(PURE), K(PUSHBOX), K(PUSHBUTTON),
|
||||
K(RADIOBUTTON), K(RCDATA), K(RTEXT),
|
||||
|
@ -124,7 +124,7 @@ static const rc_res_id res_null_text = { 1, {{0, &null_unichar}}};
|
||||
%token ICON
|
||||
%token ANICURSOR ANIICON DLGINCLUDE DLGINIT FONTDIR HTML MANIFEST PLUGPLAY VXD TOOLBAR BUTTON
|
||||
%token LANGUAGE CHARACTERISTICS VERSIONK
|
||||
%token MENU MENUEX MENUITEM SEPARATOR POPUP CHECKED GRAYED HELP INACTIVE
|
||||
%token MENU MENUEX MENUITEM SEPARATOR POPUP CHECKED GRAYED HELP INACTIVE OWNERDRAW
|
||||
%token MENUBARBREAK MENUBREAK
|
||||
%token MESSAGETABLE
|
||||
%token RCDATA
|
||||
@ -1088,6 +1088,14 @@ menuitem_flag:
|
||||
{
|
||||
$$ = MENUITEM_MENUBREAK;
|
||||
}
|
||||
| BITMAP
|
||||
{
|
||||
$$ = MENUITEM_BITMAP;
|
||||
}
|
||||
| OWNERDRAW
|
||||
{
|
||||
$$ = MENUITEM_OWNERDRAW;
|
||||
}
|
||||
;
|
||||
|
||||
/* Menuex resources. */
|
||||
|
@ -2841,6 +2841,10 @@ write_rc_menuitems (FILE *e, const rc_menuitem *menuitems, int menuex,
|
||||
fprintf (e, ", MENUBARBREAK");
|
||||
if ((mi->type & MENUITEM_MENUBREAK) != 0)
|
||||
fprintf (e, ", MENUBREAK");
|
||||
if ((mi->type & MENUITEM_OWNERDRAW) != 0)
|
||||
fprintf (e, ", OWNERDRAW");
|
||||
if ((mi->type & MENUITEM_BITMAP) != 0)
|
||||
fprintf (e, ", BITMAP");
|
||||
}
|
||||
else
|
||||
{
|
||||
|
16
binutils/testsuite/binutils-all/windres/menuitem_flags.rc
Normal file
16
binutils/testsuite/binutils-all/windres/menuitem_flags.rc
Normal file
@ -0,0 +1,16 @@
|
||||
// parse-only
|
||||
|
||||
1 MENU
|
||||
{
|
||||
POPUP "&File"
|
||||
{
|
||||
MENUITEM "This is a test #1", 100, BITMAP
|
||||
MENUITEM "This is a test #2", 101, OWNERDRAW
|
||||
MENUITEM "This is a test #3", 102, CHECKED
|
||||
MENUITEM "This is a test #4", 103, GRAYED
|
||||
MENUITEM "This is a test #5", 104, HELP
|
||||
MENUITEM "This is a test #6", 105, INACTIVE
|
||||
MENUITEM "This is a test #7", 106, MENUBARBREAK
|
||||
MENUITEM "This is a test #8", 107, MENUBREAK
|
||||
}
|
||||
}
|
@ -527,6 +527,8 @@ extended_menuitems (const rc_menuitem *menuitems)
|
||||
| MENUITEM_HELP
|
||||
| MENUITEM_INACTIVE
|
||||
| MENUITEM_MENUBARBREAK
|
||||
| MENUITEM_BITMAP
|
||||
| MENUITEM_OWNERDRAW
|
||||
| MENUITEM_MENUBREAK))
|
||||
!= 0)
|
||||
return 1;
|
||||
|
Loading…
x
Reference in New Issue
Block a user