aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDJ Delorie <dj@redhat.com>2000-06-13 21:21:43 +0000
committerDJ Delorie <dj@redhat.com>2000-06-13 21:21:43 +0000
commit2104a50e3e7d2d543fa1ae5dc8393a985e1f786c (patch)
tree9b05d18d8fd27beb2a7d7545f823ab67210dd5f7
parent98ecb0a78be9b1064f6c7f644d2e7fccb1111f0c (diff)
downloadgdb-2104a50e3e7d2d543fa1ae5dc8393a985e1f786c.zip
gdb-2104a50e3e7d2d543fa1ae5dc8393a985e1f786c.tar.gz
gdb-2104a50e3e7d2d543fa1ae5dc8393a985e1f786c.tar.bz2
* rcparse.y (control): ICON controls take an id as the first
parameter, not an optional string. Also, call new convenience function that takes res_id's. * resrc.c (define_control): missing text means zero-length string, not zero ID. (define_icon_control): New. * windres.h: declare define_icon_control.
-rw-r--r--binutils/ChangeLog10
-rw-r--r--binutils/rcparse.y52
-rw-r--r--binutils/resrc.c37
-rw-r--r--binutils/windres.h4
4 files changed, 65 insertions, 38 deletions
diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index e6988df..d2d2080 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -1,3 +1,13 @@
+2000-06-13 DJ Delorie <dj@cygnus.com>
+
+ * rcparse.y (control): ICON controls take an id as the first
+ parameter, not an optional string. Also, call new convenience
+ function that takes res_id's.
+ * resrc.c (define_control): missing text means zero-length string,
+ not zero ID.
+ (define_icon_control): New.
+ * windres.h: declare define_icon_control.
+
2000-06-13 H.J. Lu <hjl@gnu.org>
* configure: Regenerate.
diff --git a/binutils/rcparse.y b/binutils/rcparse.y
index 03cbbdc..39551c2 100644
--- a/binutils/rcparse.y
+++ b/binutils/rcparse.y
@@ -636,39 +636,29 @@ control:
rcparse_warning (_("IEDIT requires DIALOGEX"));
res_string_to_id (&$$->class, "HEDIT");
}
- | ICON optstringc numexpr cnumexpr cnumexpr opt_control_data
- {
- $$ = define_control ($2, $3, $4, $5, 0, 0, CTL_STATIC,
- SS_ICON | WS_CHILD | WS_VISIBLE, 0);
- if ($6 != NULL)
- {
- if (dialog.ex == NULL)
- rcparse_warning (_("control data requires DIALOGEX"));
- $$->data = $6;
- }
- }
- | ICON optstringc numexpr cnumexpr cnumexpr cnumexpr cnumexpr
+ | ICON id cnumexpr cnumexpr cnumexpr opt_control_data
+ {
+ $$ = define_icon_control ($2, $3, $4, $5, 0, 0, 0, $6,
+ dialog.ex);
+ }
+ | ICON id cnumexpr cnumexpr cnumexpr cnumexpr cnumexpr
+ opt_control_data
+ {
+ $$ = define_icon_control ($2, $3, $4, $5, 0, 0, 0, $8,
+ dialog.ex);
+ }
+ | ICON id cnumexpr cnumexpr cnumexpr cnumexpr cnumexpr
icon_styleexpr optcnumexpr opt_control_data
- {
- $$ = define_control ($2, $3, $4, $5, $6, $7, CTL_STATIC,
- style, $9);
- if ($10 != NULL)
- {
- if (dialog.ex == NULL)
- rcparse_warning (_("control data requires DIALOGEX"));
- $$->data = $10;
- }
- }
- | ICON optstringc numexpr cnumexpr cnumexpr cnumexpr cnumexpr
+ {
+ $$ = define_icon_control ($2, $3, $4, $5, style, $9, 0, $10,
+ dialog.ex);
+ }
+ | ICON id numexpr cnumexpr cnumexpr cnumexpr cnumexpr
icon_styleexpr cnumexpr cnumexpr opt_control_data
- {
- $$ = define_control ($2, $3, $4, $5, $6, $7, CTL_STATIC,
- style, $9);
- if (dialog.ex == NULL)
- rcparse_warning (_("help ID requires DIALOGEX"));
- $$->help = $10;
- $$->data = $11;
- }
+ {
+ $$ = define_icon_control ($2, $3, $4, $5, style, $9, $10, $11,
+ dialog.ex);
+ }
| IEDIT
{
default_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
diff --git a/binutils/resrc.c b/binutils/resrc.c
index 814809e..a30719b 100644
--- a/binutils/resrc.c
+++ b/binutils/resrc.c
@@ -847,19 +847,42 @@ define_control (text, id, x, y, width, height, class, style, exstyle)
n->height = height;
n->class.named = 0;
n->class.u.id = class;
- if (text != NULL)
- res_string_to_id (&n->text, text);
- else
- {
- n->text.named = 0;
- n->text.u.id = 0;
- }
+ if (text == NULL)
+ text = "";
+ res_string_to_id (&n->text, text);
n->data = NULL;
n->help = 0;
return n;
}
+struct dialog_control *
+define_icon_control (iid, id, x, y, style, exstyle, help, data, ex)
+ struct res_id iid;
+ unsigned long id;
+ unsigned long x;
+ unsigned long y;
+ unsigned long style;
+ unsigned long exstyle;
+ unsigned long help;
+ struct rcdata_item *data;
+ struct dialog_ex *ex;
+{
+ struct dialog_control *n;
+ if (style == 0)
+ style = SS_ICON | WS_CHILD | WS_VISIBLE;
+ n = define_control (0, id, x, y, 0, 0, CTL_STATIC, style, exstyle);
+ n->text = iid;
+ if (help && !ex)
+ rcparse_warning (_("help ID requires DIALOGEX"));
+ if (data && !ex)
+ rcparse_warning (_("control data requires DIALOGEX"));
+ n->help = help;
+ n->data = data;
+
+ return n;
+}
+
/* Define a font resource. */
void
diff --git a/binutils/windres.h b/binutils/windres.h
index ba73612..8adc1ef 100644
--- a/binutils/windres.h
+++ b/binutils/windres.h
@@ -812,6 +812,10 @@ extern struct dialog_control *define_control
PARAMS ((const char *, unsigned long, unsigned long, unsigned long,
unsigned long, unsigned long, unsigned long, unsigned long,
unsigned long));
+extern struct dialog_control *define_icon_control
+ PARAMS ((struct res_id, unsigned long, unsigned long,
+ unsigned long, unsigned long, unsigned long, unsigned long,
+ struct rcdata_item *, struct dialog_ex *));
extern void define_font
PARAMS ((struct res_id, const struct res_res_info *, const char *));
extern void define_icon