source: context.c @ 7ce30a9

release-1.6release-1.7release-1.8release-1.9
Last change on this file since 7ce30a9 was 2a17b63, checked in by Nelson Elhage <nelhage@mit.edu>, 12 years ago
Push and pop contexts whenever we change context. This allows us to get rid of the awful hack in owl_process_input_char, and opens the path to being able to invoke popup windows from the editwin and vice versa (In fact, you can now do so without segfaulting, although the display layer does not yet quite do the right thing).
  • Property mode set to 100644
File size: 1.2 KB
Line 
1#include <string.h>
2#include "owl.h"
3
4#define SET_ACTIVE(ctx, new) ctx->mode = ((ctx->mode)&~OWL_CTX_ACTIVE_BITS)|new
5#define SET_MODE(ctx, new) ctx->mode = ((ctx->mode)&~OWL_CTX_MODE_BITS)|new
6
7int owl_context_init(owl_context *ctx)
8{
9  ctx->mode = OWL_CTX_STARTUP;
10  ctx->data = NULL;
11  return 0;
12}
13
14
15/* returns whether test matches the current context */
16int owl_context_matches(const owl_context *ctx, int test)
17{
18  /*owl_function_debugmsg(", current: 0x%04x test: 0x%04x\n", ctx->mode, test);*/
19  if ((((ctx->mode&OWL_CTX_MODE_BITS) & test)
20       || !(test&OWL_CTX_MODE_BITS))
21      && 
22      (((ctx->mode&OWL_CTX_ACTIVE_BITS) & test) 
23       || !(test&OWL_CTX_ACTIVE_BITS))) {
24    return 1;
25  } else {
26    return 0;
27  }
28}
29
30void *owl_context_get_data(const owl_context *ctx)
31{
32  return ctx->data;
33}
34
35int owl_context_get_mode(const owl_context *ctx)
36{
37  return ctx->mode & OWL_CTX_MODE_BITS;
38}
39
40int owl_context_get_active(const owl_context *ctx)
41{
42  return ctx->mode & OWL_CTX_ACTIVE_BITS;
43}
44
45int owl_context_is_startup(const owl_context *ctx)
46{
47  return (ctx->mode & OWL_CTX_STARTUP)?1:0;
48}
49
50int owl_context_is_interactive(const owl_context *ctx)
51{
52  return(ctx->mode & OWL_CTX_INTERACTIVE)?1:0;
53}
Note: See TracBrowser for help on using the repository browser.