Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
core
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
LibreOffice
core
Commits
ddac37b9
Kaydet (Commit)
ddac37b9
authored
Tem 28, 2017
tarafından
Pranav Kant
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
lokdialog: Queue a redraw on invalidation in gtktiledviewer
Change-Id: I081508674a71c3beb89175e4f8ac3256e6bc6c6a
üst
686ac83f
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
109 additions
and
4 deletions
+109
-4
gtv-application-window.cxx
libreofficekit/qa/gtktiledviewer/gtv-application-window.cxx
+48
-0
gtv-application-window.hxx
libreofficekit/qa/gtktiledviewer/gtv-application-window.hxx
+6
-0
gtv-lok-dialog.cxx
libreofficekit/qa/gtktiledviewer/gtv-lok-dialog.cxx
+14
-3
gtv-lok-dialog.hxx
libreofficekit/qa/gtktiledviewer/gtv-lok-dialog.hxx
+2
-0
gtv-lokdocview-signal-handlers.cxx
...ekit/qa/gtktiledviewer/gtv-lokdocview-signal-handlers.cxx
+11
-0
gtv-lokdocview-signal-handlers.hxx
...ekit/qa/gtktiledviewer/gtv-lokdocview-signal-handlers.hxx
+1
-0
gtv-signal-handlers.cxx
libreofficekit/qa/gtktiledviewer/gtv-signal-handlers.cxx
+10
-0
lokdocview.cxx
libreofficekit/source/gtk/lokdocview.cxx
+17
-1
No files found.
libreofficekit/qa/gtktiledviewer/gtv-application-window.cxx
Dosyayı görüntüle @
ddac37b9
...
...
@@ -36,6 +36,8 @@ struct GtvApplicationWindowPrivate
gboolean
toolbarBroadcast
;
gboolean
partSelectorBroadcast
;
GList
*
m_pChildWindows
;
// Rendering args; options with which lokdocview was rendered in this window
GtvRenderingArgs
*
m_pRenderingArgs
;
};
...
...
@@ -105,6 +107,7 @@ gtv_application_window_init(GtvApplicationWindow* win)
gtk_container_add
(
GTK_CONTAINER
(
win
),
priv
->
container
);
priv
->
m_pChildWindows
=
nullptr
;
priv
->
m_pRenderingArgs
=
new
GtvRenderingArgs
();
}
...
...
@@ -311,6 +314,7 @@ static void setupDocView(GtvApplicationWindow* window)
g_signal_connect
(
window
->
lokdocview
,
"formula-changed"
,
G_CALLBACK
(
LOKDocViewSigHandlers
::
formulaChanged
),
nullptr
);
g_signal_connect
(
window
->
lokdocview
,
"password-required"
,
G_CALLBACK
(
LOKDocViewSigHandlers
::
passwordRequired
),
nullptr
);
g_signal_connect
(
window
->
lokdocview
,
"comment"
,
G_CALLBACK
(
LOKDocViewSigHandlers
::
comment
),
nullptr
);
g_signal_connect
(
window
->
lokdocview
,
"dialog-invalidate"
,
G_CALLBACK
(
LOKDocViewSigHandlers
::
dialogInvalidate
),
nullptr
);
g_signal_connect
(
window
->
lokdocview
,
"configure-event"
,
G_CALLBACK
(
LOKDocViewSigHandlers
::
configureEvent
),
nullptr
);
}
...
...
@@ -394,6 +398,50 @@ gtv_application_window_get_part_broadcast(GtvApplicationWindow* window)
return
priv
->
partSelectorBroadcast
;
}
void
gtv_application_window_register_child_window
(
GtvApplicationWindow
*
window
,
GtkWindow
*
pChildWin
)
{
GtvApplicationWindowPrivate
*
priv
=
getPrivate
(
window
);
if
(
pChildWin
)
priv
->
m_pChildWindows
=
g_list_append
(
priv
->
m_pChildWindows
,
pChildWin
);
}
void
gtv_application_window_unregister_child_window
(
GtvApplicationWindow
*
window
,
GtkWindow
*
pChildWin
)
{
GtvApplicationWindowPrivate
*
priv
=
getPrivate
(
window
);
if
(
pChildWin
)
priv
->
m_pChildWindows
=
g_list_remove
(
priv
->
m_pChildWindows
,
pChildWin
);
}
GtkWindow
*
gtv_application_window_get_child_window_by_id
(
GtvApplicationWindow
*
window
,
const
gchar
*
pWinId
)
{
GtvApplicationWindowPrivate
*
priv
=
getPrivate
(
window
);
GList
*
pIt
=
nullptr
;
GtkWindow
*
ret
=
nullptr
;
// For now, only dialogs are registered as child window
for
(
pIt
=
priv
->
m_pChildWindows
;
pIt
!=
nullptr
;
pIt
=
pIt
->
next
)
{
gchar
*
dialogId
=
nullptr
;
g_object_get
(
G_OBJECT
(
pIt
->
data
),
"dialogid"
,
&
dialogId
,
nullptr
);
// prepend .uno:
gchar
*
completeWinId
=
nullptr
;
if
(
pWinId
!=
nullptr
)
{
completeWinId
=
g_strconcat
(
".uno:"
,
pWinId
,
nullptr
);
}
if
(
dialogId
!=
nullptr
&&
g_str_equal
(
dialogId
,
completeWinId
))
{
ret
=
GTK_WINDOW
(
pIt
->
data
);
break
;
}
}
return
ret
;
}
GtvApplicationWindow
*
gtv_application_window_new
(
GtkApplication
*
app
)
{
...
...
libreofficekit/qa/gtktiledviewer/gtv-application-window.hxx
Dosyayı görüntüle @
ddac37b9
...
...
@@ -99,6 +99,12 @@ void gtv_application_window_set_part_broadcast(GtvApplicationWindow* window, boo
gboolean
gtv_application_window_get_part_broadcast
(
GtvApplicationWindow
*
window
);
void
gtv_application_window_register_child_window
(
GtvApplicationWindow
*
window
,
GtkWindow
*
pChildWin
);
void
gtv_application_window_unregister_child_window
(
GtvApplicationWindow
*
window
,
GtkWindow
*
pChildWin
);
GtkWindow
*
gtv_application_window_get_child_window_by_id
(
GtvApplicationWindow
*
window
,
const
gchar
*
pWinId
);
G_END_DECLS
#endif
/* GTV_APPLICATION_WINDOW_H */
...
...
libreofficekit/qa/gtktiledviewer/gtv-lok-dialog.cxx
Dosyayı görüntüle @
ddac37b9
...
...
@@ -23,6 +23,7 @@
struct
GtvLokDialogPrivate
{
LOKDocView
*
lokdocview
;
GtkWidget
*
pDialogDrawingArea
;
gchar
*
dialogid
;
};
...
...
@@ -68,11 +69,13 @@ gtv_lok_dialog_draw(GtkWidget* pDialogDrawingArea, cairo_t* pCairo, gpointer)
static
void
gtv_lok_dialog_init
(
GtvLokDialog
*
dialog
)
{
GtvLokDialogPrivate
*
priv
=
getPrivate
(
dialog
);
GtkWidget
*
pContentArea
=
gtk_dialog_get_content_area
(
GTK_DIALOG
(
dialog
));
GtkWidget
*
pDialogDrawingArea
=
gtk_drawing_area_new
();
priv
->
pDialogDrawingArea
=
gtk_drawing_area_new
();
g_signal_connect
(
G_OBJECT
(
pDialogDrawingArea
),
"draw"
,
G_CALLBACK
(
gtv_lok_dialog_draw
),
nullptr
);
gtk_container_add
(
GTK_CONTAINER
(
pContentArea
),
pDialogDrawingArea
);
g_signal_connect
(
G_OBJECT
(
p
riv
->
p
DialogDrawingArea
),
"draw"
,
G_CALLBACK
(
gtv_lok_dialog_draw
),
nullptr
);
gtk_container_add
(
GTK_CONTAINER
(
pContentArea
),
p
riv
->
p
DialogDrawingArea
);
}
static
void
...
...
@@ -150,6 +153,14 @@ gtv_lok_dialog_class_init(GtvLokDialogClass* klass)
g_object_class_install_properties
(
G_OBJECT_CLASS
(
klass
),
PROP_LAST
,
properties
);
}
void
gtv_lok_dialog_invalidate
(
GtvLokDialog
*
dialog
)
{
// trigger a draw on the drawing area
GtvLokDialogPrivate
*
priv
=
getPrivate
(
dialog
);
gtk_widget_queue_draw
(
priv
->
pDialogDrawingArea
);
}
GtkWidget
*
gtv_lok_dialog_new
(
LOKDocView
*
pDocView
,
const
gchar
*
dialogId
)
{
...
...
libreofficekit/qa/gtktiledviewer/gtv-lok-dialog.hxx
Dosyayı görüntüle @
ddac37b9
...
...
@@ -37,6 +37,8 @@ GType gtv_lok_dialog_get_type (void) G_GNUC_CONST;
GtkWidget
*
gtv_lok_dialog_new
(
LOKDocView
*
pDocView
,
const
gchar
*
dialogId
);
void
gtv_lok_dialog_invalidate
(
GtvLokDialog
*
dialog
);
G_END_DECLS
#endif
/* GTV_LOK_DIALOG_H */
...
...
libreofficekit/qa/gtktiledviewer/gtv-lokdocview-signal-handlers.cxx
Dosyayı görüntüle @
ddac37b9
...
...
@@ -15,6 +15,7 @@
#include <gtv-calc-header-bar.hxx>
#include <gtv-comments-sidebar.hxx>
#include <gtv-lokdocview-signal-handlers.hxx>
#include <gtv-lok-dialog.hxx>
#include <boost/property_tree/json_parser.hpp>
#include <boost/optional.hpp>
...
...
@@ -280,6 +281,16 @@ void LOKDocViewSigHandlers::comment(LOKDocView* pDocView, gchar* pComment, gpoin
}
}
void
LOKDocViewSigHandlers
::
dialogInvalidate
(
LOKDocView
*
pDocView
,
gchar
*
pDialogId
,
gpointer
)
{
GtvApplicationWindow
*
window
=
GTV_APPLICATION_WINDOW
(
gtk_widget_get_toplevel
(
GTK_WIDGET
(
pDocView
)));
GtkWindow
*
pDialog
=
gtv_application_window_get_child_window_by_id
(
window
,
pDialogId
);
if
(
pDialog
)
{
gtv_lok_dialog_invalidate
(
GTV_LOK_DIALOG
(
pDialog
));
}
}
gboolean
LOKDocViewSigHandlers
::
configureEvent
(
GtkWidget
*
pWidget
,
GdkEventConfigure
*
/*pEvent*/
,
gpointer
/*pData*/
)
{
GtvApplicationWindow
*
window
=
GTV_APPLICATION_WINDOW
(
gtk_widget_get_toplevel
(
GTK_WIDGET
(
pWidget
)));
...
...
libreofficekit/qa/gtktiledviewer/gtv-lokdocview-signal-handlers.hxx
Dosyayı görüntüle @
ddac37b9
...
...
@@ -25,6 +25,7 @@ namespace LOKDocViewSigHandlers {
void
formulaChanged
(
LOKDocView
*
pDocView
,
char
*
pPayload
,
gpointer
);
void
passwordRequired
(
LOKDocView
*
pDocView
,
char
*
pUrl
,
gboolean
bModify
,
gpointer
);
void
comment
(
LOKDocView
*
pDocView
,
gchar
*
pComment
,
gpointer
);
void
dialogInvalidate
(
LOKDocView
*
pDocView
,
gchar
*
pDialogId
,
gpointer
);
gboolean
configureEvent
(
GtkWidget
*
pWidget
,
GdkEventConfigure
*
pEvent
,
gpointer
pData
);
}
...
...
libreofficekit/qa/gtktiledviewer/gtv-signal-handlers.cxx
Dosyayı görüntüle @
ddac37b9
...
...
@@ -290,11 +290,21 @@ void changePartMode( GtkWidget* pSelector, gpointer /* pItem */ )
}
}
static
gboolean
deleteLokDialog
(
GtkWidget
*
pWidget
,
GdkEvent
*
/*event*/
,
gpointer
userdata
)
{
GtvApplicationWindow
*
window
=
GTV_APPLICATION_WINDOW
(
userdata
);
gtv_application_window_unregister_child_window
(
window
,
GTK_WINDOW
(
pWidget
));
return
FALSE
;
}
void
openLokDialog
(
GtkWidget
*
pSelector
,
gpointer
/*pItem*/
)
{
GtvApplicationWindow
*
window
=
GTV_APPLICATION_WINDOW
(
gtk_widget_get_toplevel
(
pSelector
));
gchar
*
pDialogId
=
gtk_combo_box_text_get_active_text
(
GTK_COMBO_BOX_TEXT
(
pSelector
));
GtkWidget
*
pDialog
=
gtv_lok_dialog_new
(
LOK_DOC_VIEW
(
window
->
lokdocview
),
pDialogId
);
gtv_application_window_register_child_window
(
window
,
GTK_WINDOW
(
pDialog
));
g_signal_connect
(
pDialog
,
"delete-event"
,
G_CALLBACK
(
deleteLokDialog
),
window
);
g_free
(
pDialogId
);
gtk_window_set_resizable
(
GTK_WINDOW
(
pDialog
),
false
);
...
...
libreofficekit/source/gtk/lokdocview.cxx
Dosyayı görüntüle @
ddac37b9
...
...
@@ -279,6 +279,7 @@ enum
PASSWORD_REQUIRED
,
COMMENT
,
RULER
,
DIALOG_INVALIDATE
,
LAST_SIGNAL
};
...
...
@@ -1430,7 +1431,7 @@ callback (gpointer pData)
case
LOK_CALLBACK_RULER_UPDATE
:
g_signal_emit
(
pCallback
->
m_pDocView
,
doc_view_signals
[
RULER
],
0
,
pCallback
->
m_aPayload
.
c_str
());
case
LOK_CALLBACK_DIALOG_INVALIDATE
:
// TODO: Register the signal with lokdocview and emit it
g_signal_emit
(
pCallback
->
m_pDocView
,
doc_view_signals
[
DIALOG_INVALIDATE
],
0
,
pCallback
->
m_aPayload
.
c_str
());
break
;
default
:
g_assert
(
false
);
...
...
@@ -3228,6 +3229,21 @@ static void lok_doc_view_class_init (LOKDocViewClass* pClass)
g_cclosure_marshal_generic
,
G_TYPE_NONE
,
1
,
G_TYPE_STRING
);
/**
* LOKDocView::dialog-invalidate:
* @pDocView: the #LOKDocView on which the signal is emitted
* @pDialogId: The uno command for the dialog (dialog ID)
*/
doc_view_signals
[
DIALOG_INVALIDATE
]
=
g_signal_new
(
"dialog-invalidate"
,
G_TYPE_FROM_CLASS
(
pGObjectClass
),
G_SIGNAL_RUN_FIRST
,
0
,
nullptr
,
nullptr
,
g_cclosure_marshal_generic
,
G_TYPE_NONE
,
1
,
G_TYPE_STRING
);
}
SAL_DLLPUBLIC_EXPORT
GtkWidget
*
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment