Introduction
Introduction Statistics Contact Development Disclaimer Help
make a function for the common code for opening/plumbing a feed or item - sfeed…
git clone git://git.codemadness.org/sfeed_curses
Log
Files
Refs
README
LICENSE
---
commit 263fecaf915f6ae1ea2b2fea1f599502c9500b20
parent 031a577c39cdd4fcf518569d2ca7e869e646313f
Author: Hiltjo Posthuma <[email protected]>
Date: Thu, 25 Mar 2021 22:38:21 +0100
make a function for the common code for opening/plumbing a feed or item
The common code was in the mouse handling and key handling and it is large
enough to be a separate function also.
Diffstat:
M sfeed_curses.c | 92 +++++++++++++++--------------…
1 file changed, 44 insertions(+), 48 deletions(-)
---
diff --git a/sfeed_curses.c b/sfeed_curses.c
@@ -1476,6 +1476,41 @@ feeds_reloadall(void)
updatetitle();
}
+void
+feed_open_selected(struct pane *p)
+{
+ struct feed *f;
+ struct row *row;
+
+ row = pane_row_get(p, p->pos);
+ f = (struct feed *)row->data;
+ feeds_set(f);
+ urls_read();
+ if (f->fp)
+ feed_load(f, f->fp);
+ urls_free();
+ /* redraw row: counts could be changed */
+ updatesidebar();
+ updatetitle();
+
+ if (layout == LayoutMonocle) {
+ selpane = PaneItems;
+ updategeom();
+ }
+}
+
+void
+feed_plumb_selected_item(struct pane *p)
+{
+ struct row *row;
+ struct item *item;
+
+ row = pane_row_get(p, p->pos);
+ item = (struct item *)row->data;
+ markread(p, p->pos, p->pos, 1);
+ forkexec((char *[]) { plumbercmd, item->fields[FieldLink], NULL }, plu…
+}
+
/* calculate optimal (default) size */
int
getsidebarsizedefault(void)
@@ -1670,7 +1705,6 @@ void
mousereport(int button, int release, int keymask, int x, int y)
{
struct pane *p;
- struct feed *f;
struct row *row;
struct item *item;
size_t i;
@@ -1718,30 +1752,10 @@ mousereport(int button, int release, int keymask, int x…
if (!p->nrows || pos >= p->nrows)
break;
pane_setpos(p, pos);
- if (i == PaneFeeds) {
- row = pane_row_get(p, p->pos);
- f = (struct feed *)row->data;
- feeds_set(f);
- urls_read();
- if (f->fp)
- feed_load(f, f->fp);
- urls_free();
- /* redraw row: counts could be changed */
- updatesidebar();
- updatetitle();
-
- if (layout == LayoutMonocle) {
- selpane = PaneItems;
- updategeom();
- }
- } else if (i == PaneItems) {
- if (dblclick && !changedpane) {
- row = pane_row_get(p, p->pos);
- item = (struct item *)row->data;
- markread(p, p->pos, p->pos, 1);
- forkexec((char *[]) { plumbercmd, item…
- }
- }
+ if (i == PaneFeeds)
+ feed_open_selected(&panes[PaneFeeds]);
+ else if (i == PaneItems && dblclick && !changedpane)
+ feed_plumb_selected_item(&panes[PaneItems]);
break;
case 2: /* right-click */
if (!p->nrows || pos >= p->nrows)
@@ -2300,29 +2314,11 @@ nextpage:
break;
case 'o': /* feeds: load, items: plumb URL */
case '\n':
- p = &panes[selpane];
- if (selpane == PaneFeeds && panes[selpane].nrows) {
- row = pane_row_get(p, p->pos);
- f = (struct feed *)row->data;
- feeds_set(f);
- urls_read();
- if (f->fp)
- feed_load(f, f->fp);
- urls_free();
- /* redraw row: counts could be changed */
- updatesidebar();
- updatetitle();
-
- if (layout == LayoutMonocle) {
- selpane = PaneItems;
- updategeom();
- }
- } else if (selpane == PaneItems && panes[selpane].nrow…
- row = pane_row_get(p, p->pos);
- item = (struct item *)row->data;
- markread(p, p->pos, p->pos, 1);
- forkexec((char *[]) { plumbercmd, item->fields…
- }
+openitem:
+ if (selpane == PaneFeeds && panes[selpane].nrows)
+ feed_open_selected(&panes[PaneFeeds]);
+ else if (selpane == PaneItems && panes[selpane].nrows)
+ feed_plumb_selected_item(&panes[PaneItems]);
break;
case 'c': /* items: pipe TSV line to program */
case 'p':
You are viewing proxied material from codemadness.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.