Revision 241

src/summary_search.c (revision 241)
39 39
#include <gtk/gtkbutton.h>
40 40
#include <gtk/gtkmenuitem.h>
41 41
#include <gtk/gtkstock.h>
42
#include <gtk/gtktreemodel.h>
43
#include <gtk/gtktreeselection.h>
42 44
#include <stdio.h>
43 45
#include <stdlib.h>
44 46
#include <string.h>
......
240 242

  
241 243
static void summary_search_execute(GtkButton *button, gpointer data)
242 244
{
243
#if 0
244 245
	SummaryView *summaryview = data;
246
	GtkTreeModel *model;
247
	GtkTreeIter iter;
245 248
	MsgInfo *msginfo;
246 249
	gboolean bool_and;
247 250
	gboolean case_sens;
......
252 255
	gboolean body_matched;
253 256
	const gchar *from_str, *to_str, *subject_str, *body_str;
254 257
	StrFindFunc str_find_func;
258
	gboolean valid;
255 259

  
256 260
	if (summary_is_locked(summaryview)) return;
257 261
	summary_lock(summaryview);
258 262

  
263
	model = GTK_TREE_MODEL(summaryview->store);
264

  
259 265
	bool_and = menu_get_option_menu_active_index
260 266
		(GTK_OPTION_MENU(bool_optmenu));
261 267
	case_sens = gtk_toggle_button_get_active
......
276 282
	body_str    = gtk_entry_get_text(GTK_ENTRY(body_entry));
277 283

  
278 284
	if (search_all) {
279
		gtk_clist_freeze(GTK_CLIST(ctree));
280
		gtk_clist_unselect_all(GTK_CLIST(ctree));
281
		node = GTK_CTREE_NODE(GTK_CLIST(ctree)->row_list);
285
		summary_unselect_all(summaryview);
286
		valid = gtk_tree_model_get_iter_first(model, &iter);
282 287
		backward = FALSE;
283 288
	} else if (!summaryview->selected) {
284 289
		if (backward)
285
			node = GTK_CTREE_NODE(GTK_CLIST(ctree)->row_list_end);
290
			valid  = gtkut_tree_model_get_iter_last(model, &iter);
286 291
		else
287
			node = GTK_CTREE_NODE(GTK_CLIST(ctree)->row_list);
288

  
289
		if (!node) {
292
			valid = gtk_tree_model_get_iter_first(model, &iter);
293
		if (!valid) {
290 294
			summary_unlock(summaryview);
291 295
			return;
292 296
		}
293 297
	} else {
298
		valid = gtkut_tree_row_reference_get_iter
299
			(model, summaryview->selected, &iter);
300
		if (!valid) {
301
			summary_unlock(summaryview);
302
			return;
303
		}
304

  
294 305
		if (backward)
295
			node = gtkut_ctree_node_prev
296
				(ctree, summaryview->selected);
306
			valid = gtkut_tree_model_prev(model, &iter);
297 307
		else
298
			node = gtkut_ctree_node_next
299
				(ctree, summaryview->selected);
308
			valid = gtkut_tree_model_next(model, &iter);
300 309
	}
301 310

  
302 311
	if (*body_str)
303 312
		main_window_cursor_wait(summaryview->mainwin);
304 313

  
305 314
	for (;;) {
306
		if (!node) {
315
		if (!valid) {
307 316
			gchar *str;
308 317
			AlertValue val;
309 318

  
310 319
			if (search_all) {
311
				gtk_clist_thaw(GTK_CLIST(ctree));
312 320
				break;
313 321
			}
314 322

  
......
329 337
					 GTK_STOCK_YES, GTK_STOCK_NO, NULL);
330 338
			if (G_ALERTDEFAULT == val) {
331 339
				if (backward)
332
					node = GTK_CTREE_NODE
333
						(GTK_CLIST(ctree)->row_list_end);
340
					valid  = gtkut_tree_model_get_iter_last
341
						(model, &iter);
334 342
				else
335
					node = GTK_CTREE_NODE
336
						(GTK_CLIST(ctree)->row_list);
337

  
343
					valid = gtk_tree_model_get_iter_first
344
						(model, &iter);
338 345
				all_searched = TRUE;
339

  
340 346
				manage_window_focus_in(window, NULL, NULL);
341 347
			} else
342 348
				break;
343 349
		}
344 350

  
345

  
346
		msginfo = gtk_ctree_node_get_row_data(ctree, node);
351
		gtk_tree_model_get(model, &iter, S_COL_MSG_INFO, &msginfo, -1);
347 352
		body_matched = FALSE;
348 353

  
349 354
		if (bool_and) {
......
397 402
		}
398 403

  
399 404
		if (matched) {
400
			if (search_all)
401
				gtk_ctree_select(ctree, node);
402
			else {
405
			if (search_all) {
406
				gtk_tree_selection_select_iter
407
					(summaryview->selection, &iter);
408
			} else {
403 409
				if (messageview_is_visible
404 410
					(summaryview->messageview)) {
405 411
					summary_unlock(summaryview);
406 412
					summary_select_row
407
						(summaryview, &iter, TRUE, TRUE);
413
						(summaryview, &iter,
414
						 TRUE, TRUE);
408 415
					summary_lock(summaryview);
409 416
					if (body_matched) {
410 417
						messageview_search_string
......
412 419
							 body_str, case_sens);
413 420
					}
414 421
				} else {
415
					summary_select_node
416
						(summaryview, node, FALSE, TRUE);
422
					summary_select_row
423
						(summaryview, &iter,
424
						 FALSE, TRUE);
417 425
				}
418 426
				break;
419 427
			}
420 428
		}
421 429

  
422
		node = backward ? gtkut_ctree_node_prev(ctree, node)
423
				: gtkut_ctree_node_next(ctree, node);
430
		if (backward)
431
			valid = gtkut_tree_model_prev(model, &iter);
432
		else
433
			valid = gtkut_tree_model_next(model, &iter);
424 434
	}
425 435

  
426 436
	if (*body_str)
427 437
		main_window_cursor_normal(summaryview->mainwin);
428 438

  
429 439
	summary_unlock(summaryview);
430
#endif
431 440
}
432 441

  
433 442
static void summary_search_clear(GtkButton *button, gpointer data)
ChangeLog.ja (revision 241)
1 1
2005-05-10
2 2

  
3
	* src/summary_search.c: ???ޥ긡?????Ƽ?????
4

  
5
2005-05-10
6

  
3 7
	* src/summaryview.c:
4 8
	  summary_show(): always_show_msg ?????åȤ????Ƥ????????򤵤줿
5 9
	  ???å???????ɽ????
ChangeLog (revision 241)
1 1
2005-05-10
2 2

  
3
	* src/summary_search.c: reimplemented summary search.
4

  
5
2005-05-10
6

  
3 7
	* src/summaryview.c:
4 8
	  summary_show(): display selected message if always_show_msg is set.
5 9
	  summary_button_pressed(): fixed the handling of modifier key.

Also available in: Unified diff