aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStig Bjørlykke <stig@bjorlykke.org>2008-05-11 18:03:22 +0000
committerStig Bjørlykke <stig@bjorlykke.org>2008-05-11 18:03:22 +0000
commit319f71c537bf55a7cdfe0ea51d1909ad24c6491b (patch)
tree9df8e29a9cd5fbdc663b6cac52a7099288cd467f
parent61465d414138d77418058ffcda5ad58fa2f515d1 (diff)
Sort list before thaw to avoid flicker when doing capture.
Save pane size in recent. svn path=/trunk/; revision=25275
-rw-r--r--gtk/recent.c14
-rw-r--r--gtk/recent.h1
-rw-r--r--gtk/wlan_stat_dlg.c32
3 files changed, 32 insertions, 15 deletions
diff --git a/gtk/recent.c b/gtk/recent.c
index 755e78012b..8f860327a1 100644
--- a/gtk/recent.c
+++ b/gtk/recent.c
@@ -73,6 +73,7 @@
#define RECENT_GUI_GEOMETRY_MAIN_LOWER_PANE "gui.geometry_main_lower_pane"
#define RECENT_GUI_GEOMETRY_STATUS_PANE_LEFT "gui.geometry_status_pane"
#define RECENT_GUI_GEOMETRY_STATUS_PANE_RIGHT "gui.geometry_status_pane_right"
+#define RECENT_GUI_GEOMETRY_WLAN_STATS_PANE "gui.geometry_status_wlan_stats_pane"
#define RECENT_GUI_FILEOPEN_REMEMBERED_DIR "gui.fileopen_remembered_dir"
#define RECENT_GUI_GEOMETRY "gui.geom."
#define RECENT_KEY_PRIVS_WARN_IF_ELEVATED "privs.warn_if_elevated"
@@ -210,6 +211,11 @@ write_recent(void)
recent.gui_geometry_status_pane_right);
}
+ fprintf(rf, "\n# WLAN statistics upper pane size.\n");
+ fprintf(rf, "# Decimal number.\n");
+ fprintf(rf, RECENT_GUI_GEOMETRY_WLAN_STATS_PANE ": %d\n",
+ recent.gui_geometry_wlan_stats_pane);
+
fprintf(rf, "\n# Warn if running with elevated permissions (e.g. as root).\n");
fprintf(rf, "# TRUE or FALSE (case-insensitive).\n");
fprintf(rf, RECENT_KEY_PRIVS_WARN_IF_ELEVATED ": %s\n",
@@ -455,6 +461,13 @@ read_set_recent_common_pair_static(gchar *key, gchar *value, void *private_data
return PREFS_SET_SYNTAX_ERR; /* number must be positive */
recent.gui_geometry_status_pane_left = num;
recent.has_gui_geometry_status_pane = TRUE;
+ } else if (strcmp(key, RECENT_GUI_GEOMETRY_WLAN_STATS_PANE) == 0) {
+ num = strtol(value, &p, 0);
+ if (p == value || *p != '\0')
+ return PREFS_SET_SYNTAX_ERR; /* number was bad */
+ if (num <= 0)
+ return PREFS_SET_SYNTAX_ERR; /* number must be positive */
+ recent.gui_geometry_wlan_stats_pane = num;
} else if (strncmp(key, RECENT_GUI_GEOMETRY, sizeof(RECENT_GUI_GEOMETRY)-1) == 0) {
/* now have something like "gui.geom.main.x", split it into win and sub_key */
char *win = &key[sizeof(RECENT_GUI_GEOMETRY)-1];
@@ -742,6 +755,7 @@ recent_read_static(char **rf_path_return, int *rf_errno_return)
recent.gui_geometry_status_pane_left = (DEF_WIDTH/3);
recent.gui_geometry_status_pane_right = (DEF_WIDTH/3);
+ recent.gui_geometry_wlan_stats_pane = 200;
recent.privs_warn_if_elevated = TRUE;
recent.privs_warn_if_no_npf = TRUE;
diff --git a/gtk/recent.h b/gtk/recent.h
index e682f04095..697c6892f9 100644
--- a/gtk/recent.h
+++ b/gtk/recent.h
@@ -74,6 +74,7 @@ typedef struct recent_settings_tag {
gboolean has_gui_geometry_status_pane; /* gui_geometry_status_pane is valid */
gint gui_geometry_status_pane_left;
gint gui_geometry_status_pane_right;
+ gint gui_geometry_wlan_stats_pane;
gboolean privs_warn_if_elevated;
gboolean privs_warn_if_no_npf;
gboolean has_recent_common;
diff --git a/gtk/wlan_stat_dlg.c b/gtk/wlan_stat_dlg.c
index ff017493f3..65515244b0 100644
--- a/gtk/wlan_stat_dlg.c
+++ b/gtk/wlan_stat_dlg.c
@@ -54,6 +54,7 @@
#include "gtk/dlg_utils.h"
#include "gtk/gui_stat_menu.h"
#include "gtk/gui_utils.h"
+#include "gtk/recent.h"
#include "gtk/help_dlg.h"
#include "image/clist_ascend.xpm"
@@ -96,6 +97,7 @@ typedef struct wlan_ep {
} wlan_ep_t;
static GtkWidget *wlanstat_dlg_w = NULL;
+static GtkWidget *wlanstat_pane = NULL;
/* used to keep track of the statistics for an entire program interface */
typedef struct _wlan_stat_t {
@@ -415,9 +417,9 @@ wlan_click_column_cb(GtkCList *clist, gint column, gpointer data)
gtk_widget_show(col_arrows[column].ascend_pm);
gtk_clist_set_sort_column(clist, column);
}
- gtk_clist_thaw(clist);
gtk_clist_sort(clist);
+ gtk_clist_thaw(clist);
}
static void
@@ -446,9 +448,9 @@ wlan_detail_click_column_cb(GtkCList *clist, gint column, gpointer data)
gtk_widget_show(col_arrows[column].ascend_pm);
gtk_clist_set_sort_column(clist, column);
}
- gtk_clist_thaw(clist);
gtk_clist_sort(clist);
+ gtk_clist_thaw(clist);
}
static gint
@@ -533,8 +535,8 @@ wlanstat_details(wlanstat_t *hs, wlan_ep_t *wlan_ep)
}
/* clear list before printing */
- gtk_clist_clear (GTK_CLIST(hs->details));
gtk_clist_freeze(GTK_CLIST(hs->details));
+ gtk_clist_clear (GTK_CLIST(hs->details));
hs->num_details = 0;
for(tmp = wlan_ep->details; tmp; tmp=tmp->next) {
@@ -581,9 +583,8 @@ wlanstat_details(wlanstat_t *hs, wlan_ep_t *wlan_ep)
hs->num_details++;
}
- gtk_clist_thaw(GTK_CLIST(hs->details));
gtk_clist_sort(GTK_CLIST(hs->details));
- gtk_widget_show (GTK_WIDGET(hs->details));
+ gtk_clist_thaw(GTK_CLIST(hs->details));
}
static void
@@ -602,8 +603,8 @@ wlanstat_draw(void *phs)
}
/* clear list before printing */
- gtk_clist_clear (GTK_CLIST(hs->table));
gtk_clist_freeze(GTK_CLIST(hs->table));
+ gtk_clist_clear (GTK_CLIST(hs->table));
hs->num_entries = 0;
for(tmp = list; tmp; tmp=tmp->next) {
@@ -662,9 +663,8 @@ wlanstat_draw(void *phs)
wlanstat_details (hs, ep);
}
- gtk_clist_thaw(GTK_CLIST(hs->table));
gtk_clist_sort(GTK_CLIST(hs->table));
- gtk_widget_show (GTK_WIDGET(hs->table));
+ gtk_clist_thaw(GTK_CLIST(hs->table));
}
@@ -772,6 +772,9 @@ win_destroy_cb (GtkWindow *win _U_, gpointer data)
}
wlanstat_reset (hs);
g_free (hs);
+
+ recent.gui_geometry_wlan_stats_pane =
+ gtk_paned_get_position(GTK_PANED(wlanstat_pane));
}
/* Filter actions */
@@ -1097,7 +1100,6 @@ wlanstat_dlg_create (void)
wlanstat_t *hs;
GString *error_string;
GtkWidget *top_label;
- GtkWidget *pane;
GtkWidget *scrolled_window;
GtkWidget *bbox;
GtkWidget *vbox;
@@ -1132,14 +1134,14 @@ wlanstat_dlg_create (void)
top_label = gtk_label_new ("WLAN Traffic Statistics");
gtk_box_pack_start (GTK_BOX (vbox), top_label, FALSE, FALSE, 0);
- pane = gtk_vpaned_new();
- gtk_box_pack_start (GTK_BOX (vbox), pane,TRUE, TRUE, 0);
- gtk_widget_show(pane);
+ wlanstat_pane = gtk_vpaned_new();
+ gtk_box_pack_start (GTK_BOX (vbox), wlanstat_pane, TRUE, TRUE, 0);
+ gtk_widget_show(wlanstat_pane);
/* init a scrolled window for overview */
scrolled_window = scrolled_window_new (NULL, NULL);
- gtk_paned_pack1(GTK_PANED(pane), scrolled_window, TRUE, TRUE);
- gtk_paned_set_position(GTK_PANED(pane), 200);
+ gtk_paned_pack1(GTK_PANED(wlanstat_pane), scrolled_window, TRUE, TRUE);
+ gtk_paned_set_position(GTK_PANED(wlanstat_pane), recent.gui_geometry_wlan_stats_pane);
hs->table = gtk_clist_new (NUM_COLS);
gtk_container_add (GTK_CONTAINER (scrolled_window), hs->table);
@@ -1187,7 +1189,7 @@ wlanstat_dlg_create (void)
/* init a scrolled window for details */
scrolled_window = scrolled_window_new (NULL, NULL);
- gtk_paned_pack2(GTK_PANED(pane), scrolled_window, FALSE, TRUE);
+ gtk_paned_pack2(GTK_PANED(wlanstat_pane), scrolled_window, FALSE, TRUE);
hs->details = gtk_clist_new (NUM_DETAIL_COLS);
gtk_container_add (GTK_CONTAINER (scrolled_window), hs->details);