Changeset 279
- Timestamp:
- 06/26/07 07:07:49 (16 months ago)
- Location:
- trunk/src
- Files:
-
- 6 modified
-
MainPter.cxx (modified) (1 diff)
-
MainPter.h (modified) (1 diff)
-
PDFDocument.cxx (modified) (4 diffs)
-
PagePter.cxx (modified) (5 diffs)
-
PagePter.h (modified) (3 diffs)
-
gtk/MainView.cxx (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/MainPter.cxx
r277 r279 697 697 698 698 void 699 MainPter::pageModeScrollActivated (gboolean active) 700 { 701 IMainView &view = getView (); 702 if ( active ) 703 { 704 m_PagePter->setMode(PagePterModeScroll); 705 view.activePageModeText (FALSE); 706 } 707 } 708 709 void 710 MainPter::pageModeTextActivated (gboolean active) 711 { 712 IMainView &view = getView (); 713 if ( active ) 714 { 715 m_PagePter->setMode(PagePterModeSelectText); 716 view.activePageModeScroll (FALSE); 717 } 699 MainPter::setPageMode (PagePterMode mode) 700 { 701 m_PagePter->setMode(mode); 718 702 } 719 703 -
trunk/src/MainPter.h
r277 r279 41 41 ~MainPter (void); 42 42 43 void pageModeTextActivated(gboolean active); 44 void pageModeScrollActivated(gboolean active); 43 void setPageMode(PagePterMode mode); 45 44 46 45 void setInitialState (void); -
trunk/src/PDFDocument.cxx
r277 r279 657 657 } 658 658 659 static void 660 repairEmpty(PopplerRectangle& rect) 661 { 662 //rect must have be least 1x1 663 if(rect.y1 == rect.y2) 664 rect.y2++; 665 if(rect.x1 == rect.x2) 666 rect.x2++; 667 } 668 659 669 void 660 670 PDFDocument::setTextSelection (DocumentRectangle *rect) … … 670 680 671 681 //for get text we must exchange y coordinate, don't ask me where logic here. 672 PopplerRectangle textRect = { rect->getX1(), 673 (pageHeight - rect->getY2()), 674 rect->getX2(), 675 (pageHeight - rect->getY1())}; 682 PopplerRectangle textRect = { rect->getX1() / getZoom(), 683 (pageHeight - rect->getY2() / getZoom()), 684 rect->getX2() * getZoom() / getZoom(), 685 (pageHeight - rect->getY1() / getZoom())}; 686 repairEmpty(textRect); 687 676 688 gchar *text = poppler_page_get_text(page, &textRect); 677 689 if(!text) … … 692 704 g_free(text); 693 705 } 706 694 707 GdkRegion* 695 708 PDFDocument::getTextRegion (DocumentRectangle *r) … … 705 718 rect.y1 = r->getY1() / getZoom(); 706 719 rect.x2 = r->getX2() / getZoom(); 707 rect.y2 = r->getY2() / getZoom(); 720 rect.y2 = r->getY2() / getZoom(); 721 repairEmpty(rect); 708 722 709 723 //calc selection size -
trunk/src/PagePter.cxx
r277 r279 68 68 m_NextPageScroll = PAGE_SCROLL_START; 69 69 m_PageView = NULL; 70 m_ Mode = PagePterModeScroll;70 m_ScrollMode = PagePterModeScroll; 71 71 } 72 72 … … 135 135 m_DragInfo->startX = x; 136 136 m_DragInfo->startY = y; 137 if(m_ Mode == PagePterModeScroll)137 if(m_ScrollMode == PagePterModeScroll) 138 138 view.setCursor (PAGE_VIEW_CURSOR_DRAG); 139 139 else … … 160 160 m_LastSelection = NULL; 161 161 162 if(m_Document->isLoaded() && m_ Mode == PagePterModeSelectText){162 if(m_Document->isLoaded() && m_ScrollMode == PagePterModeSelectText){ 163 163 DocumentRectangle rect(m_DragInfo->startX, m_DragInfo->startY, 164 164 m_DragInfo->x, m_DragInfo->y); … … 205 205 m_DragInfo->y = y; 206 206 207 if(m_ Mode == PagePterModeScroll){207 if(m_ScrollMode == PagePterModeScroll){ 208 208 view.scrollPage (view.getHorizontalScroll (), view.getVerticalScroll (), 209 209 x - m_DragInfo->startX, y - m_DragInfo->startY); … … 408 408 409 409 /// 410 /// @brief Sets the page mouse scroll mode 411 /// 412 /// @param mode Scroll mode to set. 413 /// 414 void 415 PagePter::setMode (PagePterMode mode) 416 { 417 this->m_ScrollMode = mode; 418 } 419 420 /// 410 421 /// @brief The page view has been resized. 411 422 /// -
trunk/src/PagePter.h
r277 r279 24 24 namespace ePDFView 25 25 { 26 enum PagePterMode{27 PagePterModeScroll,28 PagePterModeSelectText,29 };26 enum PagePterMode{ 27 PagePterModeScroll, 28 PagePterModeSelectText, 29 }; 30 30 31 31 /// … … 59 59 void setView (IMainView &view); 60 60 void viewResized (gint width, gint height); 61 void setMode(PagePterMode mode) 62 { 63 m_Mode = mode; 64 } 61 void setMode(PagePterMode mode); 65 62 66 63 protected: … … 73 70 /// The page view. 74 71 IPageView *m_PageView; 75 /// Last text selection76 GdkRegion *m_LastSelection;77 /// What page presenter must do when user move mouse with button pressed.78 PagePterMode m_Mode;72 /// Last text selection 73 GdkRegion *m_LastSelection; 74 /// What page presenter must do when user move mouse with button pressed. 75 PagePterMode m_ScrollMode; 79 76 80 void refreshPage (PageScroll pageScroll, gboolean wasZoomed);77 void refreshPage (PageScroll pageScroll, gboolean wasZoomed); 81 78 }; 82 79 } -
trunk/src/gtk/MainView.cxx
r277 r279 77 77 static void main_window_zoom_out_cb (GtkWidget *, gpointer); 78 78 static void main_window_zoom_width_cb (GtkToggleAction *, gpointer); 79 static void main_window_page_mode_scroll_cb (GtkToggleAction *, gpointer); 80 static void main_window_page_mode_text_cb (GtkToggleAction *, gpointer); 79 static void main_window_set_page_mode (GtkRadioAction *, GtkRadioAction *, gpointer); 81 80 82 81 #if defined (HAVE_CUPS) … … 189 188 N_("Make the current document fill the window width"), 190 189 G_CALLBACK (main_window_zoom_width_cb), FALSE }, 191 190 }; 191 192 static GtkRadioActionEntry g_PageScrollEntries[] = 193 { 192 194 { "PageModeScroll", GTK_STOCK_FULLSCREEN, N_("Scroll"), NULL, 193 N_("Mouse scroll page"), 194 G_CALLBACK (main_window_page_mode_scroll_cb), FALSE }, 195 N_("Mouse scroll page"), (int)PagePterModeScroll }, 195 196 196 197 { "PageModeText", GTK_STOCK_SELECT_ALL, N_("Select Text"), NULL, 197 N_(" Mouse select text"), 198 G_CALLBACK (main_window_page_mode_text_cb), FALSE }, 199 198 N_(" Mouse select text"), (int)PagePterModeSelectText }, 200 199 }; 200 201 201 202 202 //////////////////////////////////////////////////////////////// … … 963 963 G_N_ELEMENTS (g_ToggleEntries), 964 964 m_Pter); 965 gtk_action_group_add_radio_actions (actionGroup, g_PageScrollEntries, 966 G_N_ELEMENTS (g_PageScrollEntries), 0, 967 G_CALLBACK(main_window_set_page_mode), m_Pter); 965 968 m_UIManager = gtk_ui_manager_new (); 966 969 gtk_ui_manager_insert_action_group (m_UIManager, actionGroup, 0); … … 1453 1456 1454 1457 void 1455 main_window_page_mode_scroll_cb (GtkToggleAction *action, gpointer data) 1456 { 1457 g_assert ( NULL != data && "The data parameter is NULL."); 1458 1459 MainPter *pter = (MainPter *)data; 1460 pter->pageModeScrollActivated (gtk_toggle_action_get_active (action)); 1461 } 1462 1463 void 1464 main_window_page_mode_text_cb (GtkToggleAction *action, gpointer data) 1465 { 1466 g_assert ( NULL != data && "The data parameter is NULL."); 1467 1468 MainPter *pter = (MainPter *)data; 1469 pter->pageModeTextActivated (gtk_toggle_action_get_active (action)); 1470 } 1458 main_window_set_page_mode (GtkRadioAction *action, GtkRadioAction *current, gpointer data) 1459 { 1460 g_assert ( NULL != data && "The data parameter is NULL."); 1461 1462 MainPter *pter = (MainPter *)data; 1463 PagePterMode mode = (PagePterMode)gtk_radio_action_get_current_value(action); 1464 pter->setPageMode (mode); 1465 }
