]> git.neil.brown.name Git - edlib.git/commitdiff
Use attributes to get name of document instead of direct access.
authorNeilBrown <neil@brown.name>
Thu, 10 Dec 2015 02:42:16 +0000 (13:42 +1100)
committerNeilBrown <neil@brown.name>
Thu, 10 Dec 2015 04:10:10 +0000 (15:10 +1100)
This removes another doc_from_pane() call.

Signed-off-by: NeilBrown <neil@brown.name>
core-doc.c
lib-view.c

index 95366e28251f762f89f2385335ce512651f65cc2..2d8129dc95ad4ee1b8e391785727d4d31109ada0 100644 (file)
@@ -410,6 +410,11 @@ DEF_CMD(doc_handle)
                return 1;
        }
 
+       if (strcmp(ci->key, "doc:get-attr") == 0 &&
+           strcmp(ci->str, "doc:name") == 0)
+               return comm_call(ci->comm2, "callback:get_attr", ci->focus, 0,
+                                NULL, dd->doc->name, 0);
+
        if (strcmp(ci->key, "doc:add-view") == 0) {
                if (!ci->comm2)
                        return -1;
index 722f5421578086839f3dc751d6aaa20a51f726af..4d3b193b1786509066d12fc1748e5506196d9db8 100644 (file)
@@ -48,7 +48,7 @@ static int view_refresh(struct cmd_info *ci)
        char msg[100];
        int i;
        int mid;
-       struct doc *d = doc_from_pane(ci->home);
+       char *name;
 
        pane_check_size(p);
        p->cx = 0; p->cy = 0;
@@ -84,11 +84,14 @@ static int view_refresh(struct cmd_info *ci)
                for (i = 0; i < p->h; i++)
                        pane_text(p, '|', "inverse", p->w-1, i);
        }
+       if (vd->border & (BORDER_TOP | BORDER_BOT)) {
+               name = pane_attr_get(p, "doc:name");
+       }
        if (vd->border & BORDER_TOP) {
                int label;
                for (i = 0; i < p->w; i++)
                        pane_text(p, '-', "inverse", i, 0);
-               snprintf(msg, sizeof(msg), "%s", d->name);
+               snprintf(msg, sizeof(msg), "%s", name);
                label = (p->w - strlen(msg)) / 2;
                if (label < 1)
                        label = 1;
@@ -102,9 +105,9 @@ static int view_refresh(struct cmd_info *ci)
                if (!(vd->border & BORDER_TOP)) {
                        if (c >= 0)
                                snprintf(msg, sizeof(msg), "L%d W%d C%d D:%s",
-                                        l,w,c, d->name);
+                                        l,w,c, name);
                        else
-                               snprintf(msg, sizeof(msg),"%s", d->name);
+                               snprintf(msg, sizeof(msg),"%s", name);
                        for (i = 0; msg[i] && i+4 < p->w; i++)
                                pane_text(p, msg[i], "inverse", i+4, p->h-1);
                }