patch 8.2.1727: a popup created with "cursorline" will ignore "firstline"

Problem:    A popup created with "cursorline" will ignore "firstline".
Solution:   When both "cursorline" and "firstline" are present put the cursor
            on "firstline". (closes #7000)  Add the "winid" argument to
            getcurpos().
diff --git a/src/popupwin.c b/src/popupwin.c
index d29986d..6080ecb 100644
--- a/src/popupwin.c
+++ b/src/popupwin.c
@@ -593,8 +593,9 @@
 	    ++wp->w_topline;
     }
 
-    // Don't use "firstline" now.
-    wp->w_firstline = 0;
+    // Don't let "firstline" cause a scroll.
+    if (wp->w_firstline > 0)
+	wp->w_firstline = wp->w_topline;
 }
 
 /*
@@ -948,6 +949,18 @@
     if (nr > 0)
 	wp->w_popup_flags |= POPF_HIDDEN;
 
+    // when "firstline" and "cursorline" are both set move the cursor to the
+    // "firstline".
+    if (wp->w_firstline > 0 && (wp->w_popup_flags & POPF_CURSORLINE))
+    {
+	if (wp->w_firstline > wp->w_buffer->b_ml.ml_line_count)
+	    wp->w_cursor.lnum = wp->w_buffer->b_ml.ml_line_count;
+	else
+	    wp->w_cursor.lnum = wp->w_firstline;
+	wp->w_topline = wp->w_cursor.lnum;
+	curwin->w_valid &= ~VALID_BOTLINE;
+    }
+
     popup_mask_refresh = TRUE;
     popup_highlight_curline(wp);
 }