comparison gtk/dw.c @ 331:20def3eaae8d

Implement handling of switch-page signal for notebooks.
author mhessling@81767d24-ef19-dc11-ae90-00e081727c95
date Wed, 09 Apr 2003 09:41:34 +0000
parents 9b1953ed0bff
children e9a424e641ff
comparison
equal deleted inserted replaced
330:b87afd126cb7 331:20def3eaae8d
91 #if GTK_MAJOR_VERSION > 1 91 #if GTK_MAJOR_VERSION > 1
92 static gint _tree_select_event(GtkTreeSelection *sel, gpointer data); 92 static gint _tree_select_event(GtkTreeSelection *sel, gpointer data);
93 #else 93 #else
94 static gint _tree_select_event(GtkTree *tree, GtkWidget *child, gpointer data); 94 static gint _tree_select_event(GtkTree *tree, GtkWidget *child, gpointer data);
95 #endif 95 #endif
96 static gint _switch_page_event(GtkNotebook *notebook, GtkNotebookPage *page, guint page_num, gpointer user_data);
96 97
97 typedef struct 98 typedef struct
98 { 99 {
99 GdkPixmap *pixmap; 100 GdkPixmap *pixmap;
100 GdkBitmap *mask; 101 GdkBitmap *mask;
121 void *func; 122 void *func;
122 gpointer data; 123 gpointer data;
123 124
124 } SignalHandler; 125 } SignalHandler;
125 126
126 #define SIGNALMAX 16 127 #define SIGNALMAX 17
127 128
128 /* A list of signal forwarders, to account for paramater differences. */ 129 /* A list of signal forwarders, to account for paramater differences. */
129 static SignalList SignalTranslate[SIGNALMAX] = { 130 static SignalList SignalTranslate[SIGNALMAX] = {
130 { _configure_event, DW_SIGNAL_CONFIGURE }, 131 { _configure_event, DW_SIGNAL_CONFIGURE },
131 { _key_press_event, DW_SIGNAL_KEY_PRESS }, 132 { _key_press_event, DW_SIGNAL_KEY_PRESS },
140 { _container_context_event, DW_SIGNAL_ITEM_CONTEXT }, 141 { _container_context_event, DW_SIGNAL_ITEM_CONTEXT },
141 { _tree_context_event, "tree-context" }, 142 { _tree_context_event, "tree-context" },
142 { _item_select_event, DW_SIGNAL_LIST_SELECT }, 143 { _item_select_event, DW_SIGNAL_LIST_SELECT },
143 { _tree_select_event, DW_SIGNAL_ITEM_SELECT }, 144 { _tree_select_event, DW_SIGNAL_ITEM_SELECT },
144 { _set_focus_event, DW_SIGNAL_SET_FOCUS }, 145 { _set_focus_event, DW_SIGNAL_SET_FOCUS },
145 { _value_changed_event, DW_SIGNAL_VALUE_CHANGED } 146 { _value_changed_event, DW_SIGNAL_VALUE_CHANGED },
147 { _switch_page_event, DW_SIGNAL_SWITCH_PAGE }
146 }; 148 };
147 149
148 /* Alignment flags */ 150 /* Alignment flags */
149 #define DW_CENTER 0.5f 151 #define DW_CENTER 0.5f
150 #define DW_LEFT 0.0f 152 #define DW_LEFT 0.0f
541 543
542 text = (char *)gtk_clist_get_row_data(GTK_CLIST(widget), row); 544 text = (char *)gtk_clist_get_row_data(GTK_CLIST(widget), row);
543 retval = contextfunc(work->window, text, work->data); 545 retval = contextfunc(work->window, text, work->data);
544 gtk_object_set_data(GTK_OBJECT(widget), "_dw_double_click", (gpointer)1); 546 gtk_object_set_data(GTK_OBJECT(widget), "_dw_double_click", (gpointer)1);
545 } 547 }
548 }
549 return retval;
550 }
551
552 static gint _switch_page_event(GtkNotebook *notebook, GtkNotebookPage *page, guint page_num, gpointer data)
553 {
554 SignalHandler *work = (SignalHandler *)data;
555 int retval = FALSE;
556
557 if(work)
558 {
559 int (*switchpagefunc)(HWND, int, void *) = work->func;
560 retval = switchpagefunc(work->window, page_num, work->data);
546 } 561 }
547 return retval; 562 return retval;
548 } 563 }
549 564
550 static gint _select_row(GtkWidget *widget, gint row, gint column, GdkEventButton *event, gpointer data) 565 static gint _select_row(GtkWidget *widget, gint row, gint column, GdkEventButton *event, gpointer data)
7660 else if(GTK_IS_VSCALE(thiswindow) || GTK_IS_HSCALE(thiswindow) || 7675 else if(GTK_IS_VSCALE(thiswindow) || GTK_IS_HSCALE(thiswindow) ||
7661 GTK_IS_VSCROLLBAR(thiswindow) || GTK_IS_HSCROLLBAR(thiswindow)) 7676 GTK_IS_VSCROLLBAR(thiswindow) || GTK_IS_HSCROLLBAR(thiswindow))
7662 { 7677 {
7663 thiswindow = (GtkWidget *)gtk_object_get_data(GTK_OBJECT(thiswindow), "adjustment"); 7678 thiswindow = (GtkWidget *)gtk_object_get_data(GTK_OBJECT(thiswindow), "adjustment");
7664 } 7679 }
7680 else if(GTK_IS_NOTEBOOK(thiswindow) && strcmp(signame, DW_SIGNAL_SWITCH_PAGE) == 0)
7681 {
7682 thisname = "switch-page";
7683 }
7665 7684
7666 if(!thisfunc || !thiswindow) 7685 if(!thisfunc || !thiswindow)
7667 { 7686 {
7668 free(work); 7687 free(work);
7669 DW_MUTEX_UNLOCK; 7688 DW_MUTEX_UNLOCK;