Skip to content

Commit 213b187

Browse files
committed
Fixed crash setting OnePage layout mode
Fixed sometimes moving to last page when setting layout mode Fixed sometmes not finding last bookmark Fixed bad json in sendOpenFileResMsg
1 parent 9c264fb commit 213b187

File tree

2 files changed

+37
-20
lines changed

2 files changed

+37
-20
lines changed

cmd/cbxv/messagehandlers.go

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -87,29 +87,23 @@ func NewMessageHandlers(m *model.Model, u *ui.UI) *MessageHandlerList {
8787

8888
handlers.List["setLayoutModeOnePage"] = func(data string) {
8989
m.LayoutMode = model.ONE_PAGE
90-
m.SpreadIndex = m.PageToSpread(m.PageIndex)
9190
m.NewSpreads()
92-
if m.SpreadIndex > len(m.Spreads)-1 {
93-
m.SpreadIndex = len(m.Spreads) - 1
94-
}
91+
m.SpreadIndex = m.PageToSpread(m.PageIndex)
9592
m.RefreshPages()
9693
}
9794

9895
handlers.List["setLayoutModeTwoPage"] = func(data string) {
9996
m.LayoutMode = model.TWO_PAGE
100-
m.SpreadIndex = m.PageToSpread(m.PageIndex)
10197
m.NewSpreads()
102-
if m.SpreadIndex > len(m.Spreads)-1 {
103-
m.SpreadIndex = len(m.Spreads) - 1
104-
}
98+
m.SpreadIndex = m.PageToSpread(m.PageIndex)
10599
m.RefreshPages()
106100
}
107101

108102
handlers.List["setLayoutModeLongStrip"] = func(data string) {
109103
m.LayoutMode = model.LONG_STRIP
104+
m.NewSpreads()
110105
m.SpreadIndex = 0
111106
m.PageIndex = m.Spreads[m.SpreadIndex].VersoPage()
112-
m.NewSpreads()
113107
m.RefreshPages()
114108
}
115109

internal/model/model.go

Lines changed: 34 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -534,23 +534,46 @@ func (m *Model) RefreshPages() {
534534
}
535535
}
536536

537-
// page index to spread index
537+
// Returns 0 if spreads are nil or
538+
// page can't be found
539+
// Otherwise it guesses
540+
// fixme: Don't like it, but there's no point in telling a user about any of it
541+
// because errors detected here are almost certainly the result of a
542+
// programming error elsewhere in the program
538543
func (m *Model) PageToSpread(n int) int {
539544
if m.Spreads == nil {
545+
util.Log("p2s: spreads nil %d\n", n)
540546
return 0
541-
} else if n > len(m.Spreads)-1 {
547+
}
548+
549+
if n < 0 {
550+
util.Log("p2s: page out of range %d\n", n)
551+
return 0
552+
}
553+
554+
var pagesNil bool
555+
if m.Pages == nil {
556+
pagesNil = true
557+
util.Log("p2s: pages nil %d\n", n)
558+
}
559+
560+
if !pagesNil && n > len(m.Pages) - 1 {
561+
max := len(m.Pages) - 1
562+
util.Log("p2s: page out of range max: %d, n:%d\n", max, n)
542563
return len(m.Spreads) - 1
543-
} else if m.LayoutMode == TWO_PAGE {
544-
for i := range m.Spreads {
545-
spread := m.Spreads[i]
546-
for j := range spread.PageIdxs {
547-
if n == spread.PageIdxs[j] {
548-
return i
549-
}
564+
}
565+
566+
for i := range m.Spreads {
567+
spread := m.Spreads[i]
568+
for j := range spread.PageIdxs {
569+
if n == spread.PageIdxs[j] {
570+
return i
550571
}
551572
}
552573
}
553-
return -1
574+
575+
util.Log("p2s: page not found %d\n", n)
576+
return 0
554577
}
555578

556579
func (m *Model) loadBookmarks() {
@@ -622,7 +645,7 @@ func (m *Model) sendOpenFileResMsg(code ResultCode, description string) {
622645
r := Result{code, description}
623646
buf, err := json.Marshal(r)
624647
if err != nil {
625-
d = fmt.Sprintf("{\"code\":%d,\"result\":%s}", r.Code, r.Description)
648+
d = fmt.Sprintf("{\"code\":%d,\"result\":\"%s\"}", r.Code, r.Description)
626649
} else {
627650
d = string(buf)
628651
}

0 commit comments

Comments
 (0)