#include <X11/Xutil.h>
#include "gtkcols.h"
-#include "gtkpanel.h"
#ifdef TESTMODE
#define PUTTY_DO_GLOBALS /* actually _define_ globals */
GtkWidget *label; /* for dlg_label_change */
GtkAdjustment *adj; /* for the scrollbar in a list box */
guint textsig;
+ int nclicks;
};
struct dlgparam {
gpointer data);
static int listitem_multi_key(GtkWidget *item, GdkEventKey *event,
gpointer data);
-static int listitem_button(GtkWidget *item, GdkEventButton *event,
- gpointer data);
+static int listitem_button_press(GtkWidget *item, GdkEventButton *event,
+ gpointer data);
+static int listitem_button_release(GtkWidget *item, GdkEventButton *event,
+ gpointer data);
static void menuitem_activate(GtkMenuItem *item, gpointer data);
static void coloursel_ok(GtkButton *button, gpointer data);
static void coloursel_cancel(GtkButton *button, gpointer data);
gtk_signal_connect(GTK_OBJECT(listitem), "focus_in_event",
GTK_SIGNAL_FUNC(widget_focus), dp);
gtk_signal_connect(GTK_OBJECT(listitem), "button_press_event",
- GTK_SIGNAL_FUNC(listitem_button), dp);
+ GTK_SIGNAL_FUNC(listitem_button_press), dp);
+ gtk_signal_connect(GTK_OBJECT(listitem), "button_release_event",
+ GTK_SIGNAL_FUNC(listitem_button_release), dp);
gtk_object_set_data(GTK_OBJECT(listitem), "user-data",
GINT_TO_POINTER(id));
} else {
return listitem_key(item, event, data, TRUE);
}
-static int listitem_button(GtkWidget *item, GdkEventButton *event,
- gpointer data)
+static int listitem_button_press(GtkWidget *item, GdkEventButton *event,
+ gpointer data)
+{
+ struct dlgparam *dp = (struct dlgparam *)data;
+ struct uctrl *uc = dlg_find_bywidget(dp, GTK_WIDGET(item));
+ switch (event->type) {
+ default:
+ case GDK_BUTTON_PRESS: uc->nclicks = 1; break;
+ case GDK_2BUTTON_PRESS: uc->nclicks = 2; break;
+ case GDK_3BUTTON_PRESS: uc->nclicks = 3; break;
+ }
+ return FALSE;
+}
+
+static int listitem_button_release(GtkWidget *item, GdkEventButton *event,
+ gpointer data)
{
struct dlgparam *dp = (struct dlgparam *)data;
- if (event->type == GDK_2BUTTON_PRESS ||
- event->type == GDK_3BUTTON_PRESS) {
- struct uctrl *uc = dlg_find_bywidget(dp, GTK_WIDGET(item));
+ struct uctrl *uc = dlg_find_bywidget(dp, GTK_WIDGET(item));
+ if (uc->nclicks>1) {
uc->ctrl->generic.handler(uc->ctrl, dp, dp->data, EVENT_ACTION);
return TRUE;
}
uc->entry = uc->list = uc->menu = NULL;
uc->button = uc->optmenu = uc->text = NULL;
uc->label = NULL;
+ uc->nclicks = 0;
switch (ctrl->generic.type) {
case CTRL_BUTTON:
struct selparam {
struct dlgparam *dp;
- Panels *panels;
+ GtkNotebook *panels;
GtkWidget *panel, *treeitem;
struct Shortcuts shortcuts;
};
static void treeitem_sel(GtkItem *item, gpointer data)
{
struct selparam *sp = (struct selparam *)data;
+ gint page_num;
- panels_switch_to(sp->panels, sp->panel);
+ page_num = gtk_notebook_page_num(sp->panels, sp->panel);
+ gtk_notebook_set_page(sp->panels, page_num);
dlg_refresh(NULL, sp->dp);
ctrlbox = ctrl_new_box();
setup_config_box(ctrlbox, midsession, cfg->protocol, protcfginfo);
- unix_setup_config_box(ctrlbox, midsession);
+ unix_setup_config_box(ctrlbox, midsession, cfg->protocol);
gtk_setup_config_box(ctrlbox, midsession, window);
gtk_window_set_title(GTK_WINDOW(window), title);
shortcut_add(&scs, label, 'g', SHORTCUT_TREE, tree);
gtk_tree_set_view_mode(GTK_TREE(tree), GTK_TREE_VIEW_ITEM);
gtk_tree_set_selection_mode(GTK_TREE(tree), GTK_SELECTION_BROWSE);
- gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(treescroll),
- tree);
- gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(treescroll),
- GTK_POLICY_NEVER,
- GTK_POLICY_AUTOMATIC);
gtk_signal_connect(GTK_OBJECT(tree), "focus",
GTK_SIGNAL_FUNC(tree_focus), &dp);
- gtk_widget_show(tree);
gtk_widget_show(treescroll);
gtk_box_pack_start(GTK_BOX(vbox), treescroll, TRUE, TRUE, 0);
- panels = panels_new();
+ panels = gtk_notebook_new();
+ gtk_notebook_set_show_tabs(GTK_NOTEBOOK(panels), FALSE);
+ gtk_notebook_set_show_border(GTK_NOTEBOOK(panels), FALSE);
gtk_box_pack_start(GTK_BOX(hbox), panels, TRUE, TRUE, 0);
gtk_widget_show(panels);
gtk_tree_item_set_subtree
(treeitemlevels[j-1],
GTK_WIDGET(treelevels[j-1]));
- gtk_tree_item_expand(treeitemlevels[j-1]);
+ if (j < 2)
+ gtk_tree_item_expand(treeitemlevels[j-1]);
+ else
+ gtk_tree_item_collapse(treeitemlevels[j-1]);
}
gtk_tree_append(treelevels[j-1], treeitem);
} else {
first = (panelvbox == NULL);
panelvbox = gtk_vbox_new(FALSE, 4);
- gtk_container_add(GTK_CONTAINER(panels), panelvbox);
+ gtk_widget_show(panelvbox);
+ gtk_notebook_append_page(GTK_NOTEBOOK(panels), panelvbox,
+ NULL);
if (first) {
- panels_switch_to(PANELS(panels), panelvbox);
+ gint page_num;
+
+ page_num = gtk_notebook_page_num(GTK_NOTEBOOK(panels),
+ panelvbox);
+ gtk_notebook_set_page(GTK_NOTEBOOK(panels), page_num);
gtk_tree_select_child(GTK_TREE(tree), treeitem);
}
struct selparam);
}
selparams[nselparams].dp = &dp;
- selparams[nselparams].panels = PANELS(panels);
+ selparams[nselparams].panels = GTK_NOTEBOOK(panels);
selparams[nselparams].panel = panelvbox;
selparams[nselparams].shortcuts = scs; /* structure copy */
selparams[nselparams].treeitem = treeitem;
dp.retval = 0;
dp.window = window;
+ {
+ /* in gtkwin.c */
+ extern void set_window_icon(GtkWidget *window,
+ const char *const *const *icon,
+ int n_icon);
+ extern const char *const *const cfg_icon[];
+ extern const int n_cfg_icon;
+ set_window_icon(window, cfg_icon, n_cfg_icon);
+ }
+
+ gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(treescroll),
+ tree);
+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(treescroll),
+ GTK_POLICY_NEVER,
+ GTK_POLICY_AUTOMATIC);
+ gtk_widget_show(tree);
+
gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
gtk_widget_show(window);
char *title;
char *licence =
- "Copyright 1997-2006 Simon Tatham.\n\n"
+ "Copyright 1997-2007 Simon Tatham.\n\n"
"Portions copyright Robert de Bath, Joris van Rantwijk, Delian "
"Delchev, Andreas Schultz, Jeroen Massar, Wez Furlong, Nicolas "
w, FALSE, FALSE, 5);
gtk_widget_show(w);
- w = gtk_label_new("Copyright 1997-2006 Simon Tatham. All rights reserved");
+ w = gtk_label_new("Copyright 1997-2007 Simon Tatham. All rights reserved");
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(aboutbox)->vbox),
w, FALSE, FALSE, 5);
gtk_widget_show(w);
struct eventlog_stuff *es = (struct eventlog_stuff *)data;
gtk_selection_data_set(seldata, seldata->target, 8,
- es->seldata, es->sellen);
+ (unsigned char *)es->seldata, es->sellen);
}
gint eventlog_selection_clear(GtkWidget *widget, GdkEventSelection *seldata,