diff options
author | Nick Clifton <nickc@redhat.com> | 2020-07-09 13:45:01 +0100 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2020-07-09 13:45:01 +0100 |
commit | d90171dec11cdde259564c1ca728043b7e82427e (patch) | |
tree | b5522fea01f73a63eb4209a628548caf29a1aa75 | |
parent | e3fdc001d359d6bcd033c1276c772e72d3f49078 (diff) | |
download | gdb-d90171dec11cdde259564c1ca728043b7e82427e.zip gdb-d90171dec11cdde259564c1ca728043b7e82427e.tar.gz gdb-d90171dec11cdde259564c1ca728043b7e82427e.tar.bz2 |
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.
-rw-r--r-- | binutils/ChangeLog | 10 | ||||
-rw-r--r-- | binutils/rclex.c | 2 | ||||
-rw-r--r-- | binutils/rcparse.y | 10 | ||||
-rw-r--r-- | binutils/resrc.c | 4 | ||||
-rw-r--r-- | binutils/testsuite/binutils-all/windres/menuitem_flags.rc | 16 | ||||
-rw-r--r-- | binutils/windres.c | 2 |
6 files changed, 42 insertions, 2 deletions
diff --git a/binutils/ChangeLog b/binutils/ChangeLog index a5d6fad..9f6be43 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -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 diff --git a/binutils/rclex.c b/binutils/rclex.c index d6a0f91..fac74b0 100644 --- a/binutils/rclex.c +++ b/binutils/rclex.c @@ -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), diff --git a/binutils/rcparse.y b/binutils/rcparse.y index 78ce917..c0ed338 100644 --- a/binutils/rcparse.y +++ b/binutils/rcparse.y @@ -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. */ diff --git a/binutils/resrc.c b/binutils/resrc.c index a875c3a..5a6336e 100644 --- a/binutils/resrc.c +++ b/binutils/resrc.c @@ -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 { diff --git a/binutils/testsuite/binutils-all/windres/menuitem_flags.rc b/binutils/testsuite/binutils-all/windres/menuitem_flags.rc new file mode 100644 index 0000000..cbd59e4 --- /dev/null +++ b/binutils/testsuite/binutils-all/windres/menuitem_flags.rc @@ -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 + } +} diff --git a/binutils/windres.c b/binutils/windres.c index 427e982..5c83dab 100644 --- a/binutils/windres.c +++ b/binutils/windres.c @@ -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; |