mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-17 22:46:16 +00:00
Make the notebook portion (dive notes/equipment/info) a scrollable window
This makes things start up with the wrong size, which is somewhat annoying, but by doing so avoids a bigger annoyance, namely that the three panes move around when moving between dives. In particular, if the initial dive didn't have much of an equipment list, the initial size allocated for the notebook is fairly small and determined mainly by the size of the the Dive Notes page. However, when you then scroll around in the dive list, you might hit a dive with lots of equipment, and suddenly the panes dividing the different parts of the subsurface application window will jump around to make room. That's horribly annoying, and actually makes things like double-clicking dives in the dive list not work right, because the first click will select it, and cause the dive to move around (so the second click will hit a totally different dive). Now, making the notebook be in a scrollable window means that if the size of the notebook changes, it might get a scrollbar, but the panes themselves do not move around. The initial sizing of that thing being wrong is annoying, though. We need to figure out a separate solution to that. [ Side note: currently it uses GTK_POLICY_NEVER for the horizontal scroll-bar, just to avoid the horizontal size also starting out wrong, which is *really* nasty. If we can solve the initial size issue, we should make the horizontal scroll-bar be GTK_POLICY_AUTOMATIC too. ] Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
bc53bbb10b
commit
ed6356f7d9
1 changed files with 6 additions and 2 deletions
|
@ -755,6 +755,7 @@ void init_ui(int *argcp, char ***argvp)
|
|||
GtkWidget *dive_list;
|
||||
GtkWidget *menubar;
|
||||
GtkWidget *vbox;
|
||||
GtkWidget *scrolled;
|
||||
GdkScreen *screen;
|
||||
GtkIconTheme *icon_theme=NULL;
|
||||
GtkSettings *settings;
|
||||
|
@ -826,13 +827,16 @@ void init_ui(int *argcp, char ***argvp)
|
|||
|
||||
vpane = gtk_vpaned_new();
|
||||
gtk_box_pack_start(GTK_BOX(vbox), vpane, TRUE, TRUE, 3);
|
||||
|
||||
hpane = gtk_hpaned_new();
|
||||
gtk_paned_add1(GTK_PANED(vpane), hpane);
|
||||
g_signal_connect_after(G_OBJECT(vbox), "realize", G_CALLBACK(view_three), NULL);
|
||||
|
||||
/* Notebook for dive info vs profile vs .. */
|
||||
notebook = gtk_notebook_new();
|
||||
gtk_paned_add1(GTK_PANED(hpane), notebook);
|
||||
scrolled = gtk_scrolled_window_new(NULL, NULL);
|
||||
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
|
||||
gtk_paned_add1(GTK_PANED(hpane), scrolled);
|
||||
gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scrolled), notebook);
|
||||
g_signal_connect(notebook, "switch-page", G_CALLBACK(switch_page), NULL);
|
||||
|
||||
/* Create the actual divelist */
|
||||
|
|
Loading…
Add table
Reference in a new issue