aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2020-07-09 13:45:01 +0100
committerNick Clifton <nickc@redhat.com>2020-07-09 13:45:01 +0100
commitd90171dec11cdde259564c1ca728043b7e82427e (patch)
treeb5522fea01f73a63eb4209a628548caf29a1aa75
parente3fdc001d359d6bcd033c1276c772e72d3f49078 (diff)
downloadgdb-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/ChangeLog10
-rw-r--r--binutils/rclex.c2
-rw-r--r--binutils/rcparse.y10
-rw-r--r--binutils/resrc.c4
-rw-r--r--binutils/testsuite/binutils-all/windres/menuitem_flags.rc16
-rw-r--r--binutils/windres.c2
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;